Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник по Микропроцессорам_МИА.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
1.67 Mб
Скачать

Команда обмен данными

Выполнять обмен содержимого двух операндов позволяет инструкция XCHG. Это предоставляет удобный способ выполнять операцию, которая в противном случае потребовала бы трех инструкций.

Например, инструкция:

xchg ax,dx ;выполняет обмен содержимого AX и DX, что эквивалентно выполнению инструкций:

push ax

mov ax,dx

pop dx

Команды сложения/ Команды вычитания

ADD <операнд 1>, <операнд 2>

ADC <операнд 1>, <операнд 2> ;устанавливают флаги четности, знака результата, наличия переноса, наличия переполнения.

Пo команде ADD выполняется сложение двух операндов. Результат записывается по адресу первого операнда. По команде АDC также выполнятся сложение двух операндов, но к ним добавляется еще значение, записанное в бите переноса, установленном предыдущей командой сложения.

Приведем пример сложения двух 32-разрядных чисел:

mov ax,value1

add value2,ax

mov ax,value1+2

adc value2+2,ax

Исходные числа находится в основной памяти по адресам value1 и value2, а результат записывается по адресу value1.

SUB <уменьшаемое-результат>, <вычитаемое> ;

SBB <уменьшаемое-результат>,<вычитаемое>; устанавливают флаги четности, знака результата, наличия заема, наличия переполнения.

При выполнении операции по команде SUB заем не учитывается, а по команде SBB - учитывается. Ограничения на местоположение операндов такие же, как и у команды сложения.

Например, инструкции:

.DATA

BaseVal DW 99

Adjust DW 10

.CODE

mov dx,[BaseVal]

add dx,11

sub dx,[Adjust]

сначала загружают значение, записанное в BaseVal, в регистр DX, затем прибавляют к нему константу 11 (в результате в DX получается значение 110) и, наконец, вычитают из DX значение 10, записанное в переменной Adjust. Полученное в результате значение 100 сохраняется в регистре DX.

Команда изменения знака

NEG <операнд> ;знак операнда изменяется на противоположный.

Инструкции NEG, позволяет изменить (инвертировать) знак содержимого общего регистра или переменной в памяти.

Например, после выполнения инструкций:

mov ax,1 ; установить регистр AX в значение 1

neg ax ; отрицание AX, он становится равным -1

mov bx,ax ; скопировать содержимое AX в BX

neg bx ; отрицание BX, он становится равным 1

в регистре AX будет содержаться значение -1, а в регистре BX -значение 1.

Команда добавления /вычитания единицы

Для выполнения таких часто требующихся действий в наборе инструкций процессора предусмотрены две инструкции – INC (увеличить) и DEC (уменьшить). Инструкции INC и DEC - это наиболее эффективные инструкции, с помощью которых можно увеличивать и уменьшать значения переменных в памяти и регистров.

INC <операнд> ;значение операнда увеличивается на единицу.

DEC <операнд> ;значение операнда уменьшается на единицу.

Команда сравнения

СМP <операнд 1>, <операнд 2>; выполняется операция вычитания без записи результата и устанавливаются признаки во флажковом регистре.