16位MS-DOS编程全解析
1. 内存模型与基础设置
在16位MS-DOS编程中,当使用小内存模型时,数据和代码标签的偏移量(地址)为16位。在这种模型下,所有代码都能放入一个16位段,程序的数据和栈也能放入一个16位段。在实地址模式下,栈条目默认是16位的,不过也可以将32位值放在栈上,这会占用两个栈条目。
为了简化16位程序的编码,可以包含 Irvine16.inc 文件,它会向汇编流中插入以下语句,用于定义内存模式和调用约定、分配栈空间、启用32位寄存器,并将 .EXIT 指令重新定义为 exit :
.MODEL small,stdcall
.STACK 200h
.386
exit EQU <.EXIT>
2. MS-DOS函数调用(INT 21h)
MS-DOS提供了许多易于使用的函数,用于在控制台显示文本,这些函数通常被称为INT 21h MS-DOS函数调用。该中断支持约200种不同的函数,通过放在 AH 寄存器中的函数编号来识别。
部分函数需要将输入参数的32位地址存储在 DS:DX 寄存器中。 DS 是数据段寄存器,通常设置为程序的数据区。若不是这种情况,可以使用 SEG 运算符将 DS 设置为传递给INT 21h的数据所在的段,示例代码如下:
超级会员免费看
订阅专栏 解锁全文
1506

被折叠的 条评论
为什么被折叠?



