正确答案是什么?我在测试中遇到了这个问题...:/
x86-64 架构:
//What value will the register RAX have after
//executing the following sequence of instructions?
mov al, -5
xor ah, ah
mov cl, 5
div cl
//a) -1
//b) 255
//c) 50
//d) 0
//e) 1
//f) -50
我已经使用 UASM 在 Visual Studio 中编译了代码,除法后 AX 的值为 132h
正确答案是:你看不出来。因为代码仅更改低 16 位,所以前 48 位是块之前的内容,并且未指定。
请注意,
div
是无符号的,因此您需要将-5
转换为无符号,即251
。除以 5
得到结果 50
,余数 1
(正如您自己确定的那样,在 132h
中得到 AX
,因为余数进入 AH
,商进入 AL
)。由于这不是提供的选项之一,我们必须假设他们真正想要的是 AL
的值,而不是 RAX
,所以我会选择 50
。