Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
асм.docx
Скачиваний:
16
Добавлен:
27.10.2018
Размер:
644.06 Кб
Скачать

14. Команди передачі даних movXx. Команда setCc. Команда xlat

У процесорі 80386 та i486 введено нові команди передач даних, які використовуються для спрощення програмування типових задач.

Команда movXx (MOVe with Sign/Zero eXtension) передачі зі знаковим/нульовим розширенням. Під час пересилки відбувається розширення розміру операнда. Основні форми:

movXx reg16, reg/mem8; розширення байта до слова

movXx reg32, reg/mem8; розширення байта до подвійного слова

movXx reg32, reg/mem16; розширення слова до подвійного слова.

Команда movsx передає 8-бітове джерело в 16- або 32-бітовий приймач або 16-бітове джерело в 32-бітовий приймач з копіюванням старшого (знакового) біта джерела в старші біти приймача. Приймачем може бути тільки загальний регістр. Режим адресації джерела будь-який. Команда movzx аналогічна команді movsx, але записує в старші біти приймача нулі.

Дія універсальної команди mov розширена в мікропроцесорах 80386 та i486 на нові регістри: керування crn, перевірки drn та налагодження trn:

mov reg32, crn; mov crn, reg32,

mov reg32, drn; mov drn, reg32,

mov reg32, trn; mov trn, reg32,

де reg32 – загальний з2-бітовий регістр.

Команда setCCустановлення байта за умовою призначена для того, щоб зберегти зафіксовану прапорцями умову для подальших обчислень. Загальна форма

setCC reg/mem8

де

.

Це означає, що символи СС можуть набувати значень, які знаходяться у фігурних дужках. Символи CC (Code Condition – код умови) у коді команди визначають умову, яка перевіряється. Код умови визначається попередніми командами певними значеннями відповідних прапорців. Якщо умова справджується, то в байт reg/mem8 записується 01h, Якщо ж умова не справджується – то 00h.

Команда setCC часто застосовується для побудови таблиць за результатами декількох порівнянь або віднімань. Її зручно використати там, де потрібна обробка вкладених рівнів умов.

15. Команди додавання, віднімання і порівняння

Результати виконання арифметичних операцій фіксуються в шести прапорцях of, cf, sf, pf, af, cf регістра eflags. Стан прапорців можна проаналізувати за допомогою команд умовного переходу. Передбачена також команда into – переривання при переповненні (прапорець of=1).

Команди додавання. Дві основні команди додавання add і adc додавання з перенесенням. Вони мають узагальнений вигляд (після крапки з комою вказано алгоритм виконання):

add dst, src; dst=(dst)+(src) і формуються прапорці

adc dst, src; dst=(dst)+(src)+(cf) і формуються прапорці.

Форми команди add:

add reg/mem, imm; Розміри 8/16/32

add reg, reg/mem; Розміри 8/16/32

add reg/mem, reg; Розміри 8/16/32

add reg/mem16, imm8; Приймач 16, джерело 8 бітів

add reg/mem32, imm8; Приймач 32, джерело 8 бітів

У двох останніх формах розмір безпосереднього операнда менший розміру приймача, тому джерело розширюється зі знаком до розміру приймача. Такі ж форми має команда adc.

Якщо додаються операнди як без знакові числа, то значення прапорця cf=1 означає, що відбулося переповнення. Якщо ж додаються знакові числа, то переповнення тут фіксує прапорець of, а значення прапорця cf не несе корисної інформації.

До команд додавання відносять також команду

inc dst; dst=(dst)+1.

Операндом команди може бути регістр або комірка пам’яті

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]