在 8 位寄存器中将 5 添加到 0FBh 如何设置零标志?

ros*_*ose 3 assembly

在 8 位寄存器中将 5 添加到 0FBh 设置零标志

我是新手,如果您是专家,请耐心等待我。这是我如何分解它的,但我显然做错了什么。也许我对零标志的理解是错误的?

根据我的理解,如果结果为 0,则设置零标志。 0FB = 251; 251 + 5 = 256;二进制:0000000100000000 十六进制:100

哪个不是0,那么为什么要设置零标志呢?

Clo*_*oud 5

可以在 8 位寄存器中存储的最大无符号值是0xFF(即:255以十为基数),因此寄存器中的值只是纯零 ( 0b00000000),这会导致ZF被设置。

检查溢出进位标志,CF。也应该通过此操作进行设置。您正在执行的操作会导致寄存器值为零 ( +ZF) 且寄存器溢出 ( +CF)。

感谢@EOF指出我帖子中的错误。

  • 在我所知道的大多数体系结构中,“OF”是通过第二高位(而不是最高位)的溢出来设置的。与无符号溢出相关的标志是*进位标志*。 (3认同)
  • @玫瑰。它不会传输到更大的位寄存器,但会设置进位标志。如果您想将其传送到另一个寄存器中,可以在“add”之后使用“adc”指令。 (3认同)