【发布时间】:2016-05-27 13:20:38
【问题描述】:
我正在使用 Kip Irvine 库编写 MASM Assembly 中的一些代码。我有一些这样的代码:
mov eax, n_var
mov icount, eax
mov ecx,0
.WHILE icount >= ecx
mov esi, icount
fld vector_sol[esi * 8]
dec icount
.ENDW
问题是,当 icount 为 0 时,在下一个循环中 icount 应该为 -1,但它得到的值是 4294967295。如果我尝试使用寄存器而不是 icount 循环,也会发生同样的情况。
【问题讨论】:
-
如果打印为未签名的,这是正常的。使用签名输出。不过,您没有展示您的打印方式。
-
也不知道
>=运算符使用什么。您应该避免使用这些辅助工具(例如.WHILE),尤其是如果您是初学者。只需编写纯 asm 代码。 -
确实,
-1编码为FFFFFFFFh,4294967295也编码为FFFFFFFFh。区别在于它们的上下文。