Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архитектура компьютеров / 6_Доп программы.doc
Скачиваний:
44
Добавлен:
20.03.2015
Размер:
164.35 Кб
Скачать

Сдвиг влево на 4 бита

MOV ECX,04 ;4 цикла

С20: SHL EDX,1 ;EDX на 1 бит влево

SHL EAX,1 ;EAX на 1 бит влево

ADC EАX,00 ;Плюс перенос

LOOP С20 ;Повторить

Сдвиг вправо на 4 бита

MOV ECX,04 ;4 цикла

D20: SHR EAX,1 ;EAX на 1 бит вправо

SHR EDX,1 ;EDX на 1 бит вправо

JNC D30 ;Если есть перенос,

OR EАX,80000000H ;то 1 в EAX

D30: LOOP 020 ;Повторить

Ниже приведен более эффективный способ для сдвига влево для пары AX:DX, не требующий организации цикла. В этом примере фактор сдвига записывается в регистр CL. Пример написан для сдвига на 4 бита, но может быть адаптирован для других значений сдвигов:

MOV CL,04 ;Установить фактор сдвига

SHL DX,CL ;DX влево на 4 бита

MOV BL,АН ;Сохранить АН в BL

SHL AX,CL ;AX влево на 4 бита

SHL BL, CL ;BL влево на 4 бита

OR DL,BL ;4 бита из BL в DL

4.13.3 Деление

Операция деления для беззнаковых данных выполняется командой DIV, а для знаковых – IDIV. Ответственность за подбор подходящей команды лежит на программисте.

Существуют две основные операции деления:

Деление слова на байт. Делимое находится в регистре AX, а делитель - в байте памяти или в однобайтовом регистре. После деления остаток получается в регистре АН, а частное - в AL. Так как однобайтовое частное, очень мало - максимально + 255 (0FFH) для беззнакового деления и +127 (7FH) для знакового, то данная операция имеет ограниченное использование:

До ax После ан al

деления: Делимое) деления: Остаток Частное

Деление четверного слова на двойное слово (Деление двойного слова на слово). Делимое находится в регистровой паре EDX:EAX, а делитель - в двойном слове памяти или в регистре. После деления остаток получается в регистре EDX, а частное - в регистре EAX. Частное в одном слове допускает максимальное значение + FFFFFFFF для беззнакового деления и 7FFFFFFF для знакового:

До EDX EAX После EDX | EAX

деления: Старшая Младшая деле-

часть часть ния: Остаток | частное

Делимое

В единственном операнде команд DIV и IDIV указывается делитель. Если делимое находится только в EAX, то его расширяют доEDXспециальной командойCDQ. Рассмотрим следующую команду:

DIV DIVISOR

Если поле DIVISOR определено как байт (DB), то операция предполагает деление слова на байт. Если поле DIVISOR определено как слово (DW), то операция предполагает деление двойного слова на слово. Если поле DIVISOR определено как двойное слово (DD), то операция предполагает деление четверного слова на двойное слово.

При делении, например, 13 на 3 получается результат 4 1/3. Частное здесь 4, а остаток - 1. Заметим, что ручной калькулятор (или программа на языке БЕЙСИК) выдает в этом случае результат 4,333... Значение содержит целую часть (4) и дробную часть (,333). Значения 1/3 и ,333... - дробные части, в то время как 1 -остаток от деления.

Соседние файлы в папке Архитектура компьютеров