2015-10-28 3 views
1

Я изучаю для теста сборки, и у меня возникли проблемы с определением того, как определить значения после набора инструкций.Значение шестнадцатеричного значения после выполнения инструкции

Какое шестнадцатеричное значение находится в топе после выполнения всех этих инструкций?

mov ax, -4 
imul ah 
imul al 
ANSWER: AX=0010 

Из того, что я собрал, значение топора, перед IMUL инструкции, должны быть FFFC.

ответ

3

imul действует по-разному в зависимости от размера операнда. imul ah - подписанное умножение AX = AL * AH (no DX). Давайте сделаем это шаг за шагом:

mov ax, -4 

AX теперь FFFCh что означает, что AH = FFh (= -1 в 8-битном контексте с) и AL = FCH (= -4 в 8-битном контексте с) ,

imul ah 

AX = (-1) * (-4) = (+4) = 0004H

imul al 

AX = (+4) * (+4) = 16 = 0010h

Смежные вопросы