Регистры общего назначения

Программирование на языке Ассемблер

Список литературы

1. В. Н. Пильщиков Программирование на языке ассемблера IBM PC.

2. С. В. Зубков Ассемблер.

3. В. Ю. Пирогов Assembler. Учебный курс.

4. В. Юров, С. Хорошенко Assembler. Учебный курс.

5. Абель П. Язык ассемблера для IBM PC и программирования.

Классификация языков программирования

Машинные языки.

Пример: команда сложения двух чисел

КОП А1 А2
     
  КОП – код операции А1 – адрес первого операнда А2 – адрес второго операнда
КОП А1 А2
     

Сложить число, записанное в ячейке 44 памяти, с числом, записанным в ячейке 48, а затем результат (т.е. сумму) поместить в ячейку 44.

Машинно-зависимые языки.

Ассемблер - символьная форма записи машинного языка.

Процедурно-ориентированные языки.

Проблемно-ориентированные языки.

Поколения МП

1971 – фирма Intel разработала первый микропроцессор (работал с 4-разрядными данными);
1974 – МП 8080 (работал с 8-разрядными машинными словами и памятью до 64 Кб);
1976 – появилась первая персональная ЭВМ (то есть процессор плюс память и устройства ввода-вывода), разработанная фирмой Apple;
1978 – фирма Intel разработала микропроцессор нового поколения – 16-разрядный процессор 8086 с памятью до 1 Мб;
1979 – появился МП 8088, который также работал с 16-разрядными словами, но использовал 8-разрядную шину, что позволило воспользоваться имевшимися в то время внешними устройствами (дисководами и т. п.) с 8-разрядными соединениями;
1981 – на базе МП 8088 фирма IBM создала свой первый персональный компьютер (ПК) под названием IBM PC;
1983 – фирма Intel разработала микропроцессоры 80186 и 80286 (предусмотрены аппаратные средства для реализации многозадачного режима работы ЭВМ);
1987, 1990 – появлением нового поколения микропроцессоров – 32-разрядных i386 и i486;
1993 – эпоха 64-разрядных микропроцессоров Pentium.

Структура МП 8086

МП 8086 - 16-разрядный процессор с памятью до 1 Мб. (1978 г.)

ОУ – операционное устройство;

УШИ – устройство шинного интерфейса;

РОН – регистры общего назначения;

АЛУ – арифметико-логическое устройство;

FR – регистр флагов;

УУ – управляющее устройство;

ОК – очередь команд;

БШ – буфер шин адреса/данных;

ВШ – внешняя шина;

ЕА16 – эффективный адрес;

ФА – физический адрес.

Регистры МП

Все регистры имеют разрядность 16 бит (2 байта). По назначению и способу использования регистры можно разбить на следующие группы:

· регистры общего назначения (AX, BX, CX, DX);

· сегментные регистры (CS, DS, SS, ES);

· регистры смешений (IP, BP, SP, SI, DI);

· регистр флагов (Flags).

Регистры общего назначения

РОН можно использовать в любых арифметических и логических машинных операциях.

К этой группе относятся:

AX - регистр-аккумулятор (применяется для хранения промежуточных данных, в некоторых командах его использование обязательно);

BX - базовый регистр (применяется для хранения базового адреса некоторого объекта в памяти);

CX - регистр-счетчик (применяется в командах, производящих некоторые повторяющиеся действия);

DX - регистр данных (так же как и регистр АХ, хранит промежуточные данные). В некоторых командах его явное использование обязательно, в других он используется неявно.

Регистры AX, BX, CX и DX устроены так, что возможен независимый доступ к их старшей H (high) и младшей L (low) половинам. Целиком регистр используется при работе с числами, а его половины – при работе с частями чисел или символами.

Сегментные регистры

Вторую группу регистров образуют следующие 4 регистра: CS, DS, SS, ES, служащих для доступа к четырем типам сегментов.

· Сегмент кода содержит команды программы. Для доступа к этому сегменту служит регистр сегмента кода (Code Segment register) CS. Он содержит адрес сегмента с машинными командами, к которому имеет доступ процессор.

· Сегмент данных содержит обрабатываемые программой данные. Для доступа к этому сегменту служит регистр сегмента данных (Data Segment register) DS, который хранит адрес сегмента данных текущей программы.

· Сегмент стека представляет собой область памяти, называемую стеком. Для доступа к этой области служит регистр сегмента стека (Stack Segment register) SS, содержащий адрес сегмента стека.

· Дополнительный сегмент данных. Если программе недостаточно одного сегмента данных, то она имеет возможность задействовать дополнительный сегмент данных. Адрес дополнительного сегмента данных должен содержаться в регистре дополнительного сегмента данных ES.

Ни в каких арифметических, логических операциях эти регистры участвовать не могут.

Регистры смещений

Регистры смещений используются для хранения относительных адресов ячеек памяти внутри сегментов (смещений относительно начала сегментов):

- регистр IP хранит смещение адреса текущей команды программы;

- в регистр BP записывается начальный адрес поля памяти, непосредственно отведенного под стек;

- регистр SP указывает на вершину стека – смещение относительно начала стека;

- регистры SI и DI предназначены для хранения адресов индексов источника и приемника данных при операциях над строками и другими структурами данных.

Регистр флагов

Регистр Flags – это регистр состояния процессора. Из его 16 разрядов используются только 9. Флаг – это бит, принимающий значение 1 («флаг установлен»), если выполнено некоторое условие, и значение 0 («флаг сброшен») в противном случае. Каждый флаг – это один из разрядов данного регистра. Некоторые разряды регистра не используются.

Флаги условий:

CF (carry flag) – флаг переноса при арифметических операциях.

OF (overflow flag) – флаг переполнения в арифметических операциях.

ZF (zero flag) – флаг нуля (нулевого результата).

SF (sign flag) – флаг знака.

PF (parity flag) – флаг четности результата.

AF (auxiliary carry flag) – флаг дополнительного переноса.

Флаги состояний:

DF (direction flag) – флаг направления. Устанавливает направление просмотра строк в строковых командах.

IF (interrupt flag) – флаг прерываний.

TF (trap flag) – флаг трассировки. Используется при отладке.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: