最新版汇编语言实验报告.docx
- 文档编号:16735565
- 上传时间:2023-07-16
- 格式:DOCX
- 页数:46
- 大小:376.73KB
最新版汇编语言实验报告.docx
《最新版汇编语言实验报告.docx》由会员分享,可在线阅读,更多相关《最新版汇编语言实验报告.docx(46页珍藏版)》请在冰点文库上搜索。
最新版汇编语言实验报告
汇编语言课程设计
学院:
专业:
姓名:
学号:
汇编语言是计算机专业的一门重要的专业基础课,主要介绍汇编语言程序设计的基本原理和方法。
汇编语言是一门理论性和实践性较强的课程,辅助课堂教学的实验有助于帮助学生理解汇编语言的基本原理,锻炼学生的动手能力,提高学生的综合应用知识的能力。
1利用DEBUG调试汇编语言程序段………………………………………
2初级程序的编写与调试实验
(一)
3初级程序的编写与调试实验
(二)………………………………………...
4汇编语言程序上机过程
5分支程序实验……………………………………………………………
6循环程序实验……………………………………………………………..
1利用DEBUG调试汇编语言程序段
一.课程目的
1.熟悉DEBUG有关命令的使用方法;
2.利用DEBUG掌握有关指令的功能;
3.利用DEBUG运行简单的程序段。
二.课程内容
1.进入和退出DEBUG程序;
2.学会DEBUG中的
1)D命令(显示内存数据D段地址:
偏移地址)
例1:
-D100
2)E命令(修改指定内存)
例1:
-E1004142434448474645
-D100,L08
结果:
08F1:
01004142434448474645
例2:
-E100:
08F1:
01007642:
42是操作员键入
此命令是将原100号内存内容76修改为42,用D命令可察看。
3)R命令(显示当前寄存器的内容)
4)T命令(设置陷井,单步执行)
5)A命令(将指令直接汇编成机器码输入到内存中。
)
6)G命令等的使用(执行A命中输入的汇编指令)
3.用DEBUG,验证乘法、除法、加法、减法、带进位加、带借位减、堆栈操作指令、串操作指令的功能。
三.课程要求
1.仔细阅读有关DEBUG命令的内容,对有关命令,要求事先准备好使用的例子;
四.环境
PC微机
DOS操作系统或Windows操作系统
MASM.EXE,LINK.EXE,DEBUG.COM或宏汇编集成环境
五.方法步骤
1.在DOS提示符下,进入DEBUG程序;
2.在DOS目录下启动DEBUG;
3.详细记录每一步所用的命令,以及查看结果的方法和具体结果。
R,D,E命令:
A,T命令:
进入和退出DEBUG:
六.学习要求
1.如何启动和退出DEBUG程序;
2.整理每个DEBUG命令使用的方法,实际示例及执行结果。
七.思考题
启动DEBUG后,要装入某一个.EXE文件,应通过什么方法实现?
答:
用debug+文件名
八.小结
通过这个设计我懂得了DEBUG程序调试汇编程序的一些基本方法和指令。
知道了DEBUG程序的一些功能。
使我对汇编语言有了进一步的理解。
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命令检查调入程序;
若调入DEBUG时忘了加AA文件名,可用N命令和L命令将文件调入;
(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处内容,看是否一样。
为什么?
相同,因为1000:
0000和0F00:
1000是同一个地址。
(4)用G命令运行此程序,检查目的地址1500:
0000处内容。
并记下DS与ES值。
(5)修改此程序,使ES与DS为同一值,以减少一条指令,而源物理地址和目的物理地址(是多少?
)仍和原来一样。
修改后程序:
MOVSI,0
MOVDI,0
MOVAX,1000
MOVDS,AX
MOVES,AX
MOVCX,0F
CLD
REPMOVSB
INT20
六.学习要求
1.各项实验记录;
2.要求你修改的程序的清单(修改后)和调试记录;
3.自编程序原稿及调试后修正稿,写出原稿错在那里。
七.思考题
1.MOVBYTEPTR[BX],20
MOVWORDPTR[BX+SI+2],2846
上述指令中BYTEPTR及WORDPTR伪操作不加行不行?
试一试。
答:
不行
2.用G命令运行多字节加法程序,并用D命令检查其结果(存放在哪里?
),是否正确?
3.将多字节加法程序中的INT20H指令改为INT3,有何区别?
若这条指令不加,行不行?
试一试。
4.数据串搬家程序中的目的地址改为1002H,再运行此程序,看能不能把1000H开始的字符串搬到1002H开始的地方去?
修改程序以做到这一点。
八.小结
此次设计使我对DEBUG的命令有了更深一步的了解。
知道如何编写程序,如何验证程序的对错。
同时熟悉了汇编语言的一些指令。
对汇编语言的一些简单程序的调试运行有了初步的掌握。
中间遇到了各种问题,但最终都通过自己的努力解决了。
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检查之。
六.学习要求
1、各项实验记录及观察体会。
2、自编程序草稿及调试结果。
七.思考题
利用INT21H显示和直接向VRAM送ASCII码显示方法在显示结果上有什么不同?
答:
1、INT21H只能在当前位置显示默认属性(即颜色)的字符,在VRAM中可修改任何一个位置的字符和属性。
2、INT21H更靠近用户,使用简单。
修改VRAM更靠近硬件,需记住对应于屏幕某位置的物理地址才能使用。
八.小结
本设计比较难,但了解了字符串转移的基本方法。
学会了条件转移、无条件转移指令的使用。
对汇编语言的指令有了进一步的了解。
但进行屏幕显示的没有成功,说明自己的能力有待提高。
对DOS的显示功能不熟练。
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
jc(jb)nd;小于(CF=1有借位)转向ND原样显示
cmpal,7ah;
jand;大于转向ND原样显示
andal,b;转化为大写字母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,行不行?
答:
不行。
八.小结
通过此次设计了解汇编语言程序的汇编、运行环境。
知道了汇编语言的调试、执行的基本方法。
但还不熟练,还没有掌握。
对软件还不熟悉。
.EXE文件的生成过程不顺利。
同时,我也更深一步了解了汇编语言指令的设计、调试等。
5分支程序
一.课程目的
1.掌握分支程序的设计方法;
2.掌握利用DEBUG修改参数、检查结果的方法;
3.熟悉汇编语言源程序的编辑、汇编、连接及调试过程。
二.课程内容
1.编写一个程序,显示AL寄存器中的两位十六进制数
2.编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z或a-z字符,均显示“c”;若是回车字符
datasegment
DB0
dataends
codesegment
assumecs:
code,ds:
data
mainprocfar
pushds
subax,ax
pushax
movax,data
movds,ax
next:
movah,07
int21h
cmpal,0dh
jEend_d
cmpal,'0'
JGEDY0;>=0
JMPNEXT;<'0'...30H
DY0:
CMPAL,'9'
JLEIS_09
CMPAL,'A'
JGEDY_A;DAYUA
JMPNEXT;<'A'...41H
DY_A:
CMPAL,'Z'
JLEIS_AZ
CMPAL,'a'
JGEDY_xA;DAYUxA
JMPNEXT;<'a'...61H
DY_xA:
CMPAL,'z'
JLEIS_AZ
JMPNEXT
;......................
IS_AZ:
MOVAH,02
MOVDL,'c'
INT21H
JMPNEXT
IS_09:
MOVAH,2
MOVDL,AL
INT21H
JMPNEXT
end_d:
ret
mainendp
codeends
endmain
三.课程要求
1.编写实验内容要求的两个程序;
2.写出调试以上程序,即修改程序参数,检查结果的操作方法;
3.熟悉源程序汇编、连接命令的使用方法即要回答的内容。
四.环境
PC微机
DOS操作系统或Windows操作系统
MASM.EXE,LINK.EXE,DEBUG.COM或宏汇编集成环境
五.方法步骤
1.用EDIT或其它编辑软件,编写.ASM源程序,例如HEXASC.ASM及DSPKEY.ASM。
2.对其进行汇编及连接,产生.EXE文件。
3.对.EXE文件进行调试运行。
(1)用DEBUG调试运行,学会修改AL内容的方法;
(2)对DSPKEY.EXE键入不同的字符,分别进行调试;
(3)在MS-DOS下运行这两个.EXE文件。
六.学习要求
1.画出两个程序的流程图,若要独立编写程序,应列出相应的程序清单。
2.说明本实验是如何利用DEBUG进行调试的。
七.思考题
编写显示AX中四位十六进制数程序,画出程序的流程图。
stacksegmentstack
db16dup(0)
stackends
datasegment
msg1db0ah,0dh,'PleaseInputAgain!
','$'
msg2db0ah,0dh,'BCDCode:
','$'
msg3db'PleaseInputyoudata:
',0ah,0dh,'$'
dataends
codesegment
assumecs:
code,ds:
data,ss:
stack
start:
movax,data
movds,ax
movdx,offsetmsg3
movah,09h
int21h
movah,01h
movcx,4
input:
movah,01h;输入字符
int21h
cmpal,30h
jbreinput
cmpal,39h
jazimu
subal,30h
jmpok
zimu:
andalb;字母转换
cmpal,41h
jbreinput
cmpal
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新版 汇编语言 实验 报告