
- •2.4. Машинный язык и язык Ассемблера
- •2.5. Синаксис языка Ассемблера
- •2.6. Принципы работы Ассемблера
- •2.7. Биты, байты и слова
- •2.8. Нумерация бит
- •2.9. Набор символов
- •2.10. Принципы работы компьютера
- •2.11. Процедуры
- •2.12. Стек
- •2.13. Прерывания
- •3.1. Модель программирования 8088
- •3.2. Регистры общего назначения
- •3.3. Регистры адресации
- •3.4. Прямая адресация
- •3.5. Вычисление адресов
- •3.6. Адресация через базу и смещение
- •3.8. Байт mod r-m
- •3.9 Физическая адресация
- •3.10. Сегментные регистры
- •3.11. Предназначение сегментов
- •3.12. Оператор Segment
- •3.13. Оператор Assume
- •3.14. Управляющие рагистры
- •3.14.1. Указатель инструкций (ip)
- •3.14.2. Указатель стека
- •3.14.3. Регистр флагов
- •3.14.4. Флаг знака
- •3.14.5. Флаг нуля
- •3.14.6. Флаг четности
- •3.14.7. Флаг переноса
- •3.14.8. Дополнительный флаг переноса
- •3.14.9. Флаг переполнения
- •3.14.10. Флаг захвата
- •3.15. Векторы прерываний
- •Глава 4 - Набор команд микропроцессора 8088
- •4.1. Пересылка данных
- •4.1.1. Команда пересылки
- •4.1.2. Команда замены
- •4.1.3. Команды ввода и вывода
- •4.1.4. Загрузка исполнительного адреса
- •4.1.5. Загрузка указателя
- •4.1.6. Пересылка флагов
- •4.1.7. Перекодировка
- •4.2. Операции со стеком
- •4.3. Передача параметров
3.1. Модель программирования 8088
Для того, чтобы понять 8088 и научиться программировать для него, мы начнем с его внутреннего устройства. Внутри процессора имеются специальные ячейки памяти, называемые регистрами. В регистрах можно сохранять данные-операнды или адреса памяти.
Набор регистров 8088 состоит из нескольких групп. Все регистры 8088 показаны по группам на Фиг 3.1.
Регистры общего назначения |
||
( 16 бит ) |
Старший 8 бит |
Младший 8 бит |
AX |
AH |
AL |
BX |
BH |
BL |
CX |
CH |
CL |
DX |
DH |
DL |
Адресные регистры |
||
SI |
||
DI |
||
BP |
||
Регистры управления |
||
SP |
||
IP |
||
FLAGS |
||
Сегментные регистры |
||
CS |
||
DS |
||
ES |
||
SS |
Фиг. 3.1 Регистры 8088
Поскольку регистры расположены внутри самого процессора, он имеет очень быстрый доступ к находящимся в них данным, намного более быстрый, чем к данным в памяти. Если в программе требуется быстрыый доступк какой-либо переменной, то хранение ее значения в регистре ускоряет выполнение.
3.2. Регистры общего назначения
В первую группувходят регистры, используемые в основном для вычислений. Все эти общие регистры имеют размер 16 бит, но программа может работать и со старшими или младшими 8-ю битами каждого регистра отдельно. Например. регистр AX состоит из 16 бит. Программа может обратиться к старшим 8 битам AX как к регистру AH, а младшие 8 бит образуют регистр AL. То же самое верно для регистров BX, CX и DX. Программа может рассмматривать группу регистров как четыре 16-битовых, восемь 8-битовых или некоторую комбинацию 8- и 16-битовых регистров.
Основное назначение группы общих регистров - хранить операнды. Общие регистры характерны способностью хранить как слово, так байт данных. Однако эти регистры при выполнении определенных операций имеют специальное назначение, либо они могут иметь особые возможности помимо тех, которые имеются у остальных регистров этой группы. В следующих разделах отмечены некоторые из специальных функций этих регистров.
Регистр AX соответствует сумматору более ранних процессоров. Хотя 8088 значительно более универсален, например, в части арифметических операций, чем ранние машинывроде процессора 8080, регистр AX имеет несколько специальных функций. Фирма Intel оптимизировала набор команд 8088, привлекая к выполнению некоторых операций регистр AX. Например, существуют непосредственные операции, в которых один из операндов подразумеваетсясамой командой. Непосредственные операции с регистрами AX и AL (16- и 8-битовый сумматоры соответственно) обычно требуют более короткой команды, чеманалогичные операции с привлечением других регистров общего назначения. А меньший размер команды позволяет получать более компактные и быстродействующие программы.
Регистр BX служит как регистром для вычислений, так и адресным регистром. При использовании в качестве 16-битового регистра он может служить для определения адреса операнда. Способы адресации для микропроцессора 8088 выделены в следующий пункт.
Набор команд 8088 использует регистр CX в качестве счетчика к некоторым иструкциям. Эти команды используют находящееся в CX значение как указатель числа итераций команды или фрагмента программы.
Регистр DX служит как расширение аккумулятора для многоразрядныхопераций умножения и деления. В этих 32-битовых операциях участвут одновременно регистры AX и DX.