- •Введение
- •1 Основы микропроцессорной техники
- •1.1 Классификация команд и архитектура ЭВМ
- •1.2 Секционный микропроцессор.
- •1.3 Однокристальный микропроцессор.
- •1.4 Микропроцессорный модуль.
- •3.1 Тип кода операции с dst и rsc
- •3.2 Тип кода операции с dst. Группа коман MOV
- •4 Организация стековой памяти
- •5 Команды сдвигов и приращений.
- •5.1 Команды приращений
- •5.2 Команды сдвига
- •6 Арифметико-логические команды
- •6.1 Команды сложения
- •6.2 Команда сложения с учетом переноса
- •6.3 Операция вычитания
- •6.4 Команда вычитания с учетом заема
- •6.5 Команда логической функции ИЛИ
- •6.6 Команда логической функции И
- •6.7 Команда «Исключающая ИЛИ»
- •Внутриразрядная сумма = 0
- •6.8 Команда сравнения — компарации
- •7 Команды ветвления и переходов
- •7.1 Команды ветвления
- •7.2 Команды перехода
- •8.1 Внутрисегментные переходы
- •8.2 Межсегментные переходы
- •10 Цепочные команды
- •11 Другие одиночные команды
- •13.1 Процедура прерываний и команды прерываний
- •Адрес
- •13.2 Режимы работы ПКП
- •13.3 Программирование ПКП
- •14 Параллельный интерфейс
- •15 Последовательный интерфейс
- •15.1 Антология последовательного интерфейса
- •15.3 Описание регистров 8250 и программирование
- •Регистр управления линией
- •Регистр управления модемом
- •15.4 Порядок инициализации 8250
- •16 Программируемый таймер
- •16.7 Временные диаграммы таймера
- •16.8 Программирование таймера
- •Чтение счетчика канала 2
- •16.9 Чтение содержимого счетчиков
- •16.10 Таймер на системной плате IBM PC
- •17 Клавиатурный интерфейс
- •18. Заключение
- •Приложение А
- •Действие
- •Сегментный регистр
- •Действие команды
- •Действие команды
- •Действие команды
- •SAHF — сохранение <AH> в F
- •Действие команды
- •Действие команды
- •Действие команды
- •Действие команды
- •Действие команды
- •Действие команды
- •Действие команды
- •Действие команды
- •Действие команды
- •Действие команды
- •Команда – действие команды
- •Команда – действие команды
- •Команда – действие команды
- •Команда – действие команды
- •Команда – действие команды
- •Команда – действие команды
- •Команда – действие команды
+0001
Bдоп=1000 —дополнительный код B.
Складываем: A+Bдоп:
0101
+1000
0 1101
Перенос=0
Переполнения нет, но флажок CF=1, так как он устанавливается переполнением через инвертор.
А теперь подставим значение CF=1 в качестве старшего бита уменьшаемого и вычтем вычитаемое B:
<CF>
1 0101
—1000
1101
Получили тот же результат, что и выше. Вывод: при вычитании флаг CF имеет смысл заема! Но заем предполагает наличие старшей части числа. А если ее нет? Тогда необходимо вспомнить, что все числа
вАЛУ представлены в дополнительном коде, и если после вычитания CF=1 , а занимать не у «кого», то полученный результат есть отрицательное число в дополнительном коде. Чтобы получить результат
вистинном виде, необходимо полученное отрицательное число (беззнаковое) перевести в прямой код:
CF=1 1101
инверсия
CF=1 0010
+0001 — инкремент, чтобы «не трогать» <CF> CF=1 0011
Получили: 510 —810 = -310, где <CF> имеет смысл знака.
Ассемблер команды вычитания (пример):
SUB AX,BX ; AX:=<AX>-<BX>; заем (если есть) — в CF.
6.4 Команда вычитания с учетом заема
Эта команда вычитания как раз и учитывает возможный заем от предыдущего вычитания. Рассмотрим следующий пример.
Пример 2 — Пусть в ячейках памяти M1001 и M1000 находится уменьшаемое, а в DX-вычитаемое. Разность отправить в DX.
Ответ: Составляем программу с демонстрацией использования процедуры заема на ассемблере:
SUB [1000],DL ; M1000:=<M1000>-<DL>, заем (если есть) — в CF, MOV DL,[1000] ; и младшую часть разности отправить в DL.
SBB [1001],DH ; M1001:=<M1001>-<DН>-заем (если он есть),
42
MOV DH,[1000] ; и разность в DH.
6.5 Команда логической функции ИЛИ
Основные логические функции булевой алгебры —это И, ИЛИ, НЕ. В таблице представлены только две из них: И (AND) и ИЛИ (OR). Дело в том, что операция НЕ оперирует только с одним адресатом, поэтому ее здесь нет. Ее рассмотрим в конце этой главы. А пока вернемся к команде ИЛИ (дизъюнкция).
Рассмотрим следующий пример. Пусть в AL=3C (001111002), в AH=41 (010000012). Что получится после выполнения OR AH,AL? Учитывая, что с многобитовыми событиями логические операции выполняются по-битно, можем записать:
00111100 (3С)
(ИЛИ) |
(41) |
|
|
01000001 |
|
AH = |
01111101 |
|
7 D. |
|
|
Эта логическая |
операция |
используется достаточно часто. |
Например, еобходимо установить бит D5 ячейки памяти M1000 в единицу, оставив неизменными остальные биты M1000. Это делается очень просто. Составим байт, у которого бит D5=1: 001000002=2016. Выполним команду:
OR BYTE [1000],20
И все.
6.6 Команда логической функции И
Операция И (конъюнкция) выполняется аналогично ИЛИ (смотрите п.5 таблицы 5).
Рассмотрим пример. Пусть в регистре АХ хранятся следующие события: AH=42, AL=7C. Что будет в регистре AL после выполнения команды AND AL,AH?
И) |
01111100 |
(7С) |
|
01000010 |
(42) |
||
|
|||
AL= |
01000000 |
0 |
|
4 |
Эта команда тоже достаточно популярна. Например, она позволяет сбрасывать в «0»один бит в байте (слове), оставляя неизменными другие биты. Пусть, например, необходимо установить бит D5 ячейки памяти M1000 в «0», оставив при этом неизменными остальные биты. Составляем байт, у которого D5=0: 11011112=DF. Выполним команду:
AND BYTE [1000],DF.
Бит D5 ячейки памяти M1000 будет сброшен в «0».
43