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



Download 1,87 Mb.
bet47/119
Sana23.02.2022
Hajmi1,87 Mb.
#139915
TuriКонтрольные вопросы
1   ...   43   44   45   46   47   48   49   50   ...   119
Bog'liq
Системное программирование

Код

Инструкция

Описание

84 /r

TEST r/m8, r8

r/m8 AND r8

85 /r

TEST r/m16, r16

r/m16 AND r16

A8 ib

TEST AL, imm8

AL AND imm8

A9 iw

TEST AX, imm16

AX AND imm16

F6 /0 ib

TEST r/m8, imm8

r/m8 AND imm8

F7 /0 iw

TEST r/m16, imm16

r/m16 AND imm16

Сравнение выполняется с помощью операции «логическое И» между разрядами первого и второго операндов. Результат операции теряется, но производится установка флагов:

MOV ВН, 1100b


TEST BH, 0011b ; ZF=1

Команда OR выполняет операцию «логическое ИЛИ» между операндами (табл. 37). Флаги OF и CF сбрасываются. Флаги SF, ZF и PF устанавливаются в соответствии с результатом. Состояние флага AF не определено.


Табл. 37. Команда OR.

Код

Инструкция

Описание

08 /r

OR r/m8, r8

r/m8:= r/m8 OR r8

09 /r

OR r/m16, r16

r/m16:= r/m16 OR r16

0A /r

OR r8, r/m8

r8:= r8 OR r/m8

0B /r

OR r16, r/m16

r16:= r16 OR r/m16

0C ib

OR AL, imm8

AL:= AL OR imm8

0D iw

OR AX, imm16

AX:= AX OR imm16

80 /1 ib

OR r/m8, imm8

r/m8:= r/m8 OR imm8

81 /1 iw

OR r/m16, imm16

r/m16:= r/m16 OR imm16

Результат записывается на место первого операнда: i-й бит результата равен 0, если i-е биты операндов совпадают, и равен 1, если эти биты различны, например:

MOV CL, 1100b


OR CL, 1010b ; CL=00001110b

Команда OR часто используется при наложении маски. Например, в полученном байте данных необходимо установить младшие три разряда в 1. Тогда маска будет следующей:


OR AL, 00000111b


Команда XOR выполняет операцию «исключающее ИЛИ» между операндами (табл. 38). Флаги OF и CF очищаются. Флаги SF, ZF и PF устанавливаются в соответствии с результатом. Состояние флага AF не определено.


Табл. 38. Команда XOR.

Код

Инструкция

Описание

30 /r

XOR r/m8, r8

r/m8:= r/m8 XOR r8

31 /r

XOR r/m16, r16

r/m16:= r/m16 XOR r16

32 /r

XOR r8, r/m8

r8:= r8 XOR r/m8

33 /r

XOR r16, r/m16

r16:= r16 XOR r/m16

34 ib

XOR AL, imm8

AL:= AL XOR imm8

35 iw

XOR AX, imm16

AX:= AX XOR imm16

80 /6 ib

XOR r/m8, imm8

r/m8:= r/m8 XOR imm8

81 /6 iw

XOR r/m16, imm16

r/m16:= r/m16 XOR imm16

Результат заносится на место первого операнда:

MOV CL, 1100b


XOR CL, 1010b ; CL=00000110b

Когда операнды команды XOR совпадают, результатом будет нулевое слово. Такой прием часто используется для обнуления регистров. По сравнению с другими вариантами (MOV АХ, 0 или SUB AX, AX) он выполняется быстрее. Например, при любом значении АХ имеем:


XOR АХ, АХ ; АХ:=0




Вычисление логических выражений. Очевидное применение логических команд состоит в вычислении логических выражений. Например, если переменные:

A DB ?
B DB ?


трактуются как логические, то вычисление:


A:=(not A) and B


реализуется с помощью следующих команд:


MOV AL, А


NOT AL
AND AL, B
MOV A, AL

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


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

if (X > 0) or (Y = 1) then goto L


можно сначала полностью вычислить логическое выражение, а затем проверить результат.


Можно поступить и проще: сравнивать X с нулем и Y с единицей, и с помощью команд условного перехода реагировать на проверки (см. раздел 5.5.5):

CMP Х, 0 ; сравнение X с нулем


JG L ; Х > 0
JE L ; Y = 1


Команды сдвига. Команды сдвига и циклического сдвига представляют часть логических возможностей и имеют следующие свойства:

  • обрабатывают байт или слово;

  • имеют доступ к регистру или к памяти;

  • сдвигают операнд на величину до 8 бит (для байта) и 16 бит (для слова) влево или вправо;

  • сдвигают логически (без знака) или арифметически (со знаком).

Все команды сдвига имеют два операнда. Первый операнд рассматривается как набор битов, которые будут сдвигаться на несколько позиций влево или вправо. Второй операнд (целое без знака) определяет, на сколько разрядов следует сдвинуть первый операнд. Результат записывается на место первого операнда. Значение сдвига на 1 разряд может быть записано как непосредственный операнд, а значение, большее 1, должно находиться в регистре CL.
Каждая команда сдвига имеет две разновидности, которые записываются следующим образом:


<мнемокод> ор, 1 ; сдвиг ор на 1 разряд
<мнемокод> op, CL ; сдвиг ор на CL разрядов (CL  0)

В первом случае операнд ор сдвигается на 1 разряд, во втором ор может сдвигаться на любое число разрядов. Заметим, что второй вариант есть повторение первого CL раз, причем при CL=0 сдвига нет. Значение CL командой сдвига не меняется. Команды сдвига меняют все флаги, но, как правило, интерес представляет только флаг переноса CF.


Сдвиг может быть выполнен на произвольное число разрядов от 0 до 255. В процессорах, начиная с 80286, в качестве счётчика сдвига используются только младшие 5 разрядов регистра CL, что ограничивает максимальное количество сдвигов (не более 31).
Начиная с процессора 80186, стало доступно возможность явного задания величины сдвига, больше 1. Вторым операндом в этом случае является беззнаковое число размером байт. Процессоры 80386 и выше в качестве величины сдвига берут 3 правых бита регистра CL при сдвиге байта и 4 правых байта при сдвиге слова.
Все команды сдвига можно разделить на команды логического сдвига (простого сдвига), арифметического и циклического.

Download 1,87 Mb.

Do'stlaringiz bilan baham:
1   ...   43   44   45   46   47   48   49   50   ...   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