大全实验报告.docx
- 文档编号:3384243
- 上传时间:2022-11-22
- 格式:DOCX
- 页数:27
- 大小:149.04KB
大全实验报告.docx
《大全实验报告.docx》由会员分享,可在线阅读,更多相关《大全实验报告.docx(27页珍藏版)》请在冰豆网上搜索。
大全实验报告
合肥工业大学
计算机与信息学院
实验报告
课程:
汇编语言程序设计
专业班级:
学号:
姓名:
实验一Debug程序的使用
一.实验目的
1、熟悉DEBUG程序中的命令,学会在DEBUG下调试运行汇编语言源程序。
2、掌握8086/8088的寻址方式及多字节数据的处理方法。
二.实验内容
1、利用DEBUG程序中的“E”命令,将两个多字节数“003F1AE7H”和“006BE5C4H”分别送入起始地址为DS:
0200H和DS:
0204H两个单元中。
2、分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将DS:
0200H单元和DS:
0204H单元中的数据相加,并将运算结果存放在DS:
0208H单元中。
要求:
本次实验的内容均在DEBUG下完成,实现数据的装入、修改、显示;汇编语言程序段的编辑、汇编和反汇编;程序的运行和结果检查。
三.实验过程和程序
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:
010703060402ADDAX,[0204]
186E:
010B131E0602ADCBX,[0206]
186E:
010FA30802MOV[0208],AX
186E:
0112891E0A02MOV[020A],BX
186E:
0116
–
注意:
●检查源程序是否有错误,若有则返回到第3步用“A地址”命令进行修改,直到程序无错误。
●DEBUG约定在其命令或源程序中所涉及到的数据均被看作十六进制数,其后不用“H”说明。
●在DEBUG下,源程序中不能使用“标号”、“变量”和一些伪指令。
●在DEBUG下,大小写不敏感。
5、程序未执行前,用“R”命令观察,相关寄存器的内容。
–R↙
如:
(AX)=0000H,(BX)=0000H,(SI)=0000H,
(DI)=0000H,(CS)=0B32H,(IP)=0100H。
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)=00ABH,(BX)=00ABH
DS:
0208H四字节单元的内容:
00AB00ABH
2、试用寄存器间接寻址方式编写程序段,完成上述程序段的功能。
(参考下列程序流程图)
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个字节里。
cld
四.实验体会
通过这次试验,对于debug环境有了一个基本的了解,同时通过对指令的使用而对计算机的数据传送、算术运算、逻辑和移位操作、串操作、控制转移和循环等指令有了更深的理解。
串操作指令是对一个一个字节进行操作的。
实验二汇编语言程序设计(顺序、循环)
一.实验目的
1、掌握顺序和循环程序结构和设计方法;
2、熟悉在PC机上建立、汇编、连接、调试和运行8086/8088汇编语言程序的过程。
二.实验内容
1、X、Y、Z、V均为字变量,在X、Y、Z、V字单元中存放是16位带符号数。
试编写汇编语言程序完成以下功能:
①计算表达式值(V–(X*Y+Z-720))/X;
②将上述表达式运算结果整数放在SUM1单元,余数放在SUM2单元。
dsegsegment
xdw2
ydw360
zdw0
vdw5
sum1dw?
sum2dw?
dsegends
csegsegment
assumecs:
cseg,ds:
dseg
start:
movax,dseg
movds,ax
movax,x
movbx,y
mulbx
movbx,z
addax,bx
subax,2d0h
movbx,v
subbx,ax
movax,bx
cbw
movbx,x
divbx
movsum1,ax
movsum2,dx
movah,4ch
int21h
csegends
endstart
2、求一个班50名学生成绩的平均值(附加题:
最大值和最小值,并将结果显示出来)
dsegsegment
scoredb10dup(80,70,60,90,90)
avgdb?
maxdb0dh,0ah,?
mindb0dh,0ah,?
dsegends
csegsegment
assumecs:
cseg,ds:
dseg
start:
movax,dseg
movds,ax
movcx,50
movax,0
movbh,0
movbl,100
movsi,0
l:
addal,score[si]
adcah,0
incsi
loopl
movdx,si
divdl
movavg,al
movcx,50
movsi,0
l1:
cmpscore[si],bh
jbes1
movbh,score[si]
s1:
incsi
loopl1
movcx,50
movsi,0
l2:
cmpscore[si],bl
jas2
movbl,score[si]
s2:
incsi
loopl2
moval,bl
movah,0
movcl,10
divcl
cmpal,0
jzgw1
cmpal,10
jzmf1
movch,ah
addal,30h
movdl,al
movah,2
int21h
addch,30h
movdl,ch
movah,2
int21h
jmpdone1
gw1:
movdl,ah
adddl,30h
movah,2
int21h
jmpdone1
mf1:
movdl,31h
movah,2
int21h
movdl,30h
movah,2
int21h
movdl,30h
movah,2
int21h
done1:
movdl,0dh
movah,2
int21h
movdl,0ah
movah,2
int21h
moval,bh
movah,0
movcl,10
divcl
cmpal,0
jzgw
cmpal,10
jzmf
movch,ah
addal,30h
movdl,al
movah,2
int21h
addch,30h
movdl,ch
movah,2
int21h
jmpdone
gw:
movdl,ah
adddl,30h
movah,2
int21h
jmpdone
mf:
movdl,31h
movah,2
int21h
movdl,30h
movah,2
int21h
movdl,30h
movah,2
int21h
done:
movah,4ch
int21h
csegends
endstart
3、从键盘读入一个字符串,以Enter结束,字符串不超过50个字符,并打印该字符串(附加题:
查找中间是否有‘asm’子串。
如果有,输出‘Yes’;否则,输出‘No’)。
datasegment
s1db51,?
51dup('$')
s3db0ah,0dh,'Yes$'
s4db0ah,0dh,'No$'
dataends
dsegsegment
s2db'asm'
dsegends
csegsegment
assumecs:
cseg,ds:
data,es:
dseg
start:
movax,data
movds,ax
movax,dseg
moves,ax
leadx,s1
movah,0ah
int21h
movdl,0dh
movah,2
int21h
movdl,0ah
movah,2
int21h
leadx,s1+2
movah,9
int21h
movcl,s1+1
cmpcl,3
jbnotfound
leasi,s1
leadi,s2
movdx,si
movbx,di
movah,48
cld
again:
movcx,3
repzcmpsb
jzfound
adddx,1
movsi,dx
movdi,bx
decah
jnzagain
jmpnotfound
jmpover
found:
leadx,s3
movah,9
int21h
jmpover
notfound:
leadx,s4
movah,9
int21h
over:
movah,4ch
int21h
csegends
endstart
三.实验体会
通这次试验,熟悉了MASM汇编环境和汇编程序设计的格式,熟悉在PC机上建立、汇编、连接、调试和运行8086/8088汇编语言程序的过程。
同时对顺序和循环程序设计更加熟练,并在编程过程中熟悉了算术运算、位操作和串操作等指令。
算术运算中,对于不同类型数进行运算时,要进行扩展,还有不要忽视进位;对于循环和控制转移指令,如果有多个循环或转移指令,则前一个循环或转移结束后,一定到无条件转移到结尾处;串操作指令中,源串和目的串分别定义在DS和ES两个段中的,不能对ES进行段超越操作等。
实验三汇编语言子程序设计(分支、子程序)
一.实验目的
1、掌握分支和子程序结构和设计方法;
2、熟悉在PC机上建立、汇编、连接、调试和运行8086/8088汇编语言程序的过程。
3、通过汇编语言了解高级语言的参数传递等知识。
二.实验内容
1、1.BL中的只有一位为1。
编写程序测试,并输出提示信息“TheXBitis1”,要求:
地址表和转移表。
dsegsegment
adb2
msg0db0dh,0ah,'The0Bitis1','$'
msg1db0dh,0ah,'The1Bitis1','$'
msg2db0dh,0ah,'The2Bitis1','$'
msg3db0dh,0ah,'The3Bitis1','$'
msg4db0dh,0ah,'The4Bitis1','$'
msg5db0dh,0ah,'The5Bitis1','$'
msg6db0dh,0ah,'The6Bitis1','$'
msg7db0dh,0ah,'The7Bitis1','$'
addrtb1dwfunc0,func1,func2,func3,func4,func5,func6,func7
dsegends
csegsegment
assumecs:
cseg,ds:
dseg
start:
movax,dseg
movds,ax
movcx,8
movsi,0
movbl,a
cmpbl,0
jzexit
l:
shrbl,1
jcl1
incsi
loopl
jmpexit
l1:
movax,si
andax,0fh
shlax,1
movbx,ax
jmpaddrtb1[bx]
func0:
leadx,msg0
jmpoutput
func1:
leadx,msg1
jmpoutput
func2:
leadx,msg2
jmpoutput
func3:
leadx,msg3
jmpoutput
func4:
leadx,msg4
jmpoutput
func5:
leadx,msg5
jmpoutput
func6:
leadx,msg6
jmpoutput
func7:
leadx,msg7
jmpoutput
output:
movah,9
int21h
exit:
movah,4ch
int21h
csegends
endstart
dsegsegment
adb8
msg0db0dh,0ah,'The0Bitis1','$'
msg1db0dh,0ah,'The1Bitis1','$'
msg2db0dh,0ah,'The2Bitis1','$'
msg3db0dh,0ah,'The3Bitis1','$'
msg4db0dh,0ah,'The4Bitis1','$'
msg5db0dh,0ah,'The5Bitis1','$'
msg6db0dh,0ah,'The6Bitis1','$'
msg7db0dh,0ah,'The7Bitis1','$'
dsegends
csegsegment
assumecs:
cseg,ds:
dseg
start:
movax,dseg
movds,ax
movcx,8
movsi,0
movbl,a
cmpbl,0
jzexit
l:
shrbl,1
jcl1
incsi
loopl
jmpexit
l1:
movax,si
andax,0fh
movbx,ax
shlax,1
addbx,ax
addbx,offsetjmptb1
jmpbx
jmptb1:
jmpnearptrfunc0
jmpnearptrfunc1
jmpnearptrfunc2
jmpnearptrfunc3
jmpnearptrfunc4
jmpnearptrfunc5
jmpnearptrfunc6
jmpnearptrfunc7
func0:
leadx,msg0
jmpoutput
func1:
leadx,msg1
jmpoutput
func2:
leadx,msg2
jmpoutput
func3:
leadx,msg3
jmpoutput
func4:
leadx,msg4
jmpoutput
func5:
leadx,msg5
jmpoutput
func6:
leadx,msg6
jmpoutput
func7:
leadx,msg7
jmpoutput
output:
movah,9
int21h
exit:
movah,4ch
int21h
csegends
endstart
2.编写一个子程序计算z=f(x,y)=x*y+x-y(x,y,z有符号数内存数)。
要求通过堆栈(寄存器、内存)传送所有参数。
dsegsegment
xdb2
ydb4
zdb?
dsegends
csegsegment
assumecs:
cseg,ds:
dseg
start:
movax,dseg
movds,ax
callresult
movah,4ch
int21h
resultproc
pushax
pushbx
moval,x
imuly
movbl,x
addal,bl
subal,y
movz,al
popbx
popax
ret
resultendp
csegends
endstart
datasegment
xdw123
ydw56
zdw?
dataends
codesegment
assumecs:
code,ds:
data
start:
movax,data
movds,ax
subsp,2
pushx
pushy
callc
popz
movah,4ch
int21h
cproc
pushbp
movbp,sp
pushax
pushbx
pushdx
movax,[bp+6]
movbx,[bp+4]
mulbx
movdx,[bp+6]
subdx,bx
addax,dx
mov[bp+8],ax
popdx
popbx
popax
popbp
ret4
movah,4ch
int21h
codeends
endstart
三.实验体会
通过本次试验,进一步熟悉在PC机上建立、汇编、连接、调试和运行8086/8088汇编语言程序的过程,通过汇编语言了解了高级语言的参数传递等知识,并熟悉了分支程序和子程序的设计方法,对于地址表和转移表的概念、使用及其区别更加熟悉。
实验四汇编语言高级编程专题
一.实验目的
1、汇编语言宏程序设计;
2、掌握中断服务子程序的编写。
3、汇编语言与高级语言的混编。
二.实验内容
1、编写一个宏,求三个数的最小数,原型为:
MIN3x,y,z,min
shiftmacrox,y,z
movax,x
cmpax,y
jldone
movax,y
done:
cmpax,z
jlexit
movax,z
exit:
movax,ax
endm
codesegment
assumecs:
code
start:
shift4,2,3
movah,4ch
int21h
codeends
endstart
2、挂接1CH中断,正计时60秒后退出。
要求屏幕显示0-59的秒数。
INTNOEQU1CH
USEINT=1
DATASEGMENT
OLDISRDW?
?
TIMERDB100
COUNTERDW0
ISDONEDB0
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAX,0
MOVES,AX
IFUSEINT
MOVAL,INTNO
MOVAH,35H
INT21H
MOVOLDISR[0],BX
MOVAX,ES
MOVOLDISR[2],AX
ELSE
CLI
MOVAX,ES:
[INTNO*4]
MOVOLDISR[0],AX
MOVAX,ES:
[INTNO*4+2]
MOVOLDISR[2],AX
STI
ENDIF
IFUSEINT
PUSHDS
MOVAX,SEGISR
MOVDS,AX
MOVDX,OFFSETISR
MOVAL,INTNO
MOVAH,25H
INT21H
POPDS
ELSE
CLI
MOVWORDPTRES:
[INTNO*4],OFFSETISR
MOVWORDPTRES:
[INTNO*4+2],SEGISR
STI
ENDIF
WAITHERE:
CMPISDONE,60
JNZWAITHERE
EXIT:
IFUSEINT
PUSHDS
MOVDX,OLDISR[0]
MOVAX,OLDISR[2]
MOVDS,AX
MOVAL,INTNO
MOVAH,25H
INT21H
POPDS
ELSE
CLI
MOVAX,OLDISR[0]
MOVES:
[INTNO*4],AX
MOVAX,OLDISR[2]
MOVES:
[INTNO*4+2],AX
STI
ENDIF
MOVAX,4C00H
INT21H
ISRPROCFAR
PUSHDX
PUSHAX
MOVAX,DATA
MOVDS,AX
STI
INCTIMER
AGAIN:
CMPTIMER,1000/55;18
JBDONE
MOVTIMER,0
MOVAH,2
MOVDL,13
INT21H
MOVAX,COUNTER
MOVDL,10
DIVDL
MOVDH,AH
MOVDL,AL
MOVAH,2
ADDDL,30H
INT21H
MOVDL,DH
ADDDL,30H
INT21H
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 大全 实验 报告