汇编语言程序设计:DOS系统功能调用与程序结束
版权申诉
16 浏览量
更新于2024-07-03
收藏 670KB PPT 举报
"该资源是关于计算机原理的第三章,主要讲解汇编语言程序设计,内容涉及DOS下的程序结束返回、直接执行过程、程序模块的组织结构以及数据块传送的注意事项。"
在汇编语言程序设计中,程序的结束和返回到DOS是一个重要的环节。通常,程序在完成其功能后需要正确地通知操作系统并退出。在提供的内容中,可以看到三种不同的方法来结束程序并返回DOS。
第一种方法是在代码段结束之前,通过调用DOS的4CH号系统功能调用来结束程序。`MOV AH,4CH` 设置了AH寄存器的值为4CH,这是DOS系统调用中表示程序结束的常量,然后`INT 21H` 引发中断21H,执行这个系统调用,使得程序返回到DOS环境。
第二种方法是DOS下的直接执行过程,使用远过程(PROCFAR)定义,通过压栈来保存返回地址。`PUSHDS` 压入当前的数据段(DS)寄存器的值,接着`MOV AX, 0` 和`PUSH AX` 用于压入0作为偏移地址,形成完整的返回地址(CS:IP)。最后,`RET` 指令执行远返回,从栈顶恢复CS:IP,从而结束程序。
第三种方法是IBM推荐的形式,它包括数据段(DATASEGMENT)、堆栈段(STACKSEGMENT)和代码段(CODESEGMENT)的声明,并使用ASSUME指令指定每个段寄存器对应的段。在程序开始时,通过`PUSH DS` 和`MOV AX, 0` `PUSH AX` 保护PSP段地址和偏移0地址,然后在程序结束后使用`RET` 返回。
在程序设计中,数据块的传送也是常见的操作。当源数据区和目标数据区有地址重叠时,需要特别注意,以免在传送过程中破坏数据。如图3.8所示,如果源数据区位于目标数据区之前,应该先传送源数据区的尾部;反之,如果源数据区位于目标数据区之后,应先传送头部。判断源和目标的前后关系,通常根据它们在内存中的相对位置来确定。
此外,图3.9提供了例3.13的详细情况,进一步阐述了数据块传送时的处理策略,确保在重叠区域不发生错误。在实际编程中,这类问题的解决对于编写安全、可靠的程序至关重要。理解这些概念和技巧对于深入理解计算机原理和汇编语言编程具有重要意义。
2022-06-02 上传
2021-09-17 上传
107 浏览量
2022-05-08 上传
2022-06-17 上传
2022-06-17 上传
113 浏览量
2022-06-17 上传
wxg520cxl
- 粉丝: 25
- 资源: 3万+
最新资源
- EJB3.0-黎活明
- 张孝祥正在整理Java就业面试题大全.doc
- GDB中文档 使用手册PDF
- ARM 应用系统开发详解──基于 S3C4510B 的系统设计.pdf
- 了解ASP.NET底层架构
- BestPracticesWebAppDevDomino8.pdf
- 计算机操作系统(汤子瀛)习题答案
- Oracle 应用服务器 10g 第 3 版:面向 Java EE (10.1.3.1.0) 开发人员的教程
- informix连接
- C#完全手册C#完全手册
- DB2 技巧.doc
- 中小型企业局域网组网方案
- 单片机-#define XBYTE ((unsigned char volatile xdata *) 0)
- Struts中文API
- 北大青鸟Y2_.NET机试题
- skype api pdf 格式