计算机硬件基础实验报告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的使用,对汇编语言的了解更进一步。

教师

评语