汇编语言实验报告含代码合肥工业大学.docx
- 文档编号:10403644
- 上传时间:2023-05-25
- 格式:DOCX
- 页数:46
- 大小:342.76KB
汇编语言实验报告含代码合肥工业大学.docx
《汇编语言实验报告含代码合肥工业大学.docx》由会员分享,可在线阅读,更多相关《汇编语言实验报告含代码合肥工业大学.docx(46页珍藏版)》请在冰点文库上搜索。
汇编语言实验报告含代码合肥工业大学
合肥工业大学
实验报告
课程:
汇编语言程序设计
专业班级:
学号:
姓名:
实验一Debug程序的使用
一.实验目的
1、熟悉DEBUG程序中的命令,学会在DEBUG下调试运行汇编语言源程序。
2、掌握8086/8088的寻址方式及多字节数据的处理方法。
二.实验内容
实验内容:
1、利用DEBUG程序中的“E”命令,将两个多字节数“12345678H”和“FEDCBA98H”分别送入起始地址为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],AX186E:
0112891E0A02MOV[020A],BX186E:
0116–
注意:
检查源程序是否有错误,若有则返回到第3步用“A地址”命令进行修改,直到程序无错误。
DEBUG约定在其令或源程序中所涉及到的数据均被看作十六进制数,其后不用“H”说明。
在DEBUG下,源程序中不能使用“标号”、“变量”和一些伪指令。
在DEBUG下,大小写不敏感。
5、程序未执行前,用“R”命令观察,相关寄存器的内容。
–R↙如:
(AX)=0000,(BX)=0000,(SI)=0000,
(DI)=0000,(CS)=0b58,(IP)=0100
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)=1110,(BX)=1111
DS:
0208H四字节单元的内容:
10111111
2、试用寄存器间接寻址方式编写程序段,完成上述程序段的功能。
程序流程图)
开始
SI←200H
DI←204H
BX←208H
AX←[SI]
DX←[SI+2]
AX←AX+[DI]DX←DX+[DI+2]
[BX]←(AX)
[BX+2]←(DX)
结束
实验二汇编语言程序设计(顺序、循环)
一.实验目的
1、掌握顺序和循环程序结构和设计方法;
2、熟悉在PC机上建立、汇编、连接、调试和运行8086/8088汇编语言程序的过程。
二.实验内容
BL中只有一位为1.编写程序测试,,并输出提示信息“thexbitis1”,要求:
地址表和转移表。
地址表
CR=0dh
LF=0ah
dsegsegment
Msg1dbCR,LF,'The1bitis1','$'
Msg2dbCR,LF,'The2bitis1','$'
Msg3dbCR,LF,'The3bitis1','$'
Msg4dbCR,LF,'The4bitis1','$'
AddrdwFunc0,Func1,Func2,Func3
countdw0
dsegends
csegsegment
assumecs:
cseg,ds:
dseg
Start:
movax,dseg
movds,ax
movbl,1
movbh,0
movcx,4
Next:
shrbl,1
cmpbl,0
jeHandle
inccount
loopNext
Handle:
movax,count
shlax,1
movbx,ax
jmpAddr[bx]
Func0:
leadx,Msg1
jmpOutput
Func1:
leadx,Msg2
jmpOutput
Func2:
leadx,Msg3
jmpOutput
Func3:
leadx,Msg4
jmpOutput
Output:
movah,09h
int21h
movah,4ch
int21h
csegends
endStart
2学生成绩管理:
在内存score缓冲区中存放100个学生的成绩数据,为无符号字节数,要求实现下面功能:
给出不同分数段的人数
给出最高分,最低分,平均分
给定一个学生成绩,要求给出其名次
三.实验过程和程序
CR=0dh
LF=0ah
dsegsegment
scoredb90,80,30,60,50
len=$-score
beststrdb'>=90:
'
bestdb0,';',CR,LF,'$'
betterstrdb'>=80:
'
betterdb0,';',CR,LF,'$'
goodstrdb'>=70:
'
gooddb0,';',CR,LF,'$'
passstrdb'>=60:
'
passdb0,';',CR,LF,'$'
notpassstrdb'<=60:
'
notpassdb0,';',CR,LF,'$'
inputscoredb4,?
4dup(?
)
Msg1dbCR,LF,'Thehighestscoreis:
$'
Msg2dbCR,LF,'Thelowestscoreis:
$'
Msg3dbCR,LF,'Theaveragescoreis:
$'
InputinfodbCR,LF,'Pleaseinputscore:
$'
RankinfodbCR,LF,'Rankofthisstudentis:
'
rankdb1,';',CR,LF,'$'
dsegends
csegsegment
assumeds:
dseg,cs:
cseg
Start:
movax,dseg
movds,ax
;给出不同分数段的人数
movbx,0
movcx,len
Loop1:
cmpscore[bx],90
jbNext1
incbest
jmpDone
Next1:
cmpscore[bx],80
jbNext2
incbetter
jmpDone
Next2:
cmpscore[bx],70
jbNext3
incgood
jmpDone
Next3:
cmpscore[bx],60
jbNext4
incpass
jmpDone
Next4:
incnotpass
Done:
incbx
loopLoop1
addbest,30h
leadx,beststr
movah,09h
int21h
addbetter,30h
leadx,betterstr
movah,09h
int21h
addgood,30h
leadx,goodstr
movah,09h
int21h
addpass,30h
leadx,passstr
movah,09h
int21h
addnotpass,30h
leadx,notpassstr
movah,09h
int21h
;输出最大
leadx,Msg1
movah,09h
int21h
movcx,4
movbx,0
moval,score[bx]
Loop2:
incbx
cmpal,score[bx]
jajm
moval,score[bx]
jm:
looploop2
xorah,ah
movbl,10
divbl
addal,30h
movdl,al
movbh,ah
movah,2
int21h
movdl,bh
adddl,30h
movah,2
int21h
;输出最小
leadx,Msg2
movah,09h
int21h
movcx,4
movbx,0
moval,score[bx]
Loop3:
incbx
cmpal,score[bx]
jbjm1
moval,score[bx]
jm1:
looploop3
xorah,ah
movbl,10
divbl
addal,30h
movdl,al
movbh,ah
movah,2
int21h
movdl,bh
adddl,30h
movah,2
int21h
;输出平均
leadx,Msg3
movah,09h
int21h
movcx,4
movbx,0
xorax,ax
moval,score[bx]
Loop4:
incbx
addal,score[bx]
adcah,0
looploop4
movdx,0
movbl,5
movbh,0
divbx
movbl,10
divbl
addal,30h
movdl,al
movbh,ah
movah,2
int21h
movdl,bh
adddl,30h
movah,2
int21h
;
给定一个学生成绩,给出其名次
leadx,Inputinfo
movah,09h
int21h
leadx,inputscore
movah,0ah
int21h
movcl,inputscore+1
cmpcl,2
jaS100
jbS1
moval,inputscore+2
subal,30h
movch,10
mulch
addal,inputscore+3
subal,30h
jmpGo
S100:
moval,100
jmpGo
S1:
cmpcl,0
jzS0
moval,inputscore+2
subal,30h
jmpGo
S0:
moval,0
Go:
movbx,0
movcx,5
loop5:
cmpal,score[bx]
jaegoon1
incrank
goon1:
incbx
looploop5
addrank,30h
leadx,Rankinfo
movah,09h
int21h
movah,4ch
int21h
csegends
endStart
四.实验结果(包括必要的截图)
实验三汇编语言子程序设计(分支、子程序)
一.实验目的
1、掌握分支和子程序结构和设计方法;
2、熟悉在PC机上建立、汇编、连接、调试和运行8086/8088汇编语言程序的过程。
3、通过汇编语言了解高级语言的参数传递等知识。
二.实验内容
子程序设计:
完成Word型二进制,十进制和十六进制的相互转换,包括从键盘输入和屏幕输出功能。
要求:
1.功能选择。
2.转换使用子程序实现,且:
二进制到十进制和十六进制转换使用内存传递参数;十进制到二进制和十六进制转换使用寄存器传递参数;十六进制到二进制和十进制转换使用堆栈传递参数。
3.输出使用子程序实现。
三.实验过程和程序
datasegment
bufdb17,?
17dup(?
)
Instrudb'Instruction:
',0dh,0ah,'0:
changeBtoD.',0dh,0ah,'1:
changeBtoH.',0dh,0ah,'2:
changeDtoB.',0dh,0ah,'3:
changeDtoH.',0dh,0ah,'4:
changeHtoB.',0dh,0ah,'5:
changeHtoD.',0dh,0ah,'6:
Endprogram.$'
Msgdb0dh,0ah,'Pleaseinputafunctionnumber(0-6):
$'
Msg1db0dh,0ah,'Pleaseinputa16bitsBin:
$'
Msg2db0dh,0ah,'Pleaseinputa2bitsDec:
$'
Msg3db0dh,0ah,'Pleaseinputa4bitsHex:
$'
Msg4db0dh,0ah,'OutputtheBin:
$'
Msg5db0dh,0ah,'OutputtheDec:
$'
Msg6db0dh,0ah,'OutputtheHex:
$'
Endprodb0dh,0ah,'Endtheprogram!
$'
Procpt1dwBtoD
Procpt2dwBtoH
AddrtbldwFunc0,Func1,Func2,Func3,Func4,Func5,Func6
dataends
stack1segmentstack
dw512dup(0)
stack1ends
codesegment
assumecs:
code,ds:
data,ss:
stack1
Start:
movax,data
movds,ax
leadx,Instru
movah,9
int21h
Begin:
leadx,Msg
movah,9
int21h
movah,1
int21h
andax,0fh
shlax,1
movbx,ax
jmpAddrtbl[bx]
Func0:
callProcpt1
jmpBegin
Func1:
callProcpt2
jmpBegin
Func2:
leasi,buf
callDtoB
jmpBegin
Func3:
leasi,buf
callDtoH
jmpBegin
Func4:
leaax,buf
pushax
callHtoB
jmpBegin
Func5:
leaax,buf
pushax
callHtoD
jmpBegin
Func6:
leadx,Endpro
movah,9
int21h
movah,4ch
int21h
BtoDproc
pushsi
pushax
pushbx
pushcx
pushdx
leadx,Msg1
movah,9
int21h
leadx,buf
movah,0ah
int21h
leadx,Msg5
movah,9
int21h
movax,8000h
movbx,0
movcl,1
movsi,2
Do:
cmpbuf[si],'1'
jzDo1
jmpDo2
Do1:
orbx,ax
Do2:
shrax,cl
incsi
cmpsi,17
jbeDo
movax,bx
movdx,0
movcx,10000
divcx
movbx,dx
andax,00ffh
addal,30h
movdl,al
movah,2
int21h
movax,bx
movdx,0
movcx,1000
divcx
movbx,dx
andax,00ffh
addal,30h
movdl,al
movah,2
int21h
movax,bx
movcl,100
divcl
movbh,ah
addal,30h
movdl,al
movah,2
int21h
moval,bh
movah,0
movcl,10
divcl
movbh,ah
addal,30h
movdl,al
movah,2
int21h
addbh,30h
movdl,bh
movah,2
int21h
popdx
popcx
popbx
popax
popsi
ret
BtoDendp
BtoHproc
pushsi
pushax
pushbx
pushcx
pushdx
leadx,Msg1
movah,9
int21h
leadx,buf
movah,0ah
int21h
leadx,Msg6
movah,9
int21h
movax,8000h
movbx,0
movcl,1
movsi,2
Don:
cmpbuf[si],'1'
jzDon1
jmpDon2
Don1:
orbx,ax
Don2:
shrax,cl
incsi
cmpsi,17
jbeDon
Next1:
movdx,bx
movcl,12
shrdx,cl
anddl,0fh
cmpdl,09h
jbeOutput1
adddl,57h
movah,2
int21h
jmpNext2
Output1:
adddl,30h
movah,2
int21h
Next2:
movdx,bx
movcl,8
shrdx,cl
anddl,0fh
cmpdl,09h
jbeOutput2
adddl,57h
movah,2
int21h
jmpNext3
Output2:
adddl,30h
movah,2
int21h
Next3:
movdx,bx
movcl,4
shrdx,cl
anddl,0fh
cmpdl,09h
jbeOutput3
adddl,57h
movah,2
int21h
jmpNext4
Output3:
adddl,30h
movah,2
int21h
Next4:
movdx,bx
anddl,0fh
cmpdl,09h
jbeOutput4
adddl,57h
movah,2
int21h
jmpExit
Output4:
adddl,30h
movah,2
int21h
Exit:
popdx
popcx
popbx
popax
popsi
ret
BtoHendp
DtoBproc
pushsi
pushax
pushbx
pushcx
pushdx
leadx,Msg2
movah,9
int21h
leadx,buf
movah,0ah
int21h
leadx,Msg4
movah,9
int21h
incsi
movcl,[si]
xorch,ch
jcxzExit1
cmpcl,1
jzDone1
cmpcl,2
jzDone2
jmpExit1
Done1:
incsi
movbl,[si]
subbl,30h
movcx,8
jmpOutputa
Done2:
incsi
movbl,[si]
subbl,30h
moval,[si]
subal,30h
movcl,3
shlbl,cl
movcl,1
shlal,cl
addbl,al
incsi
moval,[si]
subal,30h
addbl,al
movcx,8
Outputa:
movdl,30h
shlbl,1
jncSkip
incdl
Skip:
movah,2
int21h
loopOutputa
Exit1:
popdx
popcx
popbx
popax
popsi
ret
DtoBendp
DtoHproc
pushsi
pushax
pushbx
pushcx
pushdx
lead
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 实验 报告 代码 合肥 工业大学