Основы программирования микропроцессоров



Download 1,87 Mb.
bet38/119
Sana23.02.2022
Hajmi1,87 Mb.
#139915
TuriКонтрольные вопросы
1   ...   34   35   36   37   38   39   40   41   ...   119
Bog'liq
Системное программирование

Код

Инструкция

Описание

28 /r

SUB r/m8, r8

r/m8:= r/m8 – r8

29 /r

SUB r/m16, r16

r/m16:= r/m16 – r16

2A /r

SUB r8, r/m8

r8:= r8 – r/m8

2B /r

SUB r16, r/m16

r16:= r16 – r/m16

2C ib

SUB AL, imm8

AL:= AL – imm8

2D iw

SUB AX, imm16

AX:= AX – imm16

80 /5 ib

SUB r/m8, imm8

r/m8:= r/m8 – imm8

81 /5 iw

SUB r/m16, imm16

r/m16:= r/m16 – imm16

83 /5 ib

SUB r/m16, imm8

r/m16:= r/m16 – imm8

Примеры использования команды вычитания:

MOV AL, 10 ; AL=10


SUB BL, 10 ; BL=AL-10=0 ZF=1
SUB BL, -10 ; BL=10

Команда SBB обеспечивает вычитание двух 8- или 16-разрядных двоичных чисел с учётом значения входного заёма, определяемого флагом CF (табл. 21). Флаги устанавливаются как у команды SUB.


Табл. 21. Команда SBB.

Код

Инструкция

Описание

18 /r

SBB r/m8, r8

r/m8:= r/m8 – r8 – CF

19 /r

SBB r/m16, r16

r/m16:= r/m16 – r16 – CF

1A /r

SBB r8, r/m8

r8:= r8 – r/m8 – CF

1B /r

SBB r16, r/m16

r16:= r16 – r/m16 – CF

1C ib

SBB AL, imm8

AL:= AL – imm8 – CF

1D iw

SBB AX, imm16

AX:= AX – imm16 – CF

80 /3 ib

SBB r/m8, imm8

r/m8:= r/m8 – imm8 – CF

81 /3 iw

SBB r/m16, imm16

r/m16:= r/m16 – imm16 – CF

83 /3 ib

SBB r/m16, imm8

r/m16:= r/m16 – imm8 – CF

Команда DEC уменьшает значение операнда на единицу (табл. 22). Флаги OF, SF, ZF, AF и PF устанавливаются в соответствии с результатом по обычным правилам. Значение флага CF не изменяется. Операндом может являться любой регистр общего назначения, одно- или двухбайтовое поле памяти.
Как и команда INC декремент 16-разрядных регистров общего назначения может быть выполнен двумя видами инструкций – однобайтовой (код операции 48 плюс номер регистра) и двухбайтовой (код операции FF, номер регистра определяется байтом ModRegR/M).
Выгода от команд INC и DEC заключается в том, что они занимают меньше места в памяти и выполняются быстрее, чем соответствующие команды ADD и SUB.
Табл. 22. Команда DEC.

Код

Инструкция

Описание

48+rw

DEC r16

Декремент r16.

FE /1

DEC r/m8

Декремент r/m8.

FF /1

DEC r/m16

Декремент r/m16.

Команда AAS обеспечивает коррекцию результата вычитания двоично-десятичных неупакованных и ASCII чисел (табл. 23). Команда AAS используется после SUB, SBB или DEC. Если установлен флаг AF или содержимое младшего полубайта регистра AL превышает 9, из этого значения вычитается 6, содержимое регистра AH уменьшается на единицу, и устанавливаются флаги AF и CF. В противном случае флаги AF и CF сбрасываются. В любом случае старший полубайт регистра AL обнуляется. Значение флагов OF, SF, ZF и PF не определено.


Табл. 23. Команда AAS.

Код

Инструкция

Описание

3F

AAS

Коррекция вычитания неупакованных двоично-десятичных чисел.

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

CLC ; CF=0


MOV AL, 02h
SUB AL, 05h ; AL=0FDh AF=1
AAS ; AL=0FDh – 6 = 0F7h CF=1

Команда DAS выполняет коррекцию результата вычитания двух упакованных двоично-десятичных чисел (табл. 24). Флаги AF и CF устанавливаются в соответствии с результатом операции. Флаги SF, ZF и PF устанавливаются по обычным правилам в соответствии с полученным результатом. Значение флага OF не определено.


Табл. 24. Команда DAS.

Код

Инструкция

Описание

2F

DAS

Коррекция вычитания упакованных
двоично-десятичных чисел.

Алгоритм коррекции следующий. Если при выполнении операции вычитания в младшем полубайте регистра AL получено значение, превышающее 9, или был установлен флаг AF (произошёл заём в 3-ий разряд), то значение младшего полубайта регистра AL уменьшается на 6, флаг CF устанавливается. Если содержимое младшего полубайта регистра AL не превышает 9 и флаг AF сброшен, никаких действий с младшим полубайтом не выполняется.
Затем проверяется содержимое старшего полубайта регистра AL. Если его значение больше 9 либо если установлен флаг CF, то значение уменьшается на 6 и устанавливается флаг CF. Если значение старшего полубайта не превышает 9 и флаг CF сброшен, никаких действий со старшим полубайтом не выполняется.
Пример вычитания упакованных двоично-десятичных чисел:

CLC ; CF=0


MOV AL, 25h
SUB AL, 52h ; AL=0D3h AF=0 CF=1
DAS ; AL=0D3h – 60h=73h CF=1



Download 1,87 Mb.

Do'stlaringiz bilan baham:
1   ...   34   35   36   37   38   39   40   41   ...   119




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish