实验三 DOS系统功能调用
一、实验目的
1.熟练掌握子程序的结构。
2.掌握子程序设计的思想、方法及上机调试过程。 3.熟练掌握系统功能调用的作用。 4.掌握系统功能调用的思想、方法。
二、实验准备知识
1.8086/8088汇编语言指令及伪指令的用法 2.子程序设计的思想和方法
(1)子程序是功能相对独立的程序段,它可以实现源程序的模块化,简化源程序结构,提高编程效率
(2)子程序定义:利用过程伪指令PROC和ENDP,格式如下: 过程名
PROC [NEAR|FAR]
;过程体
??
ENDP
过程名
其中:可选的参数指定过程的调用属性。没有指定过程属性,则采用默认属性NEAR。
NEAR属性:段内近调用,子程序只能被相同代码段的其他程序调用 FAR属性:段间远调用,子程序可以被相同或不同代码段的程序调用 (3)主程序(调用程序)调用子程序(被调用程序):利用CALL指令 (4)子程序返回主程序:利用RET指令
(5)保护现场:子程序开始处应该保护子程序中使用的寄存器(通常利
用堆栈),子程序返回前相应进行恢复。
(6)子程序中对堆栈的压入和弹出操作通常成对使用,以保持堆栈的平衡。
(7)子程序允许嵌套和递归
(8)处理好子程序与主程序之间的参数传递问题:利用寄存器、内存缓冲区及堆栈。
3.DOS和BIOS中断调用是机器及操作系统提供的中断调用功能 4.系统功能调用的步骤:
⑴ 在AH寄存器中设置系统功能调用号
⑵ 在指定寄存器中设置入口参数
⑶ 用中断调用指令(INT i8)执行功能调用 ⑷ 根据出口参数分析功能调用执行情况
5.DOS利用21H号中断提供给用户近百个系统功能,主要包括设备管理、目录管理和文件管理三个方面的功能
(1)输入一个字符,01H号功能调用 (2)输出一个字符,02H号功能调用 (3)输入一个字符串,0AH号功能调用 (4)输出一个字符串,09H号功能调用 注意它们的入口参数及出口参数
6.BIOS也以中断服务程序的形式,向程序员提供系统的基本输入输出程序
BIOS功能更加基本,且与操作系统无关,当DOS没有启动或不允许使用DOS功能调用时,可以使用BIOS功能调用
(1)键盘I/O中断调用——INT 16H (2)显示器输入中断调用——INT 10H 注意它们的入口参数及出口参数
三、实验性质
本实验为综合性实验。
四、实验学时
本实验学时为2学时。
五、实验内容
1 .编写主程序调用一个过程,实现将两个非压缩BCD码转换为一个压缩BCD码,并用字符显示功能和字符串显示功能完成在屏幕上显示一个字符串“Hello World!”的功能。
2.在内存建立一个表TABLE,其中存放20个字节型无符号数,从键盘输入一个数X(一位数),查找该数X在TABLE中是否存在,若存在,则在RESULT单元存入1,否则存入-1。
六、实验要求
1.实验前要做好充分准备,包括程序框图,源程序清单,调试步骤,调试方法,以及对程序结果的分析等。
2.独立完成,严禁抄袭。 3.学会解决调试过程中的错误。
七、实验报告内容
1.画出程序框图,写出源程序清单及在DEBUG状态下运行程序的过程。 2.写出调试过程中遇到的问题是如何解决的,并对调试过程中的问题进行分析。
3.写出调试的指令及运行结果,并对执行结果进行分析。 4.收获及体会。
DSEG SEGMENT
TABLE DB 1,12,13,14,15,2,23,24,25,26,6,34,35,36,37,4,45,46,5,56 X DB ?
RESULT DB ? DSEG ENDS
ESEG SEGMENT ESEG ENDS
实验三 DOS系统功能调用



