Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МПСУ.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
11.26 Mб
Скачать

1.5.2. Арифметические команды

Команды сложения-вычитания для регистров. В результате сложения или вычитания содержимое регистра аккумулятора изменяется.

Add R - содержимое регистра R прибавляется к содержимому аккумулятора, и результат заносится в аккумулятор. (A ^ A + R).

Sub R - из содержимого аккумулятора вычитается содержимое R, результат операции заносится в A (A ^ A - R).

Adc R - сложение с переносом. Содержимое R прибавляется к A и к результату прибавляется значение флага переноса (CY), результат записывается в аккумулятор (A ^ A + R + CY).

Sbb R - вычитание с заемом (A ^ A - (R + CY)).

Эти команды занимают 1 байт и формируют все признаки в регистре флагов.

Команды adc и sbb используются для сложения и вычитания чисел, занимающих несколько байт.

Команды инкремента/декремента. Действие заключается в увеличении или уменьшении содержимого регистров на 1.

Inr R - к содержимому регистра R прибавляется 1 (R ^ R + 1).

Dcr R - содержимое R уменьшается на 1 (R ^ R - 1).

В таких командах формируются все признаки, кроме признака переноса.

Inx RP - инкремент регистровой пары (RP ^ RP + 1).

Dcx RP - декремент регистровой пары (RP ^ RP - 1).

В этих командах признаки регистров флагов не изменяются.

1.5.3. Логические команды

Действие логических команд заключается в побитовом выполнении логических операций (И, ИЛИ, ИСКЛЮЧАЮЩЕЕ ИЛИ) над содержимым регистра A и содержимым указанного регистра.

Пример выполнения логических операций над операндами x1 и x2 представлен в табл. 5.2.

Таблица 5.2

x1

0011

x2

0101

л

0001

И (AND)

V

0111

ИЛИ (OR)

V

0110

ИСКЛЮЧАЮЩЕЕ ИЛИ (XOR)

Обозначения команд:

  • ana R (И)

  • ora R (ИЛИ)

  • xra R (ИСКЛЮЧАЮЩЕЕ ИЛИ)

Результат логической операции попадает в аккумулятор (A л R ^ A).

Команды занимают 1 байт.

1.5.4. Формирование и работа стека

Стек - это специальным образом организованный участок памяти, используемый для временного хранения переменных, для передачи параметров вызываемым подпрограммам и для сохранения адреса возврата при вызове процедур и прерываний. Стек организован по принципу LIFO - Last In First Out.

Прежде чем начать работу со стеком следует задать такое значение указателя стека (SP), чтобы обеспечить расположение стека в свободном фрагменте ОЗУ:

org 8200h

stack ds 100h ; отводим под стек 256 байт

.code

lxi SP, stack+100h ; загружаем в SP дно стека

; ниже коды команд

hlt

endp

Push RP - запись данных в стек. Содержимое указанной пары регистров (RP) записывается в два байта ОЗУ по адресу, находящемуся в указателе стека (SP). Содержимое первого регистра записывается по адресу, на единицу меньшему, чем адрес, находящийся в SP; содержимое второго регистра записывается по адресу, меньшему на 2, чем адрес в SP, после этого из адреса, находящегося в SP, вычитается 2.

Пример: push B (M(SP-1) ^ B; M(SP-2) ^ C; SP ^ SP-2).

Pop RP - загрузка данных из стека. Два байта из памяти, адресованные содержимым SP, загружаются в заданную регистровую пару следующим образом: байт, адресованный SP, загружается во второй регистр пары, а байт с адресом на 1 больше - в первый регистр пары. Содержимое SP увеличивается на 2.

Пример: pop B (C ^ M(SP); B ^ M(SP+1); SP ^ SP+2).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]