Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 从tasm中的arg/参数读取_Assembly_Tasm - Fatal编程技术网

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