我有一个用于 MS-DOS 的 Hello, World 程序,它使用 int 21h 进行系统调用。
mov dx,hello
mov ah,9
int 0x21
mov ah,0
int 0x21
"hello" 是字符串 'hello, world',13,10,'$' 的地址。
该程序有效。
但是,当我将(第一个)“int 0x21”替换为“call 5”时,程序会导致计算机崩溃(即运行 PTS-DOS 的 VirtualBox 虚拟机)。在 DOSbox 上,它只是终止并返回到命令提示符。
我尝试对地址和电话号码使用不同的寄存器,但总是得到相同的结果。
现在我想知道...
- 难道以后的DOS不再支持CP/M兼容调用5接口了吗?
- PTS-DOS 和 DOSbox 中的 DOS 不支持 call 5 吗?
- 我是不是用错了界面?
- 我必须先配置段寄存器吗?(我尝试将所有段寄存器设置为零。)
有任何想法吗?
更新:我接受了答案,因为根据文档它是正确的。它仍然不起作用,但这可能是由于我的 DOS 版本或其他一些问题。