Variables 程序集-为字符串指定int值

Variables 程序集-为字符串指定int值,variables,assembly,nasm,assign,Variables,Assembly,Nasm,Assign,是否可以为程序集中的字符串指定一个int值 例如,我输入>>rat=2,当我调用使用变量的程序时,如果输入>>rat+2,它必须返回4 如果可能的话,哪种方法是最好的 任何帮助都将不胜感激。听起来您想在变量中存储一个整数,而这个变量恰好是用字符串命名的?这与rkhb对您的问题的解释非常不同,但从您使用的标签来看,我认为这更符合您的实际问题 NASM支持两种基本类型的变量:初始化数据和未初始化数据 对于初始化的数据,在声明变量时指定一个静态值。实际上,初始化的数据更像是一个常量,但您可以用符号来命

是否可以为程序集中的字符串指定一个int值

例如,我输入>>rat=2,当我调用使用变量的程序时,如果输入>>rat+2,它必须返回4

如果可能的话,哪种方法是最好的


任何帮助都将不胜感激。

听起来您想在变量中存储一个整数,而这个变量恰好是用字符串命名的?这与rkhb对您的问题的解释非常不同,但从您使用的标签来看,我认为这更符合您的实际问题

NASM支持两种基本类型的变量:初始化数据和未初始化数据

对于初始化的数据,在声明变量时指定一个静态值。实际上,初始化的数据更像是一个常量,但您可以用符号来命名它
DB
(声明字节)、
DW
(声明字)、
DD
(声明双字)和
DQ
(声明四字)是用于声明初始化数据的命令。所以你可以做:

rat  DD  2
然后在代码的某个地方,执行以下操作:

mov  eax, DWORD [rat]
add  eax, 2
; eax now contains 4
对于未初始化的数据,您基本上只是保留空间来保存数据。该数据不是静态初始化的;您可以在运行时填充它。为此,可以使用
RESB
(保留字节)、
RESW
(保留字)、
RESD
(保留双字)和
RESQ
(保留四字);例如:

rat  RESD 1     ; reserve space for 1 DWORD-sized value
然后在以后的代码中,您会:

call GetValue           ; returns value in EAX
mov  DWORD [rat], eax   ; store value in 'rat'

这些都在NASM手册的第1部分中进行了解释。

这不是我想要的,但谢谢

我想用NASM做一个带变量的计算器

因此,作为卡西欧计算器(例如),您可以放置X、Y、M、Z等变量,然后为这些变量赋值

这就是我要寻找的,不是在代码中,而是在屏幕中

再次感谢您的帮助,它帮助我解决了代码中的另一个错误