2011-11-01 390 views
2

我不确定cbw命令实际执行的操作。我有一段代码:汇编语言:cbw

mov ax,0FF0h 
cbw 
idiv ah 

ax的值在cbw后如何变化?

回答

6

cbw指令符号 - 将一个字节扩展为一个字。在这种情况下,它将采用AL(恰好为1)的符号位并将其复制到AH的每一位中。

这意味着AX的二进制补码值将是相同的,但二进制表示形式将有所不同。

AXcbw指令后的值将是FFF0h(16位-16值,就像AL原是一个8位-16)

+0

感谢。我知道你对'AL'的符号位的解释是1,因为它是负数,但我为什么'AL'最初是一个8位-1,我有点困惑。最初是不是'AL' -16(符号位等于1)? – raphnguyen

+1

0FF0h中的最后一个零被忽略了。 CBW后AX应该变为0FFF0h。 –

+0

@Alex:哎呀,谢谢你指出。 –