机器代码(.asm 和 movsx)
Machine Code (.asm & movsx)
我正在看我书中的这些问题,我试图弄清楚它们的确切含义。
.data
one WORD 8002h
two WORD 4321h
.code
mov edx,21348041h
movsx edx,one
movsx edx,two
^ EDX 以 21348041 十六进制值开始,对吗?然后因为 movsx edx 添加了 FFFFF8002 hex?然后 edx 添加 FFFFF4321 十六进制?令人困惑,但我假设这本书正在解释 movsx 转换为签名?
第一个正确,但不正确"adds"。 mov*
移动数据。
因为您请求将数据视为已签名,并且您使用的数据少于一个字(假设是 32 位架构),实际移动的数据将被填充到左侧 1
如果源编号设置了最左边的位(即负数)。
注意最后的附录。因为 0x4321
不是负数(小于 0x8000
),即使您将其视为已签名,它仍然是正数。它会移动你给它的文字值。
我正在看我书中的这些问题,我试图弄清楚它们的确切含义。
.data
one WORD 8002h
two WORD 4321h
.code
mov edx,21348041h
movsx edx,one
movsx edx,two
^ EDX 以 21348041 十六进制值开始,对吗?然后因为 movsx edx 添加了 FFFFF8002 hex?然后 edx 添加 FFFFF4321 十六进制?令人困惑,但我假设这本书正在解释 movsx 转换为签名?
第一个正确,但不正确"adds"。 mov*
移动数据。
因为您请求将数据视为已签名,并且您使用的数据少于一个字(假设是 32 位架构),实际移动的数据将被填充到左侧 1
如果源编号设置了最左边的位(即负数)。
注意最后的附录。因为 0x4321
不是负数(小于 0x8000
),即使您将其视为已签名,它仍然是正数。它会移动你给它的文字值。