在NASM中声明变量

时间:2014-10-30 17:54:56

标签: nasm unsigned-integer

我只是在学习NASM而且我正在努力解决这个问题。你如何在NASM中声明变量?例如,您如何在NASM中声明unsigned int i?感谢

1 个答案:

答案 0 :(得分:4)

汇编语言中没有unsigned 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)或0000000000000101 + 1111111111111011 = 0000000000000000。当两个数字都被视为无符号时,溢出标志将被适当地设置以指示存在溢出,因此有时您可以忽略它。一个好的做法是经常调试和检查标志状态。 要检查AX是否为负,你可以和ax,ax和符号标志如果MSB为1则为1,否则为0.(js和jns指令)

对于那些有同样问题的人来说,答案有点晚了......