Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛЕКЦИЯ5.DOC
Скачиваний:
2
Добавлен:
22.07.2019
Размер:
53.25 Кб
Скачать

Imul Умножение целых знаковых чисел

Команда IMUL выполняет умножение целого знакового чис­ла, находящегося в регистре AL (в случае деления на байт) или АХ (в случае деления на слово), на операнд-источник (це­лое число со знаком). Размер произведения в два раза больше размера сомножителей.

Для однобайтовых операций один из сомножителей помеща­ется в регистр AL; после выполнения операции произведение записывается в регистр АХ.

Для двухбайтовых операций один из сомножителей помеща­ется в регистр АХ; после выполнения операции произведение записывается в регистры DX:AX (в DX - старшая часть, в АХ - младшая).

В качестве операнда-сомножителя можно указывать регистр данных или ячейку памяти; не допускается умножение на не­посредственное значение.

Пример 1

mov AL,5 ; Первый сомножитель

mov BL,3 ; Второй сомножитель

imul BL ; AX=OOOFh (произведение)

Пример 2

mov AX,256 ; Первый сомнохитель

mov BX,256 ; Второй сомнохитель

imul BX ; DX=0001h, AX=OOOOh (число 65536)

Пример 3

mov AL,-5 ; AL=FBh

mov BL,3 ; BL=03h

imul BL ; AX=FFFlh (-15)

Команды деления

DIV Деление целых беззнаковых чисел

Команда DIV выполняет деление целого числа без знака, находящегося в регистрах АХ (в случае деления на байт) или DX:AX (в случае деления на слово), на операнд-источник (це­лое число без знака). Размер делимого в два раза больше раз­меров делителя и остатка.

Для однобайтовых операций делимое помещается в регистр АХ; после

выполнения операции частное записывается в ре­гистр AL, а остаток - в регистр АН.

Для двухбайтовых операций делимое помещается в регистр DX:AX (в DX

старшая часть, в АХ - младшая); после вы­полнения операции частное записывается в регистр АХ, а оста­ток - в регистр DX.

В качестве операнда-делителя можно указывать регистр дан­ных или ячейку памяти; не допускается деление на непосредс­твенное значение. Если делитель равен 0, или если частное не помещается в назначенный регистр, возбуждается прерывание с вектором 0.

Пример 1

mov AX,506 ;Делимое

mov BL,50 ;Делитель

div BL ;AL=OAh (частное), AH=06h

;(остаток)

Пример 2

mov DX,1 ;Старшая часть делимого 65537

mov AX,1 ;Младшая часть делимого 65537

mov СХ,256 ;делитель

div СХ ;AX=0100h (частное), OX=0001h

;(остаток)

Idiv Деление целых знаковых чисел

Команда IDIV выполняет деление целого числа со знаком, находящегося в регистрах АХ (в случае деления на байт) или DX:AX (в случае деления на слово), на операнд-источник (це­лое число со знаком). Размер делимого в два раза больше раз­меров делителя и остатка. Оба результата рассматриваются как числа со знаком, причем знак остатка равен знаку делимого.

Для однобайтовых операций делимое помешается в регистр АХ; после выполнения операции частное записывается в ре­гистр AL. а остаток - в регистр АН.

Для двухбайтовых операций делимое помещается в регистры DX:AX (в DX - старшая часть, в АХ - младшая); после вы­полнения операции частное записывается в регистр АХ, а оста­ток - в регистр DX.

В качестве операнда-делителя можно указывать регистр дан­ных или ячейку памяти: не допускается деление на непосред­ственное значение. Если делитель равен 0, или если частное не помещается в назначенный регистр, возбуждается прерыва­ние через вектор 0.

Пример 1

Mov AX,506 ;Делимое

mov BL,50 ;Делитель

div ;AL=OAh (частное), AH=06h (остаток)

Пример 2

mov DX,1 ;Старшая часть делимого 65537

mov АХ,1 ;Младшая часть делимого 65537

mov CX.256 ;Делитель

div ;AX=0100h (частное), DX=0001h(остаток)

Пример 3

mov AX,-506 ;AX=FE06h, делимое

mov BL,50 ;Делитель

idiv ;AL=F6h (-10), AH=FAh (-6)

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