当我尝试声明一个名为“name”的变量时,它不起作用,它给了我一个错误,这个there are errors.
并有以下解释
(22) wrong parameters: MOV BL, name
(22) probably no zero prefix for hex; or no 'h' suffix; or wrong addressing; or undefined var: name
这是我的代码
; multi-segment executable file template.
data segment
; add your data here!
pkey db "press any key...$"
name db "myname"
ends
stack segment
dw 128 dup(0)
ends
code segment
start:
; set segment registers:
mov ax, data
mov ds, ax
mov es, ax
; add your code here
MOV BL, name
;;;;;
lea dx, pkey
mov ah, 9
int 21h ; output string at ds:dx
; wait for any key....
mov ah, 1
int 21h
mov ax, 4c00h ; exit to operating system.
int 21h
ends
end start ; set entry point and stop the assembler.
问题是,如果我尝试为它工作的变量使用任何其他名称,namee
, nname
, name_
,但大写不起作用,我尝试在整个互联网上搜索,但要么我搜索错误,要么我不知道要搜索什么。
NAME
是一个名字MASM指令并被视为保留字。使用保留字作为变量名会导致问题。这NAME
正如文档所示,指令尤其没有做任何有用的事情MASM只是忽略它。来自MASM manual:
NAME modulename
Ignored.
In EMU8086除了重命名之外没有任何真正的方法可以解决这个问题name
变量为其他东西。
In MASM5.x+ 您可以使用以下方法解决此问题OPTION
这样指令:
OPTION NOKEYWORD:<NAME>
OPTION NOKEYWORD
是这样定义的MASM manual:
MASM 保留字不区分大小写,预定义的除外
符号(请参阅本章后面的“预定义符号”)。
如果使用保留字作为变量,汇编器会生成错误,
代码标签,或源代码中的其他标识符。然而,如果
您需要将保留字用于其他目的,即 OPTION
NOKEYWORD 指令可以有选择地禁用单词的状态
保留字。
例如,要删除 STR 指令,MASK
运算符,以及 MASM 识别的单词集中的 NAME 指令
作为保留,请在程序的代码段中使用此语句
在第一次引用 STR、MASK 或 NAME 之前:
OPTION NOKEYWORD:<STR MASK NAME>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)