汇编语言实验报告.docx
- 文档编号:25846605
- 上传时间:2023-06-16
- 格式:DOCX
- 页数:67
- 大小:1.58MB
汇编语言实验报告.docx
《汇编语言实验报告.docx》由会员分享,可在线阅读,更多相关《汇编语言实验报告.docx(67页珍藏版)》请在冰豆网上搜索。
汇编语言实验报告
汇编语言实验报告
专业:
班级:
姓名:
学号:
2011年12月14日
实验1利用DEBUG调试汇编语言程序段
一.实验目的
1.熟悉DEBUG有关命令的使用方法;
2.利用DEBUG掌握有关指令的功能;
3.利用DEBUG运行简单的程序段。
二.实验内容
1.进入和退出DEBUG程序;
1)开始—运行,输入cmd,点确定进入命令窗口
2)在命令窗口中输入dubug进入debug程序
3)进入debug窗口后,输入q命令退出debug
2.学会DEBUG中的
1)D命令(显示内存数据D段地址:
偏移地址)
例1:
-D100;显示DS段,0100开始的128个节内容
说明:
指定要显示其内容的内存区域的起始和结束地址,或起始地址和长度。
1DSEGREG[起始地址][L长度]
;显示SEGREG段中(缺省内默认为DS),以[起始地址](缺省内为当前的偏移地址),开始的[L长度](缺省内默认为128)个字节的内容.
2DSEGREG[段地址:
偏移地址]
;显示SEGREG段中(缺省内默认为DS),[段地址:
偏移地址]开始的[L长度](缺省内默认为128)个字节内容
-D ;默认段寄存器为DS,当前偏移地址(刚进入debug程序偏移地址为0100H)
-DDS:
100;显示DS段,0100H开始的128个字节内容
-DCS:
200;显示CS段,0200H开始的128个字节内容
-D200:
100;显示DS段,0200:
0100H开始的128个字节内容
-D200;显示DS段,0200H开始的128个字节内容
-D100L10;显示DS段,100H开始的8H个字节内容
2)E命令(修改指定内存)
-E1001122334455667788
-D100
结果:
0AF1:
01001122334455667788
例2:
-E100:
E地址数据表;从指定的地址开始用数据表给定的数据修改存储单元。
-EDS:
100ea’hf’ff;
3)R命令(显示当前寄存器的内容)
显示修改寄存器命令R
R;★显示所有寄存器和标志位状态;
★显示当前CS:
IP指向的指令。
显示标志时使用的符号:
标志 标志=1 标志=0
OF OV NV
DF DN UP
IF EI DI
SF NG PL
ZF ZR NZ
AF AC NA
PF PE PO
CF CY NC
4)T命令(设置陷井,单步执行)
5)A命令(将指令直接汇编成机器码输入到内存中。
)
汇编命令A
A[地址];从指定的地址开始输入符号指令;如省略地址,则接着上一个A命令的最后一个单元开始;若第一次使用A命令省略地址,则从当前CS:
IP开始(通常是CS:
100)。
注释:
①在DEBUG下编写简单程序即使用A命令。
②每条指令后要按回车。
③不输入指令按回车,或按Ctrl+C结束汇编。
④支持所有8086符号硬指令,伪指令只支持DB、DW,不支持各类符号名。
使用A命令在0100H开始输入指令movax,10inccxmovbl,al
单步执行上述指令
6)G命令等的使用(执行A命中输入的汇编指令)
运行程序命令G
①G;从CS:
IP指向的指令开始执行程序,直到程序结束或遇到INT3。
②G=地址;从指定地址开始执行程序,直到程序结束或遇到INT3。
③G断点1[,断点2,…断点10];从CS:
IP指向的指令开始执行程序,直到遇到断点。
④G=地址 断点1[,断点2,…断点10]
-G;从CS:
IP指向的指令开始执行程序。
-G=100;从指定地址开始执行程序。
-G=100105110120
使用A命令在0100H开始输入指令movax,10inccxmovbl,alint3
然后使用g命令执行
3.用DEBUG,验证乘法、除法、加法、减法、带进位加、带借位减、堆栈操作指令、串操作指令的功能。
、
乘法验证:
除法验证:
加法验证:
减法验证:
带进位的减法:
堆栈操作指令:
串操作指令:
三.实验要求
1.仔细阅读有关DEBUG命令的内容,对有关命令,要求事先准备好使用的例子;
四.实验环境
PC微机
DOS操作系统或Windows操作系统
MASM.EXE,LINK.EXE,DEBUG.COM或宏汇编集成环境
五.实验步骤
1.在DOS提示符下,进入DEBUG程序;
2.在DOS目录下启动DEBUG;
3.详细记录每一步所用的命令,以及查看结果的方法和具体结果。
六.思考题
启动DEBUG后,要装入某一个.EXE文件,应通过什么方法实现?
答:
假如有一个a.exe文件,我们可以在dos环境下输入
debuga.exe
这样便可以装入一个.exe文件
七.参考资料
《汇编实验指导书》
《IBM-PC汇编语言程序设计(第二版)》
实验2初级程序的编写与调试实验
(一)
一.实验目的
1.进一步熟悉DEBUG命令;
2.掌握数据在内存中的存放方式和内存操作数的几种寻址方式,段寄存器和物理地址计算;
3.熟悉数据传送指令、算术运算指令、逻辑指令、数据串传送程序和数据串传送指令MOVS、STOS及重复前辍REP;
4.掌握简单的汇编语言程序编写与调试。
二.实验内容
1.内存操作数及各种寻址方式使用;
2.求累加和程序;
3.多字节加法程序;
4.数据串搬家程序;
5.段寄存器概念及字符串传送指令练习。
三.实验要求
1.仔细阅读有关DEBUG命令的内容,对有关命令,要求事先准备好使用的例子;
2.阅读数据传送指令、算术运算指令、逻辑指令、数据串传送程序和数据串传送指令MOVS、STOS及重复前辍REP的内容;
3.用DEBUG的有关命令调试本实验中的求累加和程序、多字节加法程序、数据串搬家程序段。
四.实验环境
PC微机;
DOS操作系统或Windows操作系统;
MASM.EXE,LINK.EXE,DEBUG.COM或宏汇编集成环境。
五.实验步骤
1.内存操作数及各种寻址方式使用
MOVAX,1234
MOV[1000],AX
MOVBX,1002
MOVBYTEPTR[BX],20
MOVDL,39
INCBX
MOV[BX],DL
DECDL
MOVSI,3
MOV[BX+SI],DL
MOV[BX+SI+1],DL
MOVWORDPTR[BX+SI+2],2846
步骤:
(1)用A命令键入上述程序,并用T命令逐条运行。
(2)每运行一条有关内存操作数的指令,要用D命令检查并记录有关内存单元的内容并注明是什么寻址方式。
注意D命令显示结果中右边的ASCII字符及双字节数存放法。
2.求累加和程序:
程序:
MOVBX,1000
MOVCX,10
SUBAX,AX
LOP:
ADDAL,[BX]
ADCAH,0
INCBX
J:
LOOPLOP
INT3
步骤:
(1)用A命令将程序键入到100H开始的内存中,在键入时记下标号LOP和J的实际地址,在键入LOOP指令时LOP用实际地址值代替;
(2)用命令NAA将此程序命名为文件AA(文件名可任取);
(3)用R命令将BX:
CX改为程序长度值(即最后一条指令后面的地址减去开始地址;
(4)用命令W100将此程序存到AA命名的磁盘文件中;
(5)用命令Q退出DEBUG;
(6)用命令DEBUGAA再次调入DEBUG和文件AA,可用U命令检查调入程序;
(7)用E命令在内存地址1000H处键入16个数字;
(8)用命令G=100J(J用实际地址代替),使程序运行并停在断点J上,检查AX,BX的值是否符合你的预计值;
(9)用T命令运行一步,观察程序方向(IP值)和CX值是否与你的估计一样,若不一样,检查程序是否有错;
(10)重复G、J与T,再检查AX是否正确;
(11)用G命令使程序运行到结束,检查AX值是否正确。
3.多字节加法程序
程序:
MOVDI,1000
MOVCX,8
MOVSI,2000
CLC
LOP:
MOVAL,[SI]
ADC[DI],AL
INCSI
INCDI
LOOPLOP
INT20
步骤:
(1)用命令键入此程序。
(2)用E命令在1000H开始处键入一个8字节被加数,在2000H开始处键入一个8字节加数,均为低字节在前面。
4.数据串搬家程序
(1)用A命令键入下列程序:
MOVSI,1000
MOVDI,1500
MOVCX,0FH
LOP:
MOVAL,[SI]
MOV[DI],AL
INCSI
INCDI
LOOPLOP
INT20
(2)用A命令DB伪指令在1000H键入下列字符串:
‘IBM_PCCOMPUTER'
(3)用G命令运行此程序,并用D命令检查目的地址处的字符与源串是否一致。
5.段寄存器概念及字符串传送指令练习
(1)用A命令键入下列程序:
MOVSI,0
MOVDI,0
MOVAX,1000
MOVDS,AX
MOVAX,1500
MOVES,AX
MOVCX,0F
CLD
REPMOVSB
INT20
(2)用A命令DB伪指令在1000:
0000处键入字符串'IBM_PCCOMPUTER',并用D命检查
(3)用D命令检查0F00:
1000处内容,看是否一样。
为什么?
(4)用G命令运行此程序,检查目的地址1500:
0000处内容。
并记下DS与ES值。
此时的DS和ES的值分别为:
(5)修改此程序,使ES与DS为同一值,以减少一条指令,而源物理地址和目的物理地址(是多少?
)仍和原来一样。
6.自编程序
用16位减法指令编一个32位(4字节)数减法程序,两个源数及结果存放地址同多字节加法程序,调试并做记录。
4字节减法程序源代码
1397:
0100MOVSI,1000
1397:
0103MOVCX,4
1397:
0106MOVDI,2000
1397:
0109CLC
1397:
010AMOVAL,[SI]
1397:
010CSBB[DI],AL
1397:
010EINCSI
1397:
010FINCDI
1397:
0110LOOP010A
1397:
0112INT20
1397:
0114
调试和运行
结果运行正确
六.思考题
1.MOVBYTEPTR[BX],20
MOVWORDPTR[BX+SI+2],2846
上述指令中BYTEPTR及WORDPTR伪操作不加行不行?
试一试。
2.用G命令运行多字节加法程序,并用D命令检查其结果(存放在哪里?
),是否正确?
3.将多字节加法程序中的INT20H指令改为INT3,有何区别?
若这条指令不加,行不行?
试一试。
4.数据串搬家程序中的目的地址改为1002H,再运行此程序,看能不能把1000H开始的字符串搬到1002H开始的地方去?
修改程序以做到这一点。
不能结果不正确
七.参考资料
《汇编实验指导书》
《IBM-PC汇编语言程序设计(第二版)》
实验3初级程序的编写与调试实验
(二)
一.实验目的
1.掌握无条件转移指令、条件转移指令;
2.掌握利用DOS功能调用INT21H的2号和9号功能进行屏幕显示的方法;
3.掌握直接向视频RAM送ASCII码进行屏幕显示的方法;
4.掌握屏幕字符显示程序编写与调试。
二.实验内容
1.字符、字符串的屏幕显示;
2.直接向VRAM送ASCII码显示字符;
3.用字符搜索法确定字符串长度;
4.16进制数化ASCII码的一般方法(显示内存内容)。
三.实验要求
1.仔细阅读有关无条件转移指令、条件转移指令的内容;
2.阅读利用DOS功能调用INT21H的2号和9号功能进行屏幕显示的内容;
3.阅读实验指导书中的字符串屏幕显示程序、字符屏幕显示程序、直接向VRAM送ASCII码显示字符程序、用字符搜索法确定字符串长度程序、16进制数化ASCII码的一般方法的程序段,调试上述程序。
四.实验环境
PC微机;
DOS操作系统或Windows操作系统;
MASM.EXE,LINK.EXE,DEBUG.COM或宏汇编集成环境。
五.实验步骤
1.利用INT210AH号功能调用显示字符串。
(1)用A命令在100H处键入下列程序:
MOVAH,9
MOVDX,110
INT21
INT20
(2)用A命令在110H处键入下列字符串的ASCII码:
DB'Thisisasample!
$'
(3)用N命令和W命令将此程序(包括数据区)存入文件名为AA.OM的磁盘文件中。
(存入前BX:
CX必须置为文件长度值)。
(4)用Q命令退出DEBUG。
(5)在DOS命令下打AA,运行此程序,即在屏幕上显示'Thisisasample!
'字符串,若不出现,用DEBUG检查程序有无错误。
2.利用INT21H2号功能显示字符
(1)用A命令在100H处键入下列程序:
XORDL,DL
MOVCX,100
LOP:
MOVAH,2
INT21
INCDL
PUSHCX
MOVCX,8
DELY:
PUSHCX
MOVCX,0
J:
LOOPJ
POPCX
LOOPDELY
POPCX
LOOPLOP
INT20
(2)用G命令运行程序,即在屏幕上依次缓慢的显示256个ASCII字符。
仔细观察每个字符,和IBM-PCASCII码表对照,看07H-0DH处控制字符显示结果与表上有何不同?
(3)按CTRL+BREAK退出此程序,若一次不行可多做几次。
3.直接向VRAM送ASCII码显示字符
(1)用A命令在100H处键入下列程序
MOVAX,B000
MOVDS,AX
XORAL,AL
XORBX,BX
MOVCX,100
LOP:
MOV[BX],AL
INCBX
INCAL
PUSHCX
MOVCX,8
DELY:
PUSHCX
MOVCX,0
J:
LOOPJ
POPCX
LOOPDELY
POPCX
LOOPLOP
INT20
(2)用N命令和W命令将此程序存入BB.COM文件中。
(一定要先存入!
)
(3)用G命令运行此程序,仔细观察每一个ASCII码显示结果,并和字符表及上一道程序运行情况进行对照,其控制字符区(07-0DH)显示结果和INT21H2号功能调用有何不同?
4.用字符搜索法确定字符串长度
(1)用A命令在100H开始的内存处键入下列程序
JMPSTART
DB'Thisistheprogramtomeasure'
DB'thelengthofastring!
$'
START:
MOVBX,102
MOVAL,24
XORCL,CL
LOP:
CMPAL,[BX]
JZEXIT
INCBX
INCCL
JMPLOP
EXIT:
INT3
(2)用G命令运行此程序,并检查CL的统计长度是否与你自己统计的实际长度是否一样?
5.用字符搜索法确定字符串长度
(1)用A命令在100H处键入下列程序:
MOVSI,0
MOVBL,10
LOP:
MOVDL,[SI]
MOVCL,4
SHRDL,CL
CMPDL,0A
JCJ1
ADDDL,7
J1:
ADDDL,30
MOVAH,2
INT21
MOVDL,[SI]
ANDDL,0F
CMPDL,0A
JCJ2
ADDDL,7
J2:
ADDDL,30
MOVAH,2
INT21
MOVDL,20
MOVAH,2
INT21
INCSI
DECBL
JNZLOP
INT20
(2)用N,W命令将此程序用CC.COM文件名存入磁盘。
(3)用Q命令退出DEBUG。
(4)在DOS命令状态下直接运行CC.COM命令文件,应在屏幕上显示出内存从0000H开始的16个字节的内容,若有错误,用DEBUG检查之。
(5)自编程序:
修改上面程序,使除以16进制数形式显示内存内容外,还能在其右边显示该16进制码所对应的ASCII字符,07-0D的控制字符用'.'代替。
在DEBUG环境下打开程序,从最后一条指令int20开始修改,具体如下:
MOVCX,10
MOVSI,0
J3:
MOVDL,[SI]
MOVAH,2
CMPDL,0D
JBEJ5
J4:
INT21
INCSI
DECCX
JNZJ3
INT20
J5:
CMPDL,07
JNBJ4
MOVDL,2E
JMPJ4
实验结果
六.思考题
利用INT21H显示和直接向VRAM送ASCII码显示方法在显示结果上有什么不同?
答:
利用INT20显示时,07H-0DH的控制字符会有符号显示:
直接向VRAM送ASCII码时,控制字符不显示。
七.参考资料
《汇编实验指导书》
《IBM-PC汇编语言程序设计(第二版)》
实验4汇编语言程序上机过程
一.实验目的
熟练掌握汇编语言程序的编辑、调试和运行的过程和方法。
了解汇编语言程序的汇编、运行环境。
二.实验内容
1.掌握常用的编辑工具软件(如WORD、EDIT)、MASM和LINK的使用;
2.伪指令:
SEGMENT,ENDS,ASSUME,END,OFFSET,DUP;
3.利用的INT21H的1号功能实现键盘输入的方法;
三.实验要求
1.仔细阅读有关伪指令SEGMENT,ENDS,ASSUME,END,OFFSET,DUP的内容;
2.了解利用的INT21H的1号功能实现键盘输入的方法,了解.EXE文件和.COM文件的区别及用INT21H4C号功能返回系统的方法;
3.阅读下面程序段。
四.实验环境
PC微机
DOS操作系统或Windows操作系统
MASM。
EXE,LINK。
EXE,DEBUG。
COM或宏汇编集成环境
五.实验步骤
程序:
datasegment
messagedb'Thisisasampleprogramofkeyboardanddisply'
db0dh,0ah,'Pleasestrikethekey!
',0dh,0ah,'$'
dataends
stacksegmentparastack'stack'
db50dup(?
)
stackends
codesegment
assumecs:
code,ds:
data,ss:
stack
start:
movax,data
movds,ax
movdx,offsetmessage
movah,9
int21h;显示'Thisisasampleprogramofkeyboardanddisply'
again:
movah,1
int21h;等待键盘输入,保存至AL
cmpal,1bh;1bh字符ESC的ASCII
jeexit
cmpal,61h;61h字符a的ASCII
jcnd;小于(CF=1有借位)转向ND原样显示
cmpal,7ah;
jand;大于转向ND原样显示
andal,11011111b;转化为大写字母subal,20h
nd:
movdl,al
movah,2
int21h
jmpagain
exit:
movah,4ch
int21h
codeends
endstart
实验步骤:
1.用用文字编辑工具(记事本或EDIT)将源程序输入,其扩展名为.ASM。
2.用MASM对源文件进行汇编,产生.OBJ文件和.LST文件。
若汇编时提示有错,用文字编辑工具修改源程序后重新汇编,直至通过。
3.用TYPE命令显示1产生的.LST文件。
4.用LINK将.OBJ文件连接成可执行的.EXE文件。
5.在DOS状态下运行LINK产生的.EXE文件。
即在屏幕上显示标题并提示你按键。
每按一键在屏幕上显示二个相同的字符,但小写字母被改成大写。
按ESC键可返回DOS。
若未出现预期结果,用DEBUG检查程序。
六.思考题
1.若在源程序中把INT21H的'H'省去,会产生什么现象?
和原来一样
2.把INT21H4CH号功能改为INT20H,行不行?
七.参考资料
《汇编实验指导书》
《IBM-PC汇编语言程序设计(第二版)》
实验5分支程序实验
一.实验目的
1.掌握分支程序的设计方法;
2.掌握利用DEBUG修改参数、检查结果的方法;
3.熟悉汇编语言源程序的编辑、汇编、连接及调试过程。
二.实验内容
1.编写一个程序,显示AL寄存器中的两位十六进制数
2.编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z或a-z字符,均显示“c”;若是回车字符
三.实验要求
1.编写实验内容要求的两个程序;
2.写出调试以上程序,即修改程序参数,检查结果的操作方法;
3.熟悉源程序
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 实验 报告