Иллюстрированный самоучитель по Assembler


386P+ STR Сохранение содержимого регистра состояния задачи


Команда str копирует содержимое регистра задачи TR (селектор сегмента состояния задачи) в двухбайтовый регистр общего назначения или 16-битовую ячейку памяти, указанные в качестве операнда.

 

SUB Вычитание целых чисел


Команда sub вычитает второй операнд (источник) из первого (приемника) и помещает результат на место первого операнда. Исходное значение первого операнда (уменьшаемое) теряется. Таким образом, если команду вычитания записать в общем виде

sub операнд_1, операнд_2

то ее действие можно условно изобразить следующим образом:

операнд_1 - операнд_2 -> операнд_1

В качестве первого операнда можно указывать регистр (кроме сегментного) или ячейку памяти, в качестве второго - регистр (кроме сегментного), ячейку памяти или непосредственное значение, однако не допускается определять оба операнда одновременно как ячейки памяти. Операнды могут быть байтами или словами и представлять числа со знаком или без знака. Команда воздействует на флаги OF, SF, ZF, AF, PF и CF.

Пример 1


mov AX,100

mov BX,60

sub АХ,ВХ ;АХ=40 (АХ-ВХ) , ВХ=60

Пример 2


mov DL, '8 ' mov DH, '0 '

sub DL,DH ;DL=8 (преобразование кода

; ASCII в цифру))

Пример 3


; ; В полях данных

datl dw -168

dat2 dw 10

; ; В программном сегменте

mov AX,data2

sub mem,AX ;mem = -178

Допустимо использование 32-битовых операндов и дополнительных режимов адресации 32-разрядных процессоров.

Пример


mov EAX,1000000

mov EBX,60000

sub EAX,EBX ;EAX=40000

TEST Логическое сравнение


Команда test выполняет операцию логического умножения И над двумя операндами и, в зависимости от результата, устанавливает флаги SF, ZF и PF. Флаги OF и CF сбрасываются, a AF имеет неопределенное значение. Состояние флагов можно затем проанализировать командами условных переходов. Команда test не изменяет ни один из операндов.

В качестве первого операнда команды test можно указывать регистр (кроме сегментного) или ячейку памяти, в качестве второго - регистр (кроме сегментного), ячейку памяти или непосредственное значение, однако не допускается определять оба операнда одновременно как ячейки памяти. Операнды могут быть байтами или словами и представлять числа со знаком или без знака.




Начало  Назад  Вперед



Книжный магазин