скорость выполнения. Команда IMUL требует
PUSH DX
MOV DX,9
IMUL DX
POP DX
Кроме того, умножение на 9 с помощью сдвига дает 16=битовый
результат, а не 32=битовый, как команда IMUL.
Все же в программе умножение с помощью сдвига может оказаться
желательным в некоторых случаях. В первую очередь, его преимущество
- скорость выполнения. Команда IMUL требует много времени, тогда
как команда сдвига выполняется гораздо быстрее. В случае примера на
Фиг. 4.21, метод сдвига работает примерно на 25% быстрее. Выигрыш
небольшой, но может оказаться решающим для приложения, зависящего
от умножения целых чисел на 9. Умножения на степень 2 могут дать и
больший выигрыш в скорости выполнения.
Microsoft (R) Macro Assembler Version 5.00 1/1/80 04:01:21
Фиг. 4.21 Примеры инструкций сдвига Page 1-1
PAGE ,132
TITLE Фиг. 4.21 Примеры инструкций сдвига
0000 CODE SEGMENT
ASSUME CS:CODE,DS:CODE
;--------------------------------------------------
; Эта программа умножает число, заданное в регистре AX
; на 9 без использования команды умножения
;--------------------------------------------------
0000 MUL9 PROC NEAR
0000 51 PUSH CX ; Сохранение регистра CX в стеке
0001 50 PUSH AX ; Временное сохранение AX
0002 B1 03 MOV CL, 3 ; Будем сдвигать регистр AX на 3 разряда,
0004 D3 F8 SAR AX, CL ; тем самым уножая на 8
0006 8B C8 MOV CX, AX ; CX <- AX * 8
Содержание Назад Вперед