And*_*ehm 1 assembly dos system-calls
我有一个用于 MS-DOS 的 Hello, World 程序,它使用 int 21h 进行系统调用。
mov dx,hello
mov ah,9
int 0x21
mov ah,0
int 0x21
Run Code Online (Sandbox Code Playgroud)
“hello”是字符串“hello, world”,13,10,“$”的地址。
该程序有效。
然而,当我用“call 5”替换(第一个)“int 0x21”时,程序使计算机崩溃(即运行PTS-DOS的VirtualBox虚拟机)。在 DOSbox 上,它只是终止并返回到命令提示符。
我尝试使用不同的寄存器来存储地址和电话号码,但总是得到相同的结果。
现在我想知道...
有任何想法吗?
更新:我接受了答案,因为根据文档它是正确的。它仍然无法工作,但这可能是由于我的 DOS 版本或其他问题造成的。
DOSBox不支持CALL 5。从其源代码来看:
// lets hope nobody really uses this address
sSave(sPSP,cpm_entry,RealMake(0xDEAD,0xFFFF));
Run Code Online (Sandbox Code Playgroud)