汇编语言程序设计实验手册专科范文.docx
- 文档编号:7750398
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:26
- 大小:100.87KB
汇编语言程序设计实验手册专科范文.docx
《汇编语言程序设计实验手册专科范文.docx》由会员分享,可在线阅读,更多相关《汇编语言程序设计实验手册专科范文.docx(26页珍藏版)》请在冰豆网上搜索。
汇编语言程序设计实验手册专科范文
《汇编语言程序设计》
实验指导手册
编写:
熊书兴陶国武
南昌理工学院计算机系
2007-4
《汇编语言程序设计》
实验指导手册
《汇编语言程序设计》实验是学习本课程的每个考生必须要通过的一个重要的实践环节。
本指导手册依照我系各类计算机专科专业教学大纲,根据人民邮电出版社的《汇编语言程序设计》(梁发寅著)教材编写而成。
本指导手册共计有编有10个实验,在实际实验过程中可以按照实际教学进度情况加以增删。
每个实验都应做到:
1.做好上机实验的准备工作:
应考者对每个实验需要进行预习,了解相关内容和具体要求,熟悉上机操作步骤,学会相关系统软件的使用,掌握各种操作调试命令。
2.编写源程序:
按照实验题目的要求,应考者要事先独立完成汇编语言源程序的编写工作,并对源程序进行认真的静态检查,减少错误的发生。
3.完成实验报告:
做完上机实验,应考者要严格按照实验报告的格式要求写出实验报告。
实验报告的内容为:
实验名称、实验的目的、实验的内容和要求、实验步骤、实验结果并附上源程序清单和程序流程图。
实验一汇编语言上机环境
(一)实验目的
熟悉汇编语言上机环境
掌握汇编语言上机过程与步骤
(二)实验器材与实验准备
实验器材:
硬件:
微机一台
软件:
DOS或WIN98/2000/XP
MASM.EXE和LINK.EXE
实验准备:
cs1segment
assumecs:
cs1,ds:
cs1
start:
pushcs
popds
movah,0
int10h
leadx,str0
movah,9
int21h
movah,4ch
int21h
str0db'hello','$'
cs1ends
endstart
(三)实验内容和要求
1.建立汇编源程序文件
2.逐步汇编,连接生成可执行文件
3.运行生成的可执行文件
(四)实验步骤:
1.在记事本中编辑原文件
2.将MASM.EXE和LINK.EXE以及原文件拷贝在同一目录下
3.汇编原文件
4.连接目标文件
5.执行可执行文件
(五)实验结果分析
在生成可执行文件过程中,一共生成了多少个相关的文件,它们的作用分别是什么?
实验二DEBUG的使用
(一)实验目的
1、熟悉DEBUG程序中的命令,学会在DEBUG下调试运行汇编语言源程
序。
2、掌握8086/8088的寻址方式及多字节数据的处理方法。
(二)实验设备
硬件环境:
IBM-PC及其兼容机软件环境:
操作系统DOS3.0版本以上
调试程序DEBUG.COM
(三)实验内容和要求
实验内容:
1、利用DEBUG程序中的“E”命令,将两个多字节数“003F1AE7H”和
“006BE5C4H”分别送入起始地址为DS:
0200H和DS:
0204H两个单元中。
2、分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将DS:
0200H单元和DS:
0204H单元中的数据相加,并将运算结果存放在DS:
0208H单元中。
实验要求:
本次实验的内容均在DEBUG下完成,实现数据的装入、修改、显示;汇编语言程序段的编辑、汇编和反汇编;程序的运行和结果检查。
(四)预习要求
1、复习DOS启动方式和DOS有关命令的使用;
2、阅读本书后的附录,熟悉掌握DEBUG调试程序中的A、D、E、G、Q、
R、T、U命令的书写格式及功能;
3、复习寻址方式和相关的数据传送指令及算术运算指令。
(五)实验步骤
1、启动DOS操作系统
2、运行DEBUG.COM程序(若当前盘为C)
C>DEBUG↙
–;“(–”为DEBUG提示符,仅当屏幕出现该提示符后,才可输入DEBUG
命令)
3、用“A”命令编辑和汇编源程序
–A↙
186E:
0100MOVAX,[0200]
186E:
0103MOVBX,[0202]
186E:
0107ADDAX,[0204]
186E:
010BADCBX,[0206]
186E:
010FMOV[0208],AX↙
186E:
0112MOV[020A],BX↙
186E:
0116↙
4、用“U”命令反汇编验证源程序
–UCS:
0100↙
186E:
0100A10002MOVAX,[0200]
186E:
01038B1E0202MOVBX,[0202]
186E:
0107ADDAX,[0204]
186E:
010B131E0602ADCBX,[0206]
186E:
010FA30802MOV[0208],AX
186E:
0112891E0A02MOV[020A],BX
186E:
0116
注意:
检查源程序是否有错误,若有则返回到第3步用“A地址”命令进行修改,直到程序无错误。
DEBUG约定在其命令或源程序中所涉及到的数据均被看作十六进制数,其后不用“H”说明。
在DEBUG下,源程序中不能使用“标号”、“变量”和一些伪指令。
在DEBUG下,大小写不敏感。
5、程序未执行前,用“R”命令观察,相关寄存器的内容。
–R↙
如:
(AX)=,(BX)=,(SI)=,
(DI)=,(CS)=,(IP)=。
6、在程序未执行前,用“D”命令观察DS:
0200H,DS:
0204H、DS:
0208H
单元的内容
–D20020B↙
7、用“G”命令运行源程序
–G=1100116↙
8、再用“D”命令观察DS:
0200H~DS:
020BH字节单元中的内容
–D20020B↙
9、用“T”单步操作命令对源程序单步执行,观察AX、BX、CS、IP寄存器内容的变化,并与预计的结果相比较。
注意:
D命令显示内存数据,注意观察多字节数据在内存中的存放方式。
指令执行的时候,IP寄存器随着变化,注意观察。
(六)实验结果分析
1、程序运行结果:
(AX)=,(BX)=
DS:
0208H四字节单元的内容:
2、试用寄存器间接寻址方式编写程序段,完成上述程序段的功能。
(参考
下列程序流程图)
开始
SI←200H
DI←204H
BX←208H
AX←(SI)
DX←(SI)+2
AX←(AX)+(DI)
DX←(DX)+((DI)+2)
(BX)←(AX)
((BX)+2)←(DX)
结束
3、附加题目:
1.从DS:
0000H开始的5个16位带符号数分别记为x,y,z,v,w,用E命令初始化为:
540,1,-1,1080,0,试求w=(v-(x*y+z-540))/x
2.完成BX中1的个数的统计。
3.用串操作指令将DS:
0000开始20个字节初始化为:
0CCH。
并将这20
个字节的内容复制到其后的20个字节里。
实验三顺序程序设计
(一)实验目的
1、学习算术运算(加、减、乘、除)和扩展指令的用法;
2、掌握顺序程序结构和设计方法;
3、熟悉在PC机上建立、汇编、连接、调试和运行8086/8088汇编语言程序的过程。
(二)实验设备
硬件环境:
IBM-PC及其兼容机软件环境:
操作系统DOS3.0以上
编辑程序EDIT或其它编辑程序汇编程序MASM.EXE6.1X连接程序LINK.EXE
调试程序DEBUG.COM
(三)实验内容和要求
实验内容:
X、Y、Z、V均为字变量,在X、Y、Z、V字单元中存放是16位带符号数。
试编写汇编语言程序完成以下功能:
①计算表达式值(V–(X*Y+Z-720))/X;
②将上述表达式运算结果整数放在SUM1单元,余数放在SUM2单元。
要求:
①编写出完整的汇编语言源程序,根据题目的需要建立相应的逻辑段(如程序段、数据段)。
②可选用任何一种编辑程序在磁盘上建立一个源文件(扩展名为.ASM)。
③用宏汇编程序MASM对源文件进行汇编,生成目标文件(扩展名为.OBJ)。
④用连接程序LINK对目标文件进行连接,生成可执行程序.EXE文件。
⑤用DEBUG调试程序对源程序进行动态调试。
(四)预习要求
1、复习掌握8086指令系统相关指令,按实验内容和要求预先编写好源程序;
2、熟悉在宏汇编程序MASM环境下,对源程序进行编辑、汇编、连接、运行。
3、进一步熟练用DEBUG对源程序进行动态调试,掌握一些常用的调试命令和方法。
(五)实验步骤
1、启动DOS操作系统;
2、调用某种编辑程序,在磁盘上建立扩展名为ASM的源程序;
3、在DOS提示下,打入MASM调入宏汇编程序,用以对源程序进行汇编。
设在磁盘上已建立了一个EXAMPLE.ASM源程序,操作如下所示:
C:
>MASM↙
Microsoft(R)MacroAssemblerVersion5.00
Copyright(C)MicrosoftCorp1981-1985,1987.Allrightsreserved.Sourcefilename[.ASM]:
EXAMPLE↙
Objectfilename[EXAMPLE.OBJ]:
↙
Sourcelisting[NUL.LST]:
EXAMPLE↙Crossreference[NUL.CRF]:
EXAMPLE↙WarningSevere
ErrorsErrors
00
C:
>
汇编程序MASM需要和用户进行上述相关信息交互,以便进行汇编、生成相应的文件。
(a)提示用户输入需要汇编的源程序名;
(b)提示用户输入要建立的目标文件名,若默认括弧内的目标文件名,则可直接按回车;
(c)询问用户是否要建立汇编列表文件,若要,则打入文件名,否则按回车;
(d)询问用户是否要建立交叉索引文件,若要,则打入文件名,否则按回车。
注意:
仅当屏幕上显示无错误时(警告错误为“0”,严重错误为“0”),才可进行下一步骤连接,否则要根据提供源程序的错误行号和错误性质,重新对源程序进行修改、编辑和汇编。
4、在DOS提示符下,打入LINK调用连接程序,以便对目标文件进行连
接。
产生可执行EXE文件。
操作如下所示:
C:
>LINK
Microsoft(R)OverlayLinkerVersion3.60
Copyright(C)MicrosoftCorp1983-1987.Allrightsreserved.ObjectModules[.OBJ]:
EXAMPLE↙
RunFile[EXAMPLE.EXE]:
↙
ListFile[NUL.MAP]:
↙
Libraries[.LIB]:
↙
Warning:
NoSTACKsegmentTherewas1errordetected.C:
>
连接程序Link需要和用户进行上述相关信息交互,以便连接和生成相应的文件。
(a)提示用户输入需要连接的目标模块名;
(b)提示用户输入要建立的可执行文件名,若默认括弧内的可执行文件名,
则直接按回车;
(c)询问用户是否要建立地址分配文件,若要,则打入文件名,否则按回车;
(d)询问用户是否用到库文件,如果用户自己建立了库文件,则键入库文件名,否则按回车。
连接程序在连接过程发现有错,则会显示出错信息,用户应重新调用编辑程序对源程序进行修改,然后重新汇编、连接、直至无错。
但连接程序给出的无堆栈段的警告性错误并不影响程序的执行,所以,到此为止,连接过程已经结束,生成了有效的可执行程序。
5、在DOS提示符下,直接输入EXE文件名,运行程序。
C:
>EXAMPLE↙注意:
此时可能屏幕上没有任何显示,因为你没有让结果显示在屏幕上,但是你的计算结果必然在内存中。
所以应该采用DEBUG进行动态调试。
6、调用DEBUG程序对EXE文件进行动态调整,其方法和步骤与实验一相同。
C:
>DEBUGEXAMPLE.EXE
–
再可以用U,D,T,G等命令进行调试,其方法和步骤与实验一相同。
(六)实验结果分析
1、程序运行结果:
SUM1单元:
;SUM2单元:
。
2、若在X、Y、Z、V字单元中存放的均为无符号数,对相关十六位二进制数进行扩展,采用什么方法可以实现?
(七)编程提示
(a)执行16位IMUL指令运算结果乘积在DX、AX中。
(b)相加或相减的二个数长度一定要相同,注意使用CWD扩展指令将(AX)
→DX、AX。
(c)使用16位IDIV指令一定要将被除数放在DX、AX中。
实验四分支程序设计
(1)
(一)实验目的
1、掌握多路分支IF…ElseIF…Else程序结构和设计方法。
2、学会使用地址表和转移表法写多路分支程序。
(二)实验设备
同实验二
(三)实验内容和要求
实验内容:
在内存Score缓冲区中存放有100个学生的成绩数据,为无符号字节数。
假设学生成绩在[90,100]区间为优秀,在[80,90)区间为良好,在[70,80)区间为一般,在[60,70)区间为及格,在[0,60)区间为不及格,要求统计出不及格,及格,一般,良好和优秀的人数,分别送入Notpassed,Passed,Good,Better和Best字节单元。
1.用普通的跳转语句实现上述功能。
2.用地址表法和转移表实现。
(四)预习要求
同实验二
(五)实验步骤
同实验二
(六)实验结果分析
1、确认不及格,及格,一般,良好和优秀的人数总和是否为100。
(七)编程提示
a)用普通的跳转语句实现上述功能时,区分不及格,及格,一般,良好和优秀5个区间,是一个5分支的结构,至少需要4条跳转指令。
b)注意无符号数和有符号数使用跳转指令的区别。
c)用地址表和转移表法实现时,必须找出分数与地址表和转移表的偏移的对应关系。
实验五分支程序设计
(2)
(一)实验目的
1、熟悉与转移地址有关寻址方式的使用。
2、掌握多路分支程序的结构和设计方法。
(二)实验设备
同实验二
(三)实验内容和要求
实验内容
有一个管理软件可接受7个键盘命(分别为1、2、3、……、7),根据键入的命令分别转向PROCA、PROCB、……、PROCG标号处执行,分别显示星期一——星期天的英文字符串。
(要求用地址表法完成具有上述功能的多路分支程序的设计。
)
其它要求同实验二
(四)预习要求
同实验二
(五)实验步骤
同实验二
(六)实验结果分析
1、若改用转移表法来实现多路分支,程序如何修改?
2、若采用二路分支判别条件的方法来实现多路分支,程序的缺点是什么?
(七)编程提示
(a)在数据段建立地址表
Datasegment
TABDWPROCADWPROCBDWPROCC
DWPROCGDataEnd
(b)程序流程图
开始
输入键盘符→AL
N‘1’≤(AL)≤‘7’
Y
(AL)-30H⇒AL
(AL)*2→AX
地址表的首地址→BX
(BX)+(AX)→BX
转入对应程序段显示星期英文名
结束
实验六循环程序设计
(1)
(一)实验目的
1、掌握多重循环程序的结构和设计方法。
2、弄清直接排序的算法。
3、弄清冒泡排序方法。
(二)实验设备
同实验二
(三)实验内容和要求
实验内容:
在内存Score缓冲区中存放有100个学生的成绩数据,为无符号字节数。
设计程序完成如下功能:
①采用直接排序法对数组进行由小到大排序;
②采用冒泡排序方式对数组进行由大到小排序;
③将最高和最低的分数分别存放在MIN和MAX单元中。
(四)预习要求
同实验二
(五)实验步骤
同实验二
(六)实验结果分析
1、对数据进行排序对查找有什么意义?
(七)编程提示
(a)采用冒泡排序算法进行排序程序流程图
开始
数组首地址→BX
数组长度100-1→CH
(BX)→SI,(CH)→CL,((SI))→AL
(AL)≤((SI)+1)Y
N
(AL)((SI)+1)
(SI)+1→SI,(CL)-1→CL
N(CL)=0
Y
(AL)→(BX)
(BX)+1→BX,(CH)-1→CH
N(CH)=0
Y
结束
实验七循环程序设计
(2)
(一)实验目的
1、学习循环控制指令的用法。
2、弄清简单查找和复杂查找如折半查找等的编程方法。
3、掌握循环程序的结构和设计方法。
(二)实验设备
同实验二
(三)实验内容和要求
实验内容:
在内存Score缓冲区中存放有100个学生的成绩数据,为无符号字节数。
设计程序完成如下功能:
①根据用户输入的一个2位十进制数,作为查找对象,在该数组中查找,若找到则显示“Y”,若没找到则显示“N”。
②根据用户输入的一个2位十六进制数,作为查找对象,在该数组中查找,若找到则显示“Y”,若没找到则显示“N”。
(四)预习要求
同实验二
(五)实验步骤
同实验二
(六)实验结果分析
1、若在数据区Score内能够找到输入的数据,则在屏幕上显示“Found,”否则显示“Notfound”,程序如何修改?
2、如果分数已经从小到大进行了排序,采用折半查找应如何进行?
(七)编程提示
(a)在数据段定义100个无符号字节数。
(b)程序流程图
开始
调用DOS1号功能将数的
十位字符→AL
N‘0’≤(AL)≤‘9’
(AL)→AH
调用DOS21号功能将数
的个位字符→AL
N
‘0’≤(AL)≤‘9’
Y
(AH)∧0FH→AH
(AL)∧0FH→AL
(AH)*10+(AL)→AL
数组的首地址→BX
数组的长度100→CX
(AL)=?
((BX))Y
N
(BX)+1→BX
(CX)-1→CX
N(CX)?
=0
Y
‘N’→DL
‘Y’→DL
调用DOS2号功能输出显示字符
结束
实验八子程序设计
(1)
(一)实验目的
1、掌握子程序的设计方法和调用方式
2、深刻认识堆栈在子程序设计中所起的作用
3、掌握子程序调试的技巧。
(二)实验设备
同实验二
(三)实验内容和要求
实验内容:
内存中有一字节型无符号数缓冲区Data,长度为100。
将Data缓冲区显示到屏幕上,分别用二进制,十进制和十六进制。
要求:
1.编写子程序将一个字节数用二进制进行显示,参数用内存数传递;
2.编写子程序将一个字节数用十进制进行显示,参数用寄存器数传递;
3.编写子程序将一个字节数用十六进制进行显示,参数用堆栈传递;
(四)预习要求
同实验二
(五)实验步骤
同实验二
(六)实验结果分析
1、理解3种参数传递方式各有什么特点
2、绘制一般子程序的结构。
(七)编程提示
(a)二进制显示可采用移位并判断该位的方式进行。
(b)十进制数采用除以10取商的方式。
(c)十六进制数可利用二进制转换位十六进制的方法进行。
(d)注意去掉最高位的“0”。
实验九子程序设计
(2)
(一)实验目的
1、掌握子程序的设计方法和调用方式
2、深刻认识堆栈在子程序设计中所起的作用
3、掌握子程序调试的技巧。
(二)实验设备
同实验二
(三)实验内容和要求
实验内容:
已知某密码由英文字母A、B、C……Z组成且以ASCII码形式存放在以
CIPHER为首地址的存储区中,试统计各字母在此密码中出现的次数并依次存入
以CHAR为首地址的26个字节中,最后将字母出现的次数以十六进制形式显示出来(设出现的次数≤255),显示格式为:
AXXHBXXH
¦
ZXXH
要求:
将“8位二进制数转换成十六进制数并显示出来”的功能用子程序完成。
(四)预习要求
同实验二
(五)实验步骤
同实验二
(六)实验结果分析
1、叙述调用子程序和子程序返回对堆栈的操作过程。
2、绘制一般子程序的结构。
(七)编程提示
(e)主程序流程图
开始
26→CX,‘A’→DL,0→SI
0→AL,0→BX
(CIPHER[BX])=(DL)N
Y
(AL)+1→AL
(BX)+1→BX
N
字符串结尾吗?
Y
(AL)→CHAR[SI],(SI)+1→SI
调用DISP子程序显示一行信息
(DL)+1→DL
(CX)-1→CX
N(CX)=0
Y
结束
(b)子程序DISP流程图
开始
调用DOS2号功能显示DL的内容
调用DOS9功能显示字符串“…”
(AL)→DL
DL的内容逻辑右移4位
(DL)+30H→DL
(DL)≤39HY
N
(DL)+7→DL
调用DOS2号功能显示DL的内容
(AL)→DL
(DL)∧0FH→DL
(DL)+30H→DL
(DL)≤39HY
N
(DL)+7→DL
调用DOS2号功能显示DL的内容
调用DOS2号功能回车、换行
结束
实验十中断程序设计
(一)实验目的
1、中断服务子程序的编写。
2、BIOS和DOS中断调用。
(二)实验设备
硬件环境:
IBM-PC及其兼容机软件环境:
操作系统DOS3.0以上
编辑程序EDIT或其它编辑程序汇编程序MASM.EXE6.1X连接程序LINK.EXE
调试程序DEBUG.COM
(三)实验内容和要求
实验内容:
1.编写一个完成的程序,用于输入一个小写字母,输出大写字母。
2.编写一个完成的程序,接收一个字符串,将它输出时全部以大写的方式输出。
要求:
分别用BIOS和DOS中断调用来实现
(四)实验准备
同实验二,并且分析BIOS和DOS中断调用的功能和区别
(五)实验步骤
(略)
(六)实验结果分析
利用实验中源程序中的输出方法,分析BIOS和DOS中断调用的功能和区别
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 程序设计 实验 手册 专科 范文