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

ДоАн alПослеAx

умножения: Множимое Множитель умножения: произведение

Умножение слова на слово. Множимое находится в регистре EAX, а множитель - в слове памяти или в регистре. После умножения произведение образуется в двойном слове, для которого требуется два регистра: старшая (левая) часть произведения находится в регистре EDX, а младшая (правая) часть - в регистре EAX. Операция игнорирует и стирает любые данные, которые были в регистре EDX.

До | EAX | ПослеEDXEAX

умножения: |Множимое | умножения: Старшая Младшая

часть часть

Произведение

Если множитель находится в регистре, то длина регистра определяет тип операции, как показано ниже:

MUL CL ;Байт-множитель: множимое в AL, произведение в AX

MUL BX ;Слово-Множитель: множимое в AX, произведение в DX:AX

MUL EBX ;Двойное слово-Множитель: множимое в EAX, произведение в EDX:EAX

Беззнаковое умножение: команда MUL

Команда MUL (MULtiplication - умножение) перемножает беззнаковые числа. На рис. 4.26 в процедуре C10MUL дано три примера умножения: байт на байт, слово на слово и слово на байт.

Первый пример команды MUL перемножает 80Н (128) на 47Н (64). Произведение 2000Н (8192) получается в регистре AX.

Второй пример команды MUL генерирует 10000000Н в регистрах DX:AX.

Третий пример команды MUL перемножает слово на байт и требует расширения байта BYTE1 до размеров слова. Так как предполагаются беззнаковые данные, то в примере левый бит регистра АН равен нулю. (При использовании команды CBW значение левого бита регистра AL может быть 0 или 1.) Произведение 00400000Н получается в регистровой паре DX:AX.

Знаковое умножение: команда imul

Команда IMUL (Integer MULtiplication - умножение целых чисел) перемножает знаковые числа. На рис. 4.26 в процедуре D10IMUL используются те же три примера умножения, что и в процедуре C10MUL, но вместо команд MUL записаны команды IMUL.

page 60,132

TITLE EXMULT (СОМ) Пример команд умножения

CODESG SEGMENT PARA 'Code'

ASSUME CS:CODESG,DS:CODESG,SS:CODESG

ORG 100H

BEGIN: JMP SHORT MAIN

;

BYTE1 DB 80H

BYTE2 DB 40H

WORD1 DW 8000H

WORD2 DW 4000H

;

MAIN PROC NEAR ;Основная процедура:

CALL C10MUL ;Вызвать умнож. MUL

CALL D10IMUL ;Вызвать умнож. IMUL

RET

MAIN ENDP

; Пример умножения MUL:

C10MUL PROC

MOV AL, BYTE1 ;Байт * байт

MUL BYTE2 ;произведение в AX

MOV AX,WORD1 ;Слово * слово

MUL WORD2 ;произведение в DX:AX

MOV AX,WORD1 ;Слово * слово

MUL AX,WORD2 ; !!! произведение в EAX

MOV AL, BYTE1 ;Байт * слово

SUB АН, АН . ;расшир.множимого. в АН

MUL WORD1 ;произведение в DX:AX

RET

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