Команди МП 8088/86. Зміст команд. Лекция 8 презентация

Содержание

Слайд 2

Команди діляться на 4 групи: Логічні команди; Команди зміщення; Команди

Команди діляться на 4 групи:
Логічні команди;
Команди зміщення;
Команди циклічного зміщення;


Команди обробки бітів даних.

2.3. Команди логічної обробки даних

Слайд 3

Слайд 4

(AND, OR, XOR, NOT, TEST) Ці команди реалізують порозрядні операції,

(AND, OR, XOR, NOT, TEST)
Ці команди реалізують порозрядні операції, тобто, і-ий

розряд результату – залежить від і-го розряду операнду. Операції виконуються паралельно над усіма розрядами. “true” – коли буде одиничний біт, хоча б в одному розряді результату і “false” – коли в усіх бітах результату нулі.
Команди змінюють всі прапорці умов, але частіше звертаємо увагу на прапорець ZF. Якщо результат - “true”, то ZF = 0, а якщо “ false”, то ZF = 1.
Операндами логічних операцій можуть бути слова або байти, але НЕ одночасно.

AND AX, BX

Наприклад:

2.3.1. Логичні команди

Слайд 5

AND приймач, джерело - операція логічного множення. Команда виконує порозрядно

AND приймач, джерело - операція логічного множення. Команда виконує порозрядно логічну

операцію “І” (кон’юнкцію) над бітами операндів приймач і джерело. Результат записується на місце приймача.

Команда ”AND”

AND AX, BX

Наприклад:

Слайд 6

Команда AND використовується для селективного встановлення 0 в тих бітах

Команда AND використовується для селективного встановлення 0 в тих бітах приймача,

яким відповідає 0 в джерелі. Підбираючи відповідні біти джерела, впливаємо на визначені біти приймача. Такі дії часто виконуються над бітами для управління пристроями обміну. При цьому операнд-джерело називається маскою, а сама операція - маскуванням.
Наприклад:
Слайд 7

AND AX, BX - два регістри AND AL, M_BYTE -

AND AX, BX - два регістри
AND AL, M_BYTE - регістр з

байтом
AND M_BYTE, AL - регістр з байтом
AND TABLE [BX], MASK - регістр зі словом
AND BL, 1101B - безпосереднє значення

Операндами команди AND можуть бути байти чи слова. Можуть використовуватися два регістри, регістр зі словом (байтом пам’яті) і безпосереднє значення:

Слайд 8

CHECK: IN AX, 200 AND AX, 01000000B JZ CHECK ;

CHECK: IN AX, 200
AND AX, 01000000B
JZ CHECK ; вимкнено

Відповідно,

команда AND змінює приймач. Оскільки, біт змінюється лише самим пристроєм, то можна використовувати команду AND для перевірки стану пристрою.
Наприклад, порт 200 з’єднаний з 16-бітовим регістром зовнішнього пристрою і 6-й біт показує ввімкнений (1) чи вимкнений (0) даний пристрій.
Слайд 9

Програма може працювати далі лише тоді, коли пристрій ввімкнений: Якщо,

Програма може працювати далі лише тоді, коли пристрій ввімкнений:
Якщо, пристрій вимкнений,

то в 6-му біті - 0, і результат команди AND - 0, відповідно, коли ZF = 1 виконується JZ.
Як тільки в біті буде 1, ZF = 0 - команда JZ НЕ виконується
Слайд 10

OR AX, BX Команда ”OR ” OR приймач, джерело —

OR AX, BX

Команда ”OR ”
OR приймач, джерело — операція логічного

додавання.

Команда виконує порозрядно логічну операцію АБО (диз’юнкція) над бітами операндів приймач і джерело. Результат записується на місце приймача:
Отже, команду OR використовують для селективного встановлення 1 в приймачі.

Слайд 11

XOR приймач, джерело — операція побітового виключаючого додавання. Команда порозрядно

XOR приймач, джерело — операція побітового виключаючого додавання.
Команда порозрядно виконує

операцію виключаючого АБО над бітами операндів приймач і джерело. Результат записується на місце приймача.

XOR AX, TEST_PAR
JZ ALPHA

Встановлює 1 в ті біти приймача, які відрізняються від бітів джерела.

Команда ”XOR ”

Приклад:

Слайд 12

Якщо, хоча б в одному біті, не співпадають коди, то

Якщо, хоча б в одному біті, не співпадають коди, то результат

команд XOR=1 і ZF=0, отже, команда JZ не буде виконана. Вона буде виконуватися лише тоді, коли операнди повністю співпадають. Команда XOR змінює приймач.
Слайд 13

NOT операнд — операція логічного заперечення. Результат записується на місце

NOT операнд — операція логічного заперечення.

Результат записується на місце операнда.

Команда NOT змінює всі біти на протилежні:
Приклад:

Команда ” NOT ”

Виконання команди НЕ впливає на прапорці

flag db 0ffh ; значення прапорця — істина
...
cycl:
...
CMP flag,0
JE m1
...
m1: not flag ;встановити прапорець в істину

Слайд 14

TEST приймач, джерело — операція “перевірити” (способом логічного множення). Команда

TEST приймач, джерело — операція “перевірити” (способом логічного множення).
Команда виконує

порозрядно операцію AND над бітами операндів приймача і джерела.
Стан операндів залишається сталим, змінюються тільки прапорці ZF, SF і PF, що дає можливість аналізувати стан окремих бітів операндів без зміни їх стану.

Якщо, хоча б одна пара бітів дорівнює 1, то результат команди дорівнює 1, отже, ZF = 0.

Команда ” TEST ”

Слайд 15

TEST al,01h JNZ m1 ;перехід, якщо нульовий біт al дорівнює 1 Наприклад:

TEST al,01h
JNZ m1 ;перехід, якщо нульовий біт al дорівнює 1

Наприклад:

Слайд 16

SHL, SHR, SAL, SAR, SHLD, SHRD ROL, ROR, RCL, RCR

SHL, SHR,
SAL, SAR,
SHLD, SHRD
ROL, ROR,
RCL, RCR
До цієї

групи належить 10 команд.
6 зміщують операнд:
(SHL, SHR, SAL, SAR, SHLD, SHRD)
4 крутять чи циклічно зміщують операнд:
(ROL, ROR, RCL, RCR).

2.3.2. Команди зсуву

Слайд 17

Алгоритм: Черговий зміщуваний біт встановлює прапорець CF; Біт, що вводитья

Алгоритм:
Черговий зміщуваний біт встановлює прапорець CF;
Біт, що вводитья з іншого кінця,

дорівнює 0;
При зміщенні чергового біта він переходить в прапорець CF, при цьому значення попереднього зміщеного біта губиться!

SHL операнд, лічильник зміщень (Shift Logical Left) – логічне зміщення ліворуч.

Слайд 18

Вміст операнди зміщується ліворуч на кількість бітів, що визначається значенням

Вміст операнди зміщується ліворуч на кількість бітів, що визначається значенням лічильника

зміщень. Праворуч (в позицію молодшого біту) записуються нулі;

 SHL AX, CL -- помножити AX без знаку на 2CL

AX=00000101B; AX=510
CL=2
SHL AX, CL; AX =00010100B (AX= 5*22 =20)

Слайд 19

SHR операнд, лічильник зміщень (Shift Logical Right) — логічне зміщення

SHR операнд, лічильник зміщень (Shift Logical Right) — логічне зміщення праворуч.


Вміст операндів зміщується праворуч на кількість бітів, яка визначається значенням лічильника зміщень. Ліворуч (в позицію більшого знакового біта) записуються нулі. На рис. показано принцип роботи цих команд.

SHR AX, CL - поділити AX без знаку на 2CL

AX=00010100B; AX=2010
CL=2
SHR AX, CL; AX =00000101B (AX= 20/22 =5)

Слайд 20

SAL операнд, лічильник зміщень (Shift Arithmetic Left) —арифметичне зміщення ліворуч.

SAL операнд, лічильник зміщень (Shift Arithmetic Left) —арифметичне зміщення ліворуч.
Вміст

операнду зміщується ліворуч на кількість бітів, яка визначається лічильником зміщень. Праворуч (в позицію молодшого біта) записуються нулі. Команда SAL не зберігає знак, але встановлює прапорець CF у випадку зміни знаку черговим зміщуваним бітом. У іншому випадку команда SAL повністю аналогічна команді SHL.

SАL AX, CL - помножити AX зі знаком на 2CL

Слайд 21

SAR операнд, лічильник зміщень (Shift Arithmetic Right) — арифметичне зміщення

SAR операнд, лічильник зміщень (Shift Arithmetic Right) — арифметичне зміщення праворуч.


Вміст операнду зміщується праворуч на кількість бітів, яка визначається значенням лічильника зміщень. Команда SAR зберігає знак, встановлюючи його після зміщення кожного чергового біту.

SAR AX, CL - поділити AX зі знаком на 2CL.

Слайд 22

SHLD операнд1, операнд2, лічильник зміщень — зміщення ліворуч подвійної точності.

SHLD операнд1, операнд2, лічильник зміщень — зміщення ліворуч подвійної точності.
Команда

SHLD виконує заміну шляхом зміщення бітів операнда операнд1 ліворуч, заповнюючи його біти праворуч значеннями бітів, витісняючих з операнд2.
Кількість зміщених бітів визначається значенням лічильник_зміщень, яке може лежати в діапазоні 0...31. Це значення може задаватися безпосереднім операндом чи міститися в регістрі CL.
Значення операнд2 НЕ змінюється.
Слайд 23

Алгоритм роботи: 1. Змістити операнд1 ліворуч на кількість бітів, визначених

Алгоритм роботи:
1. Змістити операнд1 ліворуч на кількість бітів, визначених операндом лічильник_зміщень

(CL);
2. Одночасно зсунути операнд2 ліворуч на кількість бітів, визначених операндом лічильник_зміщень (CL).
3. Висунуті під час зсува ліворуч з операнд2 біти вставляються в операнд1 с його правого краю.
Слайд 24

SHRD операнд1,операнд2, лічильник зміщень — зміщення праворуч подвійної точності. Команда

SHRD операнд1,операнд2, лічильник зміщень — зміщення праворуч подвійної точності.
Команда SHLD

виконує заміну шляхом зміщення бітів операнд1 праворуч, заповнюючи його біти ліворуч бітами, які витісняються із операнд2 згідно схемі на рис. Кількість зміщуваних бітів визначається лічильником зміщень.
Значення лежить в діапазоні 0...31. Це значення може задаватися операндом або зберігатися в регістрі CL.
Значення операнд2 НЕ змінюється.
Слайд 25

Алгоритм роботи: 1. Зсунути операнд1 праворуч на кількість бітів, визначених

Алгоритм роботи:
1. Зсунути операнд1 праворуч на кількість бітів, визначених операндом лічильник_зміщень

(CL);
2. Одночасно зсунути операнд2 праворуч на кількість бітів, визначених операндом лічильник_зміщень (CL).
3. Висунуті під час зміщення ліворуч з операнд2 біти вставляються в операнд1 з його правого краю.
Слайд 26

Команди простого циклічного зміщення Алгоритм роботи: Зміщення всіх бітів операнду

Команди простого циклічного зміщення
Алгоритм роботи:
Зміщення всіх бітів операнду ліворуч на один

розряд, при цьому більший передається в операнд праворуч і стає значенням молодшого біту операнду;
2. Одночасно бітів, що зміщувався стає значенням прапорця переносу CF;
3. Вказані вище дії повторюються кількість раз, яке дорівнює значенню лічильник_зміщень;

2.3.3. Команди циклічного зміщення

Слайд 27

ROL операнд, лічильник_зміщень (Rotate Left) — циклічне зміщення ліворуч. Вміст

ROL операнд, лічильник_зміщень (Rotate Left) — циклічне зміщення ліворуч.
Вміст операнда

зміщується ліворуч на кількість бітів, що визначається операндом лічильник зміщень. Зміщувані біти записуються праворуч в той самий операнд.
Слайд 28

ROR операнд, лічильник_зміщень (Rotate Right) — циклічне зміщення праворуч. Вміст

ROR операнд, лічильник_зміщень (Rotate Right) — циклічне зміщення праворуч.
Вміст операндів

зміщується праворуч на кількість бітів, що визначається операндом лічильник_зміщень. Зміщувані біти записуються ліворуч в той самий операнд.
Слайд 29

Алгоритм роботи: Зміщення всіх бітів операнду на один розряд, при

Алгоритм роботи:
Зміщення всіх бітів операнду на один розряд, при цьому

старший біт операнду стає значенням прапорця перенесення CF;
Одночасно старе значення прапорця перенесення CF зміщується в операнд праворуч і набуває значення молодшого біту операнду;
Вказані вище дії повторювати кількість разів, що вказана в лічильнику зміщень.

2. Команди циклічного зміщення через прапорець перенесення CF

Слайд 30

RCL операнд, лічильник_зміщень (Rotate through Carry Left) — циклічне зміщення

RCL операнд, лічильник_зміщень (Rotate through Carry Left) — циклічне зміщення ліворуч

через перенесення.
Вміст операнду зміщується ліворуч на кількість бітів, що визначається операндом лічильника зміщень. Зміщувані біти почергово стають значеннями прапорця перенесення CF.
Имя файла: Команди-МП-8088/86.-Зміст-команд.-Лекция-8.pptx
Количество просмотров: 72
Количество скачиваний: 0