我只是在学习NASM,我还在努力想办法解决这个问题。您如何在NASM中声明变量?例如,您如何在NASM中声明unsigned int i?谢谢
发布于 2015-02-16 11:47:49
在汇编语言中没有无符号int这样的东西(据我所知)。在NASM中,您只能声明内存位置并将内容放入其中。示例:
section .data
abyte: db 15
aword: dw 452
adword: dd 478569
; etc etc see Nasm manual for more 'types'对待变量的方式将使您使用有符号或无符号的值。当您需要有符号值时,请记住div和mul只适用于无符号值。( MSB不是符号位)。在这种情况下,您应该使用idiv和imul (整数除法或符号除法)。还请记住,值的负数将显示为二的补码。您将看到5 (以AX为例):0000000000000101二进制,但对于-5,您将看到1111111111111011,这是两个的5的补充。两者都给出5+ (-5)或0000000000101+ 1111111111111011 = 0000000000000000。当两个数字都被视为无符号时,溢出标志将被适当地设置为指示存在溢出,因此有时您可以忽略这一点。一个好的做法是经常调试和检查标志状态。若要检查AX是否为负数,则可以使用ax,如果MSB为1,则ax和符号标志为1,否则为0。(js和jns指令)
答案有点晚,但对于那些有同样问题的人来说……
https://stackoverflow.com/questions/26660052
复制相似问题