递增寄存器超过其限制。汇编语言加法

Incrementing register past its limits. Assembly language addition

执行以下行后 EAX 中的值是多少?

mov    eax, 1002FFFFh
inc    ax

答案是1002000h

我的问题是,为什么答案不是 1003 0000h,或者 1002 0000h 考虑到我们最初从 32 位的东西开始,而答案不知何故是 32-4 位。

您正在增加 AX,它是 16 位,并且溢出到 0x0000
所以答案是 0x10020000(不是你说的 0x1002000,可能是打字错误)

要获得 0x10030000 作为结果,您必须改为增加 EAX