我在书中看到了这些问题,我正试图找出它们的确切含义。
.data
one WORD 8002h
two WORD 4321h
.code
mov edx,21348041h
movsx edx,one
movsx edx,two
^ EDX以值21348041 hex开始吧?然后因为movsx edx添加FFFFF8002十六进制?然后edx添加FFFFF4321十六进制?令人困惑,但我假设这本书解释说movsx转换为签名?
答案 0 :(得分:4)
第一个是正确的,但不是“添加”。 mov*
移动数据。
因为您要求将数据视为已签名,并且您使用的数据少于一个(假设采用32位架构),所以移动的实际数据将使用1
填充到左侧,如果源编号设置最左边的位(即负数)。
请注意最后的附录。由于0x4321
不是负数(小于0x8000
),即使您将其视为签名,它仍然是正面的。它会移动你给它的字面值。