Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






MUL-множення





Для однобайтового множення

(АХ) (AL) * (Операнд)

Якщо (АН) = 0, то (CF) 0

(OF) 0

Якщо (AH) # 0, то (CF) 1

(OF) 1

 

Двобайтове множення

(DX,AX) (АХ) * (Операнд)

Якщо (DX) = 0, тo (CF) 0

(OF) 0

Якщо (DX) #0, то (CF) 1

(OF) 1

По команді MUL виконується беззнакове множення вмісту акумулятора і операнду – джерела. Якщо операнд є байтом, то він множиться на вміст регістру AL і результат подвійної довжини (слово) записується в регістр АХ. Якщо операнд – слово, то він множиться на вміст регістру АХ і результат (подвійне слово) записується в пару регістрів DX і АХ, причому регістр DX містить старші розряди результату. Операнд може бути заданий в регістрі загального призначення або комірці пам'яті і інтерпретується як число без знаку.

Якщо вміст регістру АН після однобайтового множення або вміст регістру DX після двобайтового множення не рівні нулю, прапорці CF і OF встановлюються в 1. Інакше вони скидаються в 0. Значення прапорців AF, PF, SF і ZF після виконання команди MUL не визначено.

 

Приклад. Нехай регістр AL містить число 30Н, однобайтова комірка пам'яті NEXT_L містить 12Н і виконується команда MUL NEXT_L. Результат множення (12Н ´ 30Н = 360Н) записується в регістр АХ. Оскільки вміст регістру АН відмінний від 0 прапорці CF і OF встановлені в 1.

Нехай тепер регістр АХ містить число 1000Н, регістр ВХ – число 550Н. Тоді після виконання команди MUL ВХ результат множення (1000Н ´ 550Н = 550000Н) буде записаний в пару регістрів DX і АХ. Оскільки нове значення регистру DX(0055H) відмінне від нуля, то прапорці CF і OF встановлюються в 1.

Прапорці, що змінюються після команди: OF; SF; ZF; AF; PF; CF.

DIV-ділення

Для однобайтових операцій виконується ділення вмісту регістра АХ на операнд. При цьому, переривання типу 0 генерується, якщо ((АХ):(Операнд) >FFH).

(AL) частка

(AH) залишок

 

Для двобайтових операцій виконується поділ (DX,AX): (Операнд). Якщо ((DX,AX): (Операнд) > FFFFH),

генерується переривання типу 0.

(АХ) частка

(DX) залишок

По команді DIV виконується беззнаковий поділ вмісту регістра-акумулятора на заданий операнд. При однобайтовому поділі вміст регістра АХ розглядається як беззнакове 16-розрядне ділене. При двобайтовому поділі вміст пари регістрів DX. AX розглядається як беззнакове 32-розрядне ділене, де регістр DX містить старші 16 розрядів. Операнд може бути заданий в регістрі загального призначення або елементі пам'яті, при цьому операнд розглядається як беззнаковий 8- або 16-бітовий дільник відповідно при однобайтовому і двобайтовому поділі.

При однобайтовому поділі частка записується в регістр AL, а залишок — в регістр АН. При двобайтовому поділі регістри АХ і DX використовуються для зберігання 16-розрядних частки і залишку відповідно, що розглядаються як беззнакові числа. Після виконання командии DIV значення розрядів регістра прапорців процесора не визначені. Якщо значення частки перевищує розрядність акумулятора (десяткове число 255 при однобайтовому поділі і 65535 при двобайтовому), або робиться спроба поділу на нуль, то автоматично генерується переривання типу 0. Якщо відбулося переповнення, то частка і залишок не визначені. В елементах пам'яті з абсолютними адресами 00000Н і 00003Н міститься подвійне слово, що визначає командиний сегмент і переміщувану адресу процедури обробки переривання нульового типу.

Приклад. Нехай регістр АХ містить число 0047Н, регістр CL — число 12Н і виконується команда DIV CL. Частка від поділу (03Н = 47Н/12Н) записується в регістр AL, а залишок 11Н — в регістр АН.

Розглянемо випадок, коли регістри DX і АХ містять відповідно коди 0012Н і F043H, котрі представляють 32-розрядне шістнадцяткове число 0012F043H, регістр ВР містить число 4320Н і виконується команда DIV ВР. Частка від поділу (0048Н = 12F043H/4320H) записується в регістр AL, а залишок (0F43H) —в регістр DX.

Прапорці, що змінюються після команди: OF; SF; ZF; AF; PF,CF.







Date: 2015-12-12; view: 391; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию