【问题标题】:Assembly Language: cbw汇编语言:cbw
【发布时间】:2011-11-01 01:51:48
【问题描述】:

我不确定cbw 命令的实际作用。我有一段代码:

mov  ax,0FF0h
cbw
idiv ah

cbw后ax值如何变化?

【问题讨论】:

标签: assembly x86 division sign-extension


【解决方案1】:

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

这意味着AX的二进制补码值相同,但二进制表示会不同。

cbw 指令后的AX 的值将是FFF0h(一个16 位的-16 值,就像AL 最初是一个8 位的-16)

【讨论】:

  • 谢谢。我理解您对AL 的符号位为 1 的解释,因为它是负数,但我对为什么 AL 最初是 8 位 -1 感到有些困惑。 AL原来不是-16(符号位等于1)吗?
  • 0FF0h 中的最后一个零被忽略了。 AX 应该在 CBW 之后变为 0FFF0h。
猜你喜欢
  • 2010-12-24
  • 2014-10-07
  • 1970-01-01
  • 2013-01-17
  • 2013-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多