+ -
当前位置:首页 → 问答吧 → 一小段汇编代码,用masm6.11编译有错误,为什么?

一小段汇编代码,用masm6.11编译有错误,为什么?

时间:2011-04-20

来源:互联网

在dos虚拟机当中:

C:\>TYPE MY.asm
Assembly code

stack segment stack
x db 1
stack ends

data segment
y db 2
data ends

code segment
  assume cs:code,ds:data,es:stack
q:
mov al,x
mov bl,y
code ends
end q



编译输出: C:\>ML my.asm
...
...
CPU error: incorrect opcode. Killing process.

作者: hjklasdfgl   发布时间: 2011-04-20

虽然你这程序有些问题,但不是在编译链接阶段表现出来的。用 Masm5/6/32v8 编译都顺利通过。
可以先试试 ml /c 只编译看看是否正常;正常,可能是缺省的编译参数有误?也不正常,换个版本的试试?

作者: zara   发布时间: 2011-04-20

是,我用masm5.1也能正常编译

作者: leetow2003   发布时间: 2011-04-20

这个程序唯一的问题就是没有正常终止,汇编通过是没有问题的。
“CPU error: incorrect opcode. Killing process.”这应该是dos虚拟机本身产生的错误,你用的masm 6.11可能有问题。

作者: DelphiGuy   发布时间: 2011-04-20

引用 3 楼 delphiguy 的回复:

这个程序唯一的问题就是没有正常终止,汇编通过是没有问题的。
“CPU error: incorrect opcode. Killing process.”这应该是dos虚拟机本身产生的错误,你用的masm 6.11可能有问题。


你说的是,要在程序最后加上Int 20H?
还是别的什么意义?

谢谢!

作者: hjklasdfgl   发布时间: 2011-04-20

是的,用INT 20h或者用INT 21h ah=4Ch终止都可以,不过用INT 20h终止程序CS要设置为PSP。

作者: DelphiGuy   发布时间: 2011-04-20