计算机硬件基础实验报告3
时间:2020-09-21 12:45:42 来源:工作范文网 本文已影响 人
辽宁工程技术大学上机实验报告
课程名称
计算机硬件基础
实验题目
综合程序设计(一)
院系
软件学院
专业
软件工程
班级
姓名
学号
实验日期
2014-11-19
实验
目的
1.熟练掌握子程序的结构。
2.掌握子程序设计的思想、方法及上机调试过程。
3.熟练掌握系统功能调用的作用。
4.掌握系统功能调用的思想、方法。
实验
准备
1.8086/8088汇编语言指令及伪指令的用法
2.子程序设计的思想和方法
3.DOS和BIOS中断调用是机器及操作系统提供的中断调用功能
4.系统功能调用的步骤:
5.DOS利用21H号中断提供给用户近百个系统功能,主要包括设备管理、目录管理和文件管理三个方面的功能
6.BIOS也以中断服务程序的形式,向程序员提供系统的基本输入输出程序BIOS功能更加基本,且与操作系统无关,当DOS没有启动或不允许使用DOS功能调用时,可以使用BIOS功能调用
实验
进度
本次共有 2 个练习,完成 2 个。
实验
内容
【练习1】编写主程序调用一个过程,实现将两个非压缩BCD码转换为一个压缩BCD码,并用字符显示功能和字符串显示功能完成在屏幕上显示一个字符串“Hello World!”的功能。
程序框图
开始
开始
DI、SI初始化
调用子程序
显示 字符串STRING内容
结束
源程序清单:
DATA SEGMENT
BCD1 DB 03H
BCD2 DB 07H
STRING DB 'Hello World!','$'
DATA ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
CALL CHANGE
MOV AH,4CH
INT 21H
CHANGE PROC
MOV AL,BCD2
MOV CL,4
SHL AL,CL
ADD BCD1,AL
MOV AX,SEG STRING
MOV DS,AX
MOV DX,OFFSET STRING
MOV AH,09H
INT 21H
RET
CHANGE ENDP
CODES ENDS
END START
MOV AX,DAtA
MOV DS,AX
MOV SI,OFFSET TABLE
MOV CX,20
MOV DX,OFFSET BUFFER
MOV AH,0AH
INT 21H
A: MOV Bl,[SI]
XOR AL,Bl
TEST AL,01H
JE B
INC SI
LOOP A
MOV AL,-1
MOV RESULT,AL
JMP OVER
B: MOV AX,1
MOV RESULT,AL
OVER: MOV AH,4CH
INT 21H
CODE ENDS
END START
【练习2】在内存建立一个表TABLE,其中存放20个字节型无符号数,从键盘输入一个数X(一位数),查找该数X在TABLE中是否存在,若存在,则在RESULT单元存入1,否则存入-1
程序框图
开始
开始
SI、DI、CX初始化
DI-1
D送AL
DI+1
AL+[DI]
CX=0
1送RESULT
N
-1送RESULT
Y
源程序清单:
DATAS SEGMENT
TABLE DB 1,2,3,5,5,6,7,8,9,10, 1, 2,5,6,8,7,4,9,3,0
RESULT DB ?
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODE,ES:DATAS
START:
MOV AX,DATAS
MOV ES,AX
MOV DI,OFFSET TABLE
CLD
MOV AH,01H
INT 21H
MOV CX,20
SUB AL,48
REPNE SCASB
CMP CX,0
JG L
MOV RESULT,-1
JMP LAST
L:MOV RESULT,1
LAST:MOV AH,4CH
INT 21H
CODES ENDS
END START
实验
分析
日
【练习1】
(1)保存运行生成exe文件
(2)进行调试,反汇编命令U查看,DS=0770
(3)用D指令查看数据段的内容,BCD1 =03H BCD2= 07H.
(4)结束程序
(5)用D指令查看数据段的内容,压缩后为73
【练习2】
(1)保存运行生成exe文件
(2)进行调试,用反汇编命令U进行反汇编
3)用D指令查看数据段的内容,20个字节型无符号数为01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20
3)输入一个字符
(4)结束程序
4)用D指令查看数据段的内容,查找数字4存在在21位显示01
实验
总结
【实验1】
1.存在的问题
HELLO WORD 在输入P后显示
2.实验结论
通过汇编语言,基于DOS系统完成了两个非压缩BCD改为一个压缩BCD
3.收获和体会
通过这次实验,掌握了DOS系统共功能调用的方法,学会了基于DOS系统完成了两个非压缩BCD改为一个压缩BCD的方法
【实验2】
1.存在的问题
出现INT 21H 就以为程序结束,忽略 MOV AH 01H,以为程序出错后来发现了问题
2.实验结论
实现了数值比较REPNE SCASB
3.收获和体会
学会查看寄存器和存储器,学会了REPNE SCASB的使用,对汇编语言的了解更进一步。
教师
评语