Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 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; Нарушение авторских прав |