16位MS-DOS编程全解析
一、16位MS-DOS编程基础
在16位MS-DOS编程中,小内存模型是常用的一种方式。在小内存模型里,数据和代码标签的偏移量(地址)是16位的。比如Irvine16库就采用了小内存模型,在这个模型下,所有代码能放在一个16位段中,程序的数据和栈也能放在一个16位段里。在实地址模式下,栈条目默认是16位的,不过也可以把32位的值放在栈上(会使用两个栈条目)。
要简化16位程序的编码,可以包含Irvine16.inc文件。它会往汇编流中插入下面这些语句,用于定义内存模式和调用约定、分配栈空间、启用32位寄存器,还会把.EXIT指令重新定义为exit:
.MODEL small,stdcall
.STACK 200h
.386
exit EQU <.EXIT>
二、MS-DOS函数调用(INT 21h)
MS-DOS提供了很多便于在控制台显示文本的函数,这些函数都属于通常所说的INT 21h MS-DOS函数调用。这个中断大约支持200种不同的函数,通过放在AH寄存器里的函数编号来识别。
部分函数要求把输入参数的32位地址存到DS:DX寄存器中。DS是数据段寄存器,通常会设置为程序的数据区。要是因为某些原因不是这样,就可以用SEG运算符把DS设置为传给INT 21h的数据所在的段。示例代码如下:
.data
inBuffer BYTE 80 DUP(?)
.code
mov ax,SEG inBuffer
mov ds,ax
mov
16位MS-DOS编程核心详解
超级会员免费看
订阅专栏 解锁全文
1515

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



