DOS系统功能调用实验:子程序设计与实现

需积分: 10 0 下载量 142 浏览量 更新于2024-08-25 收藏 315KB PPT 举报
"该资源是关于子程序设计的创新实验,主要关注于UCOSII操作系统环境下的程序设计。实验目标包括理解BIOS和DOS系统功能调用,掌握数字转换以及子程序的调用和返回机制,同时也涉及子程序的嵌套与递归。实验内容包括编写一个程序,接收键盘输入的4位十进制数,将其转换为二进制,再以十六进制形式显示。实验采用了子程序结构,包括数据输入及转换子程序、十六进制显示子程序和回车换行子程序。在数据输入子程序中,通过DOS的1号功能调用来获取键盘输入的ASCII码,然后进行转换和计算。主程序部分则调用这些子程序完成整个流程。" 在编程实践中,子程序结构是组织代码的重要方式,它可以提高代码的可读性和复用性。在这个实验中,子程序设计主要包括以下知识点: 1. **子程序定义**:子程序通过`PROC`关键字声明开始,后面可以指定其属性,如`NEAR`或`FAR`。`NEAR`表示子程序与调用者在同一代码段内,调用效率较高;`FAR`则表示跨段调用,适用于较大范围的调用。 2. **子程序调用与返回**:调用子程序通常使用`CALL`指令,子程序执行完毕后通过`RET`指令返回。实验中的`decin`、`crlf`和`hexdisp`等子程序就是通过这种方式被调用和执行的。 3. **DOS系统功能调用**:实验中使用了DOS的01号功能调用来获取键盘输入,1号功能调用的设置是`mov ah, 1`,然后执行`int 21h`,得到的ASCII码存储在`AL`寄存器中。 4. **数据转换**:实验中涉及十进制到二进制的转换,以及ASCII码到数字的转换。十进制数转换为二进制通常通过逐位乘以10并累加的方式完成,ASCII码转换为数字则需要减去'0'的ASCII值(即30h)。 5. **循环与条件判断**:在数据输入子程序中,通过`cmp`指令比较`AL`寄存器的值来判断输入是否在0-9范围内,利用`jle`和`jg`指令进行跳转,实现循环和退出条件。 6. **主程序调用子程序**:主程序调用了一系列子程序完成任务,例如先显示提示信息,然后调用`decin`进行数据输入和转换,接着调用`crlf`进行回车换行,再调用`hexdisp`显示十六进制结果,最后跳转回`next`标签重复这一过程。 7. **寄存器使用**:实验中使用了`DX`, `AH`, `AL`, `BX`, `CX`等寄存器来存储数据和控制流程。例如,`BX`寄存器用于存储转换后的二进制数,`CX`在数据转换过程中作为计数器。 通过这个实验,学习者可以深入理解子程序的结构和功能,掌握基本的DOS系统调用,以及数字转换和子程序调用的关键技术,这些对于理解和编写更复杂的程序至关重要。