资源描述
汇编语言实验指引书
目 录
实验一 DEBUG启动及其基本命令使用……………………………..2
实验二 内存操作数及寻址办法…………………………………………….6
实验三 汇编语言程序调试与运营……………………………………….8
实验四 查表程序设计………………………………………………………10
实验五 系统功能调用………………………………………………………12
实验六 循环程序设计………………………………………………………13
实验七 分支程序设计………………………………………………………15
实验八 子程序设计…………………………………………………………18
实验九 综合程序设计………………………………………………………20
附录 实验报告……………………………………………………………21
实验一 DEBUG启动及其基本命令使用
一.实验目:
掌握DEBUG 基本命令及其功能
二.实验内容:
DEBUG是专门为汇编语言设计一种调试工具,它通过步进,设立断点等方式为汇编语言程序员提供了非常有效调试手段。
1、DEBUG程序启动
在DOS提示符下,可键入命令:
C>DEBUG[d:][path][文献名][ 参数1][参数2]
其中文献名是被调试文献名称,它须是执行文献(EXE),两个参数是运营被调试文献时所需要命令参数,在DEBUG程序调入后,浮现提示符“-”,此时,可键入所需DEBUG命令。
在启动DEBUG时,如果输入了文献名,则DEBUG程序把指定文献装入内存。顾客可以通过DEBUG命令对指定文献进行修改、显示和执行。如果没有文献名,则是以当前内存内容工作,或者用命名命令和装入命令把需要文献装入内存,然后再用DEBUG命令进行修改、显示和执行。
2、DEBUG重要命令
(1) 汇编命令A,格式为:
-A[地址]
该命令从指定地址开始容许输入汇编语句,把它们汇编成机器代码相继存储在从指定地址开始存储器中。
(2) 反汇编命令U,有两种格式:
1)-U[地址]
该命令从指定地址开始,反汇编32个字节,若地址省略,则从上一种U命令最后一条指令下一种单元开始显示32个字节。
2)-U范畴
该命令对指定范畴内存单元进行反汇编,例如:
-U 04BA:0100 0108或 –U 04BA:0100 L9
此二命令是等效。
(3) 运营命令G,格式为:
-G [=地址1][地址2[地址3。。。]]
其中地址1规定了运营起始地址,背面若干地址均为断点地址。
(4) 追踪命令T,有两种格式:
1)逐条指令追踪:
-T[=地址]
该命令从指定地址起执行一条指令后停下来,显示寄存器内容和状态值。
2)多条指令追踪:
-T[=地址][值]
该命令从指定地址起执行n条命令后停下来,n由[值]拟定。
(5) 显示内存单元内容命令D,格式为:
-D[地址]或-D[范畴]
(6) 修改内存单元内容命令E,它有两种格式:
1)用给定内容代替指定范畴单元内容:
-E地址 内容表
例如:-E :0100 F3 “XYZ” 8D
其中F3,“X”“Y”“Z”和8D各占一种字节,用这五个字节代替原内存单元:0100到0104内容,“X”“Y”“Z”将分别按它们ASCII码值代入。
2)逐个单元相继地修改:
-E地址
例如:-E 100:
18E4:0100 89.78
此命令是将原100号单元内容89改为78。78是程序员键入。
(7) 检查和修改寄存器内容命令R,它有三种方式:
1)显示CPU内部所有寄存器内容和标志位状态;格式为:-R
R命令显示中标志位状态含义如下表所示:
标 志 名
置 位
复 位
溢出Overflow(是/否)
OV
NV
方向Direction(减量/增量)
DN
UP
中断Interrupt(容许/屏蔽)
EI
DI
符号Sign(负/正)
NG
PL
零Zero(是/否)
ZR
NZ
辅助进位Auxiliary Carry(是/否)
AC
NA
奇偶Parity(偶/奇)
PE
PO
进位Carry(是/否)
CY
NC
2)显示和修改某个指定寄存器内容,格式为:
-R 寄存器名
例如打入:-R AX
系统将响应如下:
AX FIF4
:
表达AX当前内容为F1F4,此时若不对其作修改,可按ENTER键,否则,打入修改后内容,如:
-R BX
BX 0369
:059F
则BX内容由0369改为059F
3)显示和修改标志位状态,命令格式为:
-RF
系统将给出响应,如
OV DN EI NG ZR AC PE CY-
这时若不作修改可按ENTER键,否则在“-”号之后键入修改值,键入顺序任意。如
OV DN EI NG ZR AC PE CY-PONZDINV
(8) 命名命令N,格式为:
-N 文献名
此命令将文献名格式化在CS:5CH文献控制块内,以便使用L或W命令把文献装入内存进行调试或者存盘。
(9) 装入命令L,它有两种功能:
1)把磁盘上指定扇区内容装入到内存指定地址起始单元中,格式为:
-L 地址 驱动器 扇区号 扇区数
2)装入指定文献,格式为:
-L [地址]
此命令装入已在CS:5CH中格式化文献控制块所指定文献。
在用L命令前,BX和CX中应包括所读文献字节数。
(10)写命令W,有两种格式:
1)把数据写入磁盘指定扇区:
-W 地址 驱动器 扇区号 扇区数
2)把数据写入指定文献中:
-W [地址]
此命令把指定内存区域中数据写入由CS:5CH处FCB所规定文献中。在用W命令前,BX和CX中应包括要写入文献字节数。
(11)退出DEBUG命令Q,该命令格式为
Q
它退出DEBUG程序,返回DOS,但该命令自身并不把在内存中文献存盘,如需存盘,应在执行Q命令前先执行写命令W。
三.实验规定:
用汇编语言编写一种计算“3+5”加法程序
四.实验报告:
写出在DEBUG状态下编写、运营程序过程以及调试所中遇到问题是如何解决,并对调试过程中问题进行分析,对执行成果进行分析。
实验二 内存操作数及寻址办法
一.实验目:
1、纯熟掌握DEBUG惯用命令,学会用DEBUG调试程序。
2、掌握数据在内存中存储方式和内存操作数几种寻址方式。
3、掌握简朴指令执行过程。
二.实验内容:
1、设堆栈指针SP=H,AX=3000H,BX=5000H;请编一程序段将AX和BX内容进行互换。请用堆栈作为两寄存器互换内容中间存储单元,用DEBUG调试程序进行汇编与调试。
2、设DS=当前段地址,BX=0300H,SI=0002H;请用DEBUG命令将存储器偏移地址300H~304H持续单元顺序装入0AH,0BH,0CH,0DH,0EH。在DEBUG状态下送入下面程序,并用单步执行办法,分析每条指令源地址形成过程,当数据传送完毕时,AX中内容是什么。
程序清单如下:
MOV AX,BX
MOV AX,0304H
MOV AX,[0304H]
MOV AX,[BX]
MOV AX,0001[BX]
MOV AX,[BX][SI]
MOV AX,0001[BX][SI]
HLT
三.实验规定:
1、实验前要做好充分准备,涉及汇编程序清单、调试环节、调试办法,以及对程序成果分析等。
2、本实验只规定在DEBUG调试程序状态下进行,涉及汇编程序、调试程序和执行程序。
四.实验报告:
1、程序阐明。阐明程序功能、构造。
2、调试阐明。涉及上机调试状况、上机调试环节、调试所遇到问题是如何解决,并对调试过程中问题进行分析,对执行成果进行分析。
3、写出源程序清单和执行成果。
实验三 汇编语言程序调试与运营
一.实验目
1.学习数据传送和算术运算指令用法
2.熟悉在PC机上编辑、汇编、连接、调试和运营汇编语言程序过程。
二.实验内容
将两个多位十进制数相加,规定被加数和加数均以ASCII码形式各自顺序存储在DATA1和DATA2为首5个内存单元中,成果送回DATA1处。
三.程序框图
图3.1 两个多位十进制相加程序流程图
四.调试环节
1.编辑源程序,建立一种后来缀为 .ASM文献.
2.汇编源程序,检查程序有否错误,有错时回到编辑状态,修改程序中错误行。无错时继续第3步。
3.连接目的程序,产生可执行程序。
4.DEBUG调试可执行程序,记录数据段内容。
5.在操作系统状态下,运营程序,并记录屏幕显示内容。
被 加 数
加 数
屏 幕 显 示 内 容
12732
06815
10732
43691
65087
17631
五.思考题
1. 将上述程序改为5位数相加,成果为6位数加法程序。(需考虑进位)
2. 简朴论述上机环节,调试办法。
实验四 查表程序设计
一.实验目:
1、纯熟掌握编写汇编语言原程序基本办法和基本框架。
2、掌握查表法和查表指令XLAT。
3、纯熟使用DEBUG调试程序。
二.实验内容:
用查表办法将一位十六进制数转换成与它相应ASCII码,并将成果存储到ASCI单元中。
三.编程提示:
既然指定用查表办法,那么一方面要建立一种表TABLE。咱们在表中按照十六进制数从小到大顺序放入她们相应ASCII码值。
DATA SEGMENT
TABLE DB 30H,31H,32H,33H,34H,35H,36H,37H
DB 38H,39H,41H,42H,43H,44H,45H,46H
HEX DB X ;X为待转换十六进制数
ASCI DB ?;存储转换后ASCII码
DATA ENDS
四.实验规定:
实验前要做好充分准备,涉及汇编程序清单、调试环节、调试办法,以及对程序成果分析等
五.实验报告:
1、程序阐明。阐明程序功能、构造。
2、调试阐明。涉及上机调试状况、上机调试环节、调试所遇到问题是如何解决,并对调试过程中问题进行分析,对执行成果进行分析。
3、写出源程序清单和执行成果。
实验五 系统功能调用
一.实验目:
1、掌握接受键盘数据办法,并理解将键盘数据显示时,须转为ASCII码原理。
2、掌握DOS功能调用编程办法。
二.实验内容:
试编写一种汇编语言程序,规定对键盘输入小写字母用大写字母显示出来。
三.编程提示:
运用DOS功能调用INT21H1号功能从键盘输入字符和2号功能在显示屏上显示一种字符。
四.实验规定:
实验前要做好充分准备,涉及汇编程序清单、调试环节、调试办法,以及对程序成果分析等。
五.实验报告:
1、程序阐明。阐明程序功能、构造。
2、调试阐明。涉及上机调试状况、上机调试环节、调试所遇到问题是如何解决,并对调试过程中问题进行分析,对执行成果进行分析。
3、写出源程序清单和执行成果。
name turn
d_seg segment para
a db 'please input(a^z):','$'
b db 0ah,0dh,'$'
d_seg ends
s_seg segment stack
db 90h dup(?)
s_seg ends
c_seg segment
assume cs:c_seg,ds:d_seg,ss:s_seg
start: mov ax,d_seg
mov ds,ax
mov dx,offset a
mov ah,09h
int 21h
mov ah,01h
int 21h
mov bl,al
sub bl,20h
mov dx,offset b
mov ah,09h
int 21h
mov dl,bl
mov ah,02
int 21h
mov ah,4ch
int 21h
c_seg ends
end start
实验六 分支程序设计
一.实验目:
1、掌握分支程序构造。
2、掌握分支程序设计、调试办法。
二.实验内容:
假设有一组数据:5,-4,0,3,100,-51,请编一程序,判断:每个数不不大于0,等于0,还是不大于0;并输出其判断成果。
即: 1 当x>0
y= 0 当x=0
-1 当x<0
三.实验规定:
实验前要做好充分准备,涉及汇编程序清单、调试环节、调试办法,以及对程序成果分析等。
四.编程提示:
1、一方面将原始数据装入起始地址为XX字节存储单元中。
2、将判断成果以字符串形式存储在数据区中,以便在显示输出时调用。
3、其中判断某些可采用CMP指令,得到一种分支构造,分别输出“y=0”,“y=1”,“y=-1”。
4、程序中存在一种循环构造,循环6次,调用6次分支构造后结束。
五.思考题:
程序中原始数据是以如何形式存储在数据区中?请用DEBUG调试程序观测并分析。
六.实验报告:
1、程序阐明。阐明程序功能、构造。
2、调试阐明。涉及上机调试状况、上机调试环节、调试所遇到问题是如何解决,并对调试过程中问题进行分析,对执行成果进行分析。
3、画出程序框图。
4、写出源程序清单和执行成果。
5、回答思考题。
实验七 循环程序设计
一.实验目
1. 掌握循环程序设计办法(两重性循环构造)
2. 掌握对的分派与使用寄存器。
二.实验内容与规定
以GRADE为首地址10个字数组中保存有学生成绩。建立一种10个字RNAK 数组,并依照GRADE中学生成绩将学生名次填入RANK数组中(提示:一种学生名次等于成绩高于等于该学生人数加1)。
寄存器分派状况阐明如下:
AX 存储当前被测学生成绩
BX 存储当前被测学生相对地址指针
CX 内循环计数值
DX 存储当前被测学生名次计数值
SI 内循环测试时地址指针
DI 外循环计数值
三.程序框图
图7.1 程序框图
四.思考题
1.改为通过键盘输入方式提供学生成绩。
2.将成绩与名次在屏幕上显示。
3.指出控制循环程序办法,并划分该程序四个构成某些
实验八 子程序设计
一.实验目
1.掌握程序设计办法,合理划分层次
2.掌握子程序调用与返回办法
3.理解子程序嵌套与递归
二.实验内容与规定
编制一程序,规定键入一种班学生成绩,并存储于50字ERADE数组中,然后依照ERADE中成绩,把学生名次填入50字RANK数组中,再按学号顺序把名次从终端上显示出来。
提示:
① 程序MAIN
功能:依照输入学生成绩,计算并显示出学生名次。
② 程序INPUT
功能:接受一种班级学生成绩,各成绩之间用空格隔开。
③ 程序RANKP
功能:计算一种班级学生名次。(可参照循环程序(一)中程序段)
④ 程序OUTPUT
功能:输出(显示)一种班级学生名次
⑤ 程序DECIBIN
功能:十进制转换二进制,存入BX
⑥ 程序BINDEC
功能:十进制转换二进制,并在屏幕上显示。
⑦ 程序DEC_DIV
功能:BX内容除以CX内容,并在屏幕上显示一位商。
三.程序框图:
图8.1 程序流程图
四.环节
1.自编主程序与子程序。
2.输入本班级某门基本课成绩。
五.思考题
1.写出4位BCD码转二进制数算法。
2.写出AX中进二制数转BCD码算法。
3.将上述子程序构造改为模块化程序设计。
实验九 综合程序设计
一.实验目:
1、掌握分支、循环、子程序调用、DOS功能调用等基本程序构造。
2、掌握综合程序编制及调试办法。
二.实验内容:
设有十个学生成绩分别是76,69,84,90,73,88,99,63,100和80分。试编制一种子程序,记录低于60分,60~69分,70~79分,80~89分,90~99分和100分人数,并输出显示记录成果。
三.编程提示:
1、成绩分等某些采用分支构造,记录所有成绩则用循环构造完毕,显示记录成果采用DOS功能调用。
2、记录学生成绩和显示记录成果两某些内容用子程序构造来完毕。
四.实验报告:
1、程序阐明。阐明程序功能、构造。
2、调试阐明。涉及上机调试状况、上机调试环节、调试所遇到问题是如何解决,并对调试过程中问题进行分析,对执行成果进行分析。
3、画出程序框图。
4、写出源程序清单和执行成果。
5、体会和意见。
展开阅读全文