辽宁工程技术大学上机实验报告
课程名称 实验题目 院系 姓名 计算机硬件基础 综合程序设计(一) 软件学院 专业 学号 软件工程 班级 实验日期 成绩 优 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.系统功能调用的步骤: (1) 在AH寄存器中设置系统功能调用号 (2) 在指定寄存器中设置入口参数 (3) 用中断调用指令(INT i8)执行功能调用 (4) 根据出口参数分析功能调用执行情况 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 个练习,完成 2 个。 【练习1】编写主程序调用一个过程,实现将两个非压缩BCD码转换为一个压缩BCD码,并用字符显示功能和字符串显示功能完成在屏幕上显示一个字符串“Hello World!”的功能。
实验 内容 实验 内容 (续) (1)实现方法 在数据段中存入一个字符串“Hello World!”,调用09H显示字符串。编写子程序BCD完成将两个非压缩BCD码转换为一个压缩BCD码的功能。 (2)程序代码 DATA SEGMENT NBCD1 DB 08H NBCD2 DB 06H STRING DB 'HELLO WORLD','$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX CALL BCD MOV AX,SEG STRING MOV DS,AX MOV DX,OFFSET STRING MOV AH,09H INT 21H MOV AH,4CH INT 21H BCD PROC PUSH AX PUSH BX PUSH CX PUSH DX PUSHF MOV AL,NBCD2 MOV CL,4 SHL AL,CL ADD NBCD1,AL RET PUSHF POP DX POP CX POP BX POP AX BCD ENDP CODE ENDS
END START 【练习2】在内存建立一个表TABLE,其中存放20个字节型无符号数,从键盘输入一个数X(一位数),查找该数X在TABLE中是否存在,若存在,则在RESULT单元存入1,否则存入-1。 (1)实现方法 在数据段定义20个数,使用循环,从第一个字符开始扫描,如果找到相等的数将RESULT单元置为1,退出循环,如果没找到,继续寻找下一个,如果走到左后一个都没找到,将RESIULT但单元置为-1. (2)程序代码 DATAS SEGMENT TABLE DB '965487213’,’cdeghijabfklm’ RESULT DB ? DATAS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS START: MOV AX,DATAS MOV DS,AX MOV AH,01H INT 21H CALL FIND MOV AH,4CH INT 21H FIND PROC NEAR LEA SI,TABLE MOV CX,20 TAB: MOV BL,AL XOR AL,[SI] JZ EQUAL JNZ UNEQUAL EQUAL: MOV RESULT,1 MOV CX,0 JMP EXIT2 UNEQUAL:ADD SI,1 MOV AL,BL MOV DX CX XOR DX,1 JZ EQUAL1
相关推荐: