2011-10-17 58 views
2

这似乎是一个小问题,但我迷路了。截断2字节变量为1字节

在这个例子中,character是一个2字节的变量,而bx是一个单字节。我试图做cmp bx, [character],这显然不会因为大小的差异而起作用。

我想比较bx只有第一个字节character。思考?

回答

4

BX rebister是16位的大小,是由两个8位BLBH组成!

对于16位CMP您可以使用前缀:

cmp bx, word ptr[character] 

8位BL CMP

cmp bl, byte ptr[character] 

或8位BH CMP

cmp bh, byte ptr[character + 1] 
+0

谢谢!我正在寻找第一个字节(不是第二个),所以cmp bh,byte ptr [character + 0]完成了这项工作。 –

+2

前缀不需要(或不应该)。一个体面的汇编程序可以发现'bl'将比较一个字节的字节和'bx'。 –