Assembly 从tasm中的arg/参数读取
我有Assembly 从tasm中的arg/参数读取,assembly,tasm,Assembly,Tasm,我有 color dw? 及 我想要读取参数的值,但存在错误:操作数类型不匹配。为什么这不起作用?当您在x86汇编中有如下指令时: mov [col], dl dl寄存器是8位的,因此这必然是一个8位的数据操作。如果col未定义为8位值,则会出现操作数类型错误col需要定义为8位值,例如: col db ? 由于在加载dl之前,您已在代码中用xor-dx,dx清除了dx的高位字节,因此您可以移动一个字: mov [col], dx 这里,汇编程序将假定数据类型必须是16位,因此必须将col
color dw?
及
我想要读取参数的值,但存在错误:操作数类型不匹配。为什么这不起作用?当您在x86汇编中有如下指令时:
mov [col], dl
dl
寄存器是8位的,因此这必然是一个8位的数据操作。如果col
未定义为8位值,则会出现操作数类型错误col
需要定义为8位值,例如:
col db ?
由于在加载dl
之前,您已在代码中用xor-dx,dx
清除了dx
的高位字节,因此您可以移动一个字:
mov [col], dx
这里,汇编程序将假定数据类型必须是16位,因此必须将col
定义为一个字,例如:
col dw ?
从“我有颜色dw吗?”我得到变量是字大小的。由于事先清除了DX寄存器,因此应将
mov[col],dl
更改为mov[color],DX
以存储结果
第二个问题是比较命令行的长度,但如果没有参数,则无法跳转。您可以将ret
替换为jb
到退出应用程序的位置
mov cl, [es:bx]
cmp cl, 2
jb NoArg
仔细校对你的代码。您有
mov-dl,
没有第二个参数。对不起,有mov-dl[es:bx];程序asm(214),它是行:mov[col],dl操作数类型不匹配col
是如何定义的?如果从dl
移动,则汇编程序需要字节数据类型。因此,必须将其定义为db
,否则您将遇到问题。
mov cl, [es:bx]
cmp cl, 2
jb NoArg