当前位置:文档之家› 汇编语言综合实验报告

汇编语言综合实验报告

综合性设计性实验报告
班级:计算机科学与技术专2014 级 4 班实验项目名称:循环显示1 0 个数字符号
实验项目性质:综合性
实验所属课程:计算机组成原理与汇编语言
实验室(中心):实验室(4 0 7 )
指导教师:
实验完成时间: 2016 年 5 月 27
一、实验目的
(1)掌握子程序的定义和调用方法。

(2)掌握子程序的编写方法及参数传递的方法。

二、实验内容及要求
本实验内容主要是编写一个显示过程汇编程序,使得在屏幕上依次显示10 个数字符号,每一行13 个字符,然后循环进行显示。

实验要求是在代码段中编写这个过程,并要求用主程序调用该过程。

三、实验设备及软件
实验室(407)电脑一台以及编译器DEBUG MASM LINK软件。

四、设计方案
㈠题目(老师给定或学生自定)
循环显示10个字符
㈡设计的主要思路
首先,先定义一个数据段和代码段。

数据段内定义一个名称为prl大小为一个字节的字符串,即本人学号。

代码段内首先借助段寻址伪指令ASSUME规定好代码段和数据段分别在段寄存器CS、DS。

然后start内将数据段段地址放入DS中。

接下来定义一个子程序dgdsp,其实现的功能主要是先将bl(字符数目控制)清零,dl(字符范围0-9)赋值为字符0的ascll码。

然后定义一个lp循环,循环内调用DOS2号功能显示字符,并bl、dl自增,接着比较dl与字符9的ascll码值的大小,若大于就将dl重置为字符0的ascll码。

若小于则跳转到next循环,next循环中主要比较bl与13的大小,若小于则跳转到lp,若大于就进入bbb子程序。

bbb子程序主要是先保护DX将其压栈,然后使用DOS9号功能显示prl字符串,最后将DX出栈。

然后进入next循环将DX压栈,分别使用DOS0a、02号功能将dl输入显示,最后将DX出栈。

分别将bl、al清零,最后跳转到lp子程序继续循环执行。

流程图如下:
㈢主要功能
在屏幕上依次显示10 个数字符号(0-9),每一行13 个字符,然后换行,最后循环进行显示。

五、主要代码
data segment
pr1 db " 631406010404$";
data ends
code segment
assume cs:code ,ds:data
start:mov ax,data
mov ds,ax
call dgdsp
mov ah ,4ch
int 21h
dgdsp proc
xor bl ,bl
mov dl ,30h
lp: mov ah,02h
int 21h
inc dl
inc bl
cmp dl ,39h
jbe next
mov dl ,30h
next:
cmp bl ,13
jb lp
int 21h
call bbb
push dx
mov dl ,0ah
mov ah ,02h
int 21h
mov dl ,0dh
mov ah ,02h
int 21h
pop dx
xor bl ,bl
mov ah ,0bh
int 21h
or al ,al
jnz next1
jmp lp
next1: ret
dgdsp endp
bbb proc
push dx
lea dx, pr1
mov ah, 9
int 21h
pop dx
ret
bbb endp
code ends
end start
六、测试结果及说明
七、实验体会
从这次试验中,我收获了很多。

首先,为了能完成这个实验,我熟悉了DEBUG 的常用命令,大概掌握了DEBUG 下运行简单汇编语言源程序的过程及方法以及DEBUG 调试汇编语言源程序的过程及方法。

为了更好的使用最常用的DOS 功能调用,我也了解了关于DOS基本的功能。

其次,在实验的过程中,遇到了许多不懂的知识,我也认真思考,查阅相关的资料,确实有很难理解的地方,我也积极向老师同学询问。

在处理问题的过程中老师很热心解决我所遇到的问题,同学也给予了我很大的帮助。

最后,在整个程序的编程中我了解了汇编语言编写程序的基本过程,熟悉了汇编语言的大概框架。

但是我知道在这么少的学习时间内想要学好汇编语言是不可能的,所以我也会在接下来的时间去熟悉汇编语言的整个编写流程,为更好地学习汇编语言打下好的基础。

相关主题