- •Содержание
- •1.Введение в архитектуру эвм. 5
- •2.Архитектура реального режима работы м/п семейства 8086 19
- •3.Директивы и операторы ассемблера 81
- •4.Архитектура и система команд арифметического сопроцессора 91
- •5.Варианты контрольных работ 131
- •6.Примеры программ 138
- •1.Введение в архитектуру эвм.
- •2.Архитектура реального режима работы м/п семейства 8086
- •2.1.Форматы данных микропроцессора
- •2.1.1.Числа
- •2.1.2.Символы
- •2.1.3.Указатели
- •2.1.4.Цепочки
- •2.2.Адресация памяти
- •2.3.Внутренние регистры процессора
- •2.3.1.Регистры общего назначения
- •2.3.2.Сегментные регистры
- •2.3.3.Регистры смещения
- •2.3.4.Регистр флагов
- •2.4.Режимы адресации
- •2.4.5.Базовая адресация
- •2.5.1.1. Общие команды.
- •2.5.1.2. Команды push и pop .
- •2.5.1.3. Команды ввода-вывода.
- •2.5.1.4. Адресные команды (пересылки адреса)
- •2.5.1.5. Флажковые команды (команды пересылки флагов).
- •2.5.2.Арифметические команды.
- •2.5.2.1. Команды сложения.
- •2.5.2.2.Команды вычитания.
- •2.5.2.3.Команды умножения и деления.
- •2.5.2.4.Команды расширения знака.
- •2.5.2.5.Десятичная арифметика.
- •2.5.3.Логические команды.
- •2.5.3.1.Булевы команды.
- •2.5.3.2.Команды сдвигов.
- •2.5.3.3.Команды циклических сдвигов.
- •2.5.3.4.Команды двойного сдвига
- •2.5.3.5.Команды работы с двоичными цепочками
- •2.5.4.Команды передачи управления.
- •2.5.4.1.Команды безусловной передачи управления.
- •2.5.4.2. Команды условных переходов.
- •2.5.4.3.Команды SetCondition
- •2.5.5.Цепочечные (строковые) команды.
- •2.5.5.1.Команды пересылки цепочки.
- •2.5.5.2.Команды сравнения цепочек.
- •2.5.5.3.Команды сканирования цепочек.
- •2.5.5.4.Команды загрузки.
- •2.5.5.5.Команды ввода и вывода цепочек.
- •2.5.5.6.Замена сегмента.
- •2.5.6.Команды управления микропроцессором.
- •2.5.6.1.Команды управления флагами.
- •2.5.6.2.Команды синхронизации.
- •2.5.6.3.Команда холостого хода.
- •2.5.6.4.Команды прерываний.
- •2.5.7.Новые команды микропроцессора 80486
- •3.Директивы и операторы ассемблера
- •3.1.Структура программы
- •3.2.Организация программы.
- •3.2.1. Модели памяти
- •3.2.2. Процедуры
- •3.2.3. Директивы задания набора допустимых команд
- •3.3.Примеры использования директив в программах типа .Exe и .Com.
- •4.Архитектура и система команд арифметического сопроцессора
- •4.1.Форматы чисел сопроцессора
- •4.1.1.`Целые числа
- •4.1.2. Вещественные числа
- •4.1.3.Диапазоны вещественных чисел в х87.
- •4.2.Особые случаи вещественной арифметики
- •4.3.Формирование специальных значений в особых случаях
- •4.3.1. Случай неточного результата.
- •4.3.2.Численное антипереполнение.
- •4.3.3. Денормализованный операнд.
- •4.3.4. Деление на ноль.
- •4.3.5.Численное переполнение.
- •4.3.6.Недействительная операция.
- •4.4.Регистры математического сопроцессора.
- •4.4.1.Численные регистры (регистровый стек).
- •4.4.2.Регистр управления (cw)
- •4.4.3.Регистр состояния.
- •4.4.4. Регистр тэгов (признаков).
- •4.4.5.Указатели особого случая.
- •4.5.Система команд арифметического сопроцессора.
- •4.5.1.Команды передачи данных.
- •4.5.2.Арифметические команды
- •4.5.3.Дополнительные арифметические команды
- •4.5.4.Команды сравнений
- •4.5.5.Трансцендентные команды
- •4.5.6.Административные команды
- •4.6.Совместная работа двух процессоров в системе.
- •4.6.1.Синхронизация по командам.
- •4.6.2.Синхронизация по данным.
- •5.Варианты контрольных работ
- •5.1.Контрольная работа №1
- •5.2. Контрольная работа №2
- •6.Примеры программ
- •Список рекомендуемой литературы
2.5.5.1.Команды пересылки цепочки.
Формат общей команды: MOVS цепочка-приёмник, цепочка-источник
Дополнительные команды:
MOVSB
MOVSW
MOVSD
В команде MOVS операнды нужны только для того, чтобы ассемблер узнал, что нужно пересылать байты или слова, так как смещение цепочки-приёмника предварительно должно быть загружено в регистр DI, а смещение цепочки-источника в регистр SI. Ассемблер преобразует команду MOVS в одну из команд MOVSB, MOVSW или MOVSD, следовательно, можно сразу их употреблять в программе.
Примеры:
MEMW1 DW 10 DUP (1), 5 DUP (0)
MEMW2 DW 15 DUP (?)
MOV AX, @DATA
MOV DS, AX
MOV ES, AX
CLD
MOV SI, OFFSET MEMW1
MOV DI, OFFSET MEMW2
MOV CX, 15
REP MOVS MEMW2, MEMW1; REP MOVSW
2.5.5.2.Команды сравнения цепочек.
Формат общей команды: CMPS цепочка-приёмник, цепочка-источник
Дополнительные команды:
CMPSB
CMPSW
CMPSD
Подобна CMP, однако CMPS производит обратное по отношению с CMP вычитание, вычитает из источника приёмник, а CMP, наоборот - из приёмника источник. CMPSB и CMPSW - соответствующие версии команды сравнения строк байтов или строк слов. Если мы используем префиксы повторения REPE / REPZ или REPNE / REPNZ, то операция сравнения может завершиться в двух случаях: CX=0 или ZF=0 для REPE (ZF=1 для REPNE). Для того чтобы узнать, какая ситуация имела место, следует указать после CMPS команду условной передачи управления, проверяющую флаг ZF, а именно JE (JZ) или JNE (JNZ).
Пример:
CLD
MOV CX, 100
REPNE CMPS DEST, SOURCE
JNE NOT_FOUND; Переход к метке NOT_FOUND, если нет ни одной совпадающей пары.
...
NOT_FOUND:
...
2.5.5.3.Команды сканирования цепочек.
Команды сканирования цепочек позволяют осуществить поиск заданного значения в цепочке, находящейся в дополнительном сегменте. Смещение адреса первого элемента цепочки должно быть помещено в регистр DI. При сканировании цепочки байтов искомое значение должно находиться в регистре AL, при сканировании цепочки слов - в регистре AX, а при сканировании цепочки двойных слов - в регистре ЕAX.
Формат основной команды: SCAS цепочка-приёмник.
Дополнительные команды:
SCASB,
SCASW,
SCASD.
Если при сканировании обнаружен заданный элемент, то в DI смещение адреса следующего за ним элемента, а ZF = 0. С командами данной группы можно использовать префиксы REPE / REPNE.
2.5.5.4.Команды загрузки.
Команда LODS пересылает операнд цепочка-источник, адресованный регистром SI из сегмента данных в регистр AL (AX или EAX) а затем изменяет регистр SI так, чтобы он указывал на следующий элемент цепочки.
Формат основной команды: LODS цепочка-источник.
Дополнительные команды:
LODSB,
LODSW,
LODSD.
Команды сохранения цепочек.
Команда STOS пересылает цепочку байт, слов или двойных слов из регистра AL (AX или EAX) в элемент операнда цепочка-приёмник, адресуемый парой регистров ES : DI.
Формат основной команды: STOS цепочка-приемник.
Дополнительные команды:
STOSB,
STOSW,
STOSD.
С командами данной группы можно использовать префикс REP.
2.5.5.5.Команды ввода и вывода цепочек.
Обеспечивают считывание данных из входного устройства в последовательные ячейки памяти и запись данных из последовательных ячеек в выходное устройство. Они упрощают передачи больших блоков данных между памятью и внешними устройствами. INS передаёт данные из входного порта, определяемого содержимым регистра DX в байт или слово, смещение которого находится в ES:DI (ES:EDI) и производит уменьшение или увеличение DI на 1 (или 2), или EDI на 4. Аналогично OUTS передаёт байт, слово или двойное слово, смещение которого находится в DS:SI (DS:ESI), в выходной порт, адресуемый регистром DX и производит увеличение или уменьшение содержимого регистра SI на 1 (или 2) или ESI на 4. Команд INS и OUTS в 8086 нет. Дополнительные команды:
INSB,
INSW,
INSD,
OUTSB,
OUTSW,
OUTSD.
С командами данной группы можно использовать префикс REP.