汇编语言实验报告.docx
- 文档编号:8792220
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:30
- 大小:133.13KB
汇编语言实验报告.docx
《汇编语言实验报告.docx》由会员分享,可在线阅读,更多相关《汇编语言实验报告.docx(30页珍藏版)》请在冰点文库上搜索。
汇编语言实验报告
合肥工业大学
计算机与信息学院
实验报告
课程:
汇编语言程序设计
专业班级:
计算机科学与技术11-4班
学号:
姓名:
实验一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程序–;(“–”为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)=0000,(BX)=0000,(SI)=0000,
(DI)=0000,(CS)=073f,(IP)=0100。
6、在程序未执行前,用“D”命令观察DS:
0200H,DS:
0204H、DS:
0208H单元的内容
–D20020B↙
7、用“G”命令运行源程序
–G=1000116↙
8、再用“D”命令观察DS:
0200H~DS:
020BH字节单元中的内容
–D20020B↙
9、用“T”单步操作命令对源程序单步执行,观察AX、BX、CS、IP寄存器内容的变化,并与预计的结果相比较。
四.实验结果(包括必要的截图)
1、程序运行结果:
(AX)=00AB,(BX)=00AB
DS:
0208H四字节单元的内容:
AB00AB00
2试用寄存器间接寻址方式编写程序段,完成上述程序段的功能
程序代码:
1、用寄存器寻址实现以上功能:
-a
13E3:
0133movsi,200
13E3:
0136movdi,204
13E3:
0139movbx,208
13E3:
013Cmovax,[si]
13E3:
013Emovdx,[si+2]
13E3:
0141addax,[di]
13E3:
0143adcdx,[di+2]
13E3:
0146mov[bx],ax
13E3:
0148mov[bx+2],dx
13E3:
014B
-g=13314b
五.实验体会
这次的实验是调试程序Debug的使用,虽然很简单只是按实验步骤输入指令或数据然后等待结果就行了,但这很重要重在观察调试的过程,和程序的运作。
当中要注意的细节也很多这是我应该注意的,这对于我们后面的学习很重要。
实验二汇编语言程序设计(顺序、循环)
一.实验目的
1、掌握顺序和循环程序结构和设计方法;
2、熟悉在PC机上建立、汇编、连接、调试和运行8086/8088汇编语言程序的过程。
二.实验内容
1、X、Y、Z、V均为字变量,在X、Y、Z、V字单元中存放是16位带符号数。
试编写汇编语言程序完成以下功能:
①计算表达式值(V–(X*Y+Z-720))/X;
②将上述表达式运算结果整数放在SUM1单元,余数放在SUM2单元。
2、求一个班50名学生成绩的平均值(附加题:
最大值和最小值,并将结果显示出来)
3、从键盘读入一个字符串,以Enter结束,字符串不超过50个字符,并打印该字符串(附加题:
查找中间是否有‘asm’子串。
如果有,输出‘Yes’;否则,输出‘No’)。
三.实验过程和程序
1.先用windows自带的文本编辑器编辑源代码文件,以txt格式保存
2.为了方便起见,把txt文件放到masm.exe的目录中
3.然后打开cmd,进入到存放masm的目录中,运行masm*.txt连续按下回车键,就会在目录中生成obj文件
4.然后运行link*.obj就可以对obj文件进行连接生成exe文件
5.可以直接输入文件名运行程序了
6.在debug下查看结果或直接运行exe文件验证
程序源代码:
1.
Stacksegmentstack
dw512dup(?
)
Stackends
Datasegment
xdw2
ydw5
zdw720
vdw20
sum1dw?
'$'
sum2dw?
'$'
sumdw?
Dataends
Codesegment
assumecs:
code,ds:
data,ss:
stack
start:
movax,data
movds,ax
;在代码段填入指令序列(V–(X*Y+Z-720))/X
movax,x
imuly;x*y
movcx,ax
movbx,dx
movax,z
cwd
addcx,ax
adcbx,dx
subcx,2d0h
sbbbx,0
movax,v
cwd
subax,cx
sbbdx,bx;V–(X*Y+Z-720)
idivx;(V–(X*Y+Z-720))/X
movSUM1,ax
movsum,dx
movax,segSUM1
movds,ax
movdx,offsetSUM1
movah,9
int21h
movax,sum
movSUM2,ax
movax,segSUM2
movds,ax
movdx,offsetSUM2
movah,9
int21h
movah,4ch
int21h
Codeends
endstart
2.
codesegment
assumecs:
code,ds:
code
strdb10dup(4bh,50h,55h,5ah,5fh);定义50个分数
start:
movax,code
movds,ax
movbx,0h
movsi,bx
movcx,32h;计数50
movax,0h
next:
addal,str[si]
adcah,0h
incsi
loopnext
movbl,32h
idivbl
movdl,al
movdh,ah
movah,02h
int21h
movdl,dh
movah,02h
int21h
movah,4ch
int21h
codeends
endstart
3.
datasegment
promptdb'Inputastring:
$'
bufdb33h,?
51dup(?
)
Lfdb0ah
yesdb'Yes$'
nodb'No$'
dataends
codesegment
assumecs:
code,ds:
data
start:
movax,data
movds,ax
leadx,prompt
movah,9
int21h
leadx,buf
movah,0ah
int21h
movdl,Lf
movah,2
int21h
movcl,buf+1
movch,0
leabx,buf+2
addbx,cx
movbyteptr[bx],'$'
leadx,buf+2
movah,9
int21h
movdl,Lf
movah,2
int21h
subcx,2
movsi,2
L:
movbl,buf[si]
cmpbl,61h
jnznext
movbl,buf[si+1]
cmpbl,73h
jnznext
movbl,buf[si+2]
cmpbl,6dh
jnznext
leadx,yes
movah,9
int21h
jmpLast
next:
incsi
loopL
leadx,no
movah,9
int21h
Last:
movah,4ch
int21h
Codeends
endstart
四.实验结果(包括必要的截图)
实验三汇编语言子程序设计(分支、子程序)
一.实验目的
1、掌握分支和子程序结构和设计方法;
2、熟悉在PC机上建立、汇编、连接、调试和运行8086/8088汇编语言程序的过程。
3、通过汇编语言了解高级语言的参数传递等知识。
二.实验内容
1、1.BL中的只有一位为1。
编写程序测试,并输出提示信息“TheXBitis1”,要求:
地址表和转移表。
2.编写一个子程序计算z=f(x,y)=x*y+x-y(x,y,z有符号数内存数)。
要求通过堆栈(寄存器、内存)传送所有参数。
三.实验过程和程序
1.先用windows自带的文本编辑器编辑源代码文件,以txt格式保存
2.为了方便起见,把txt文件放到masm.exe的目录中
3.然后打开cmd,进入到存放masm的目录中,运行masm*.txt连续按下回车键,就会在目录中生成obj文件
4.然后运行link*.obj就可以对obj文件进行连接生成exe文件
5.可以直接输入文件名运行程序了
6.在debug下查看结果或直接运行exe文件验证
程序源代码:
1.
DATASEGMENT
STRING1DB'THE1BITIS1!
$'
STRING2DB'THE2BITIS1!
$'
STRING3DB'THE3BITIS1!
$'
STRING4DB'THE4BITIS1!
$'
STRING5DB'THE5BITIS1!
$'
STRING6DB'THE6BITIS1!
$'
STRING7DB'THE7BITIS1!
$'
STRING8DB'THE8BITIS1!
$'
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVDX,0
MOVBL,00001000B
MOVCX,8
MOVAL,BL
L0:
SHLAL,1
JCOVER
ADDDX,3
LOOPL0
OVER:
LEASI,JMPTABLE
ADDSI,DX
JMPSI
JMPTABLE:
JMPNEARPTRL1
JMPNEARPTRL2
JMPNEARPTRL3
JMPNEARPTRL4
JMPNEARPTRL5
JMPNEARPTRL6
JMPNEARPTRL7
JMPNEARPTRL8
L1:
LEADX,STRING1
JMPLAST
L2:
LEADX,STRING2
JMPLAST
L3:
LEADX,STRING3
JMPLAST
L4:
LEADX,STRING4
JMPLAST
L5:
LEADX,STRING5
JMPLAST
L6:
LEADX,STRING6
JMPLAST
L7:
LEADX,STRING7
JMPLAST
L8:
LEADX,STRING8
LAST:
MOVAH,9
INT21H
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
1.2
DATASEGMENT
STRING1DB'THE1BITIS1!
$'
STRING2DB'THE2BITIS1!
$'
STRING3DB'THE3BITIS1!
$'
STRING4DB'THE4BITIS1!
$'
STRING5DB'THE5BITIS1!
$'
STRING6DB'THE6BITIS1!
$'
STRING7DB'THE7BITIS1!
$'
STRING8DB'THE8BITIS1!
$'
AddrTabledwL1,L2,L3,L4,L5,L6,L7,L8
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVsi,0
MOVBL,00000010B
MOVCX,8
MOVAL,BL
L0:
SHLAL,1
JCOVER
addsi,2
LOOPL0
OVER:
;leabx,AddrTable
;addbx,dx
jmpAddrTable[si]
L1:
LEADX,STRING1
JMPLAST
L2:
LEADX,STRING2
JMPLAST
L3:
LEADX,STRING3
JMPLAST
L4:
LEADX,STRING4
JMPLAST
L5:
LEADX,STRING5
JMPLAST
L6:
LEADX,STRING6
JMPLAST
L7:
LEADX,STRING7
JMPLAST
L8:
LEADX,STRING8
LAST:
MOVAH,9
INT21H
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
2
DATASEGMENT
RESULTDW?
XDB8
YDB3
DATAENDS
SSEGSEGMENT
DW512DUP(?
)
SSEGENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
CALLFUCTION
MOVAX,RESULT
MOVBL,10
IDIVBL
ADDAL,30H
ADDAH,30H
MOVBL,AH
MOVDL,AL
MOVAH,02H
INT21H
MOVDL,BL
MOVAH,02H
INT21H
MOVAH,4CH
INT21H
FUCTIONPROC
PUSHAX
PUSHBX
PUSHCX
MOVAL,X
IMULY
MOVBX,AX
MOVAL,X
CBW
ADDBX,AX
MOVAL,Y
CBW
SUBBX,AX
MOVRESULT,BX
POPCX
POPBX
POPAX
RET
FUCTIONENDP
CODEENDS
ENDSTART
四.实验结果(包括必要的截图)
实验四汇编语言高级编程专题
一.实验目的
1、汇编语言宏程序设计;
2、掌握中断服务子程序的编写。
二.实验内容
1、编写一个宏,求三个数的最小数,原型为:
MIN3x,y,z,min
2、挂接1CH中断,正计时60秒后退出。
要求屏幕显示0-59的秒数。
三.实验过程和程序
1.先用windows自带的文本编辑器编辑源代码文件,以txt格式保存
2.为了方便起见,把txt文件放到masm.exe的目录中
3.然后打开cmd,进入到存放masm的目录中,运行masm*.txt连续按下回车键,就会在目录中生成obj文件
4.然后运行link*.obj就可以对obj文件进行连接生成exe文件
5.可以直接输入文件名运行程序了
6.在debug下查看结果或直接运行exe文件验证
程序源代码:
1、
MIN3macroa,b,c
localNext1,Next2,Done
moval,a
cmpal,b
jaNext1
cmpal,c
jaNext2
jmpDone
Next1:
moval,b
cmpal,c
jaNext2
jmpDone
Next2:
moval,z
Done:
movdl,al
movah,2
int21h
endm
datasegment
mindb?
xdb?
ydb?
zdb?
InPdb'Inputthenumber:
','$'
Wrapdb0dh,0ah,'$'
dataends
codesegment
assumecs:
code,ds:
data
Start:
movax,data
movds,ax
movdx,offsetInP
movah,9
int21h
movah,1
int21h
movx,al
movah,1
int21h
movy,al
movah,1
int21h
movz,al
movdx,offsetWrap
movah,9
int21h
MIN3x,y,z
movah,4ch
int21h
codeends
endStart
2、
INTNOEQU1CH
USEINT=1
DATASEGMENT
OLDISRDW?
?
TIMERDB100
COUNTERDW0
ISDONEDB60
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAX,60
MOVES,AX
;PROTECT
IFUSEINT
MOVAL,INTNO
MOVAH,35H
INT21H
;ES:
BX
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
;SETNEWISR
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
WAITHERE:
CMPISDONE,1
JNZWAITHERE
EXIT:
;RESTORE
IFUSEINT
PUSHDS
MOVDX,OLDISR[60]
MOVAX,OLDISR[2]
MOVDS,AX
MOVAL,INTNO
MOVAH,25H
INT21H
POPDS
ELSE
CLI
MOVAX,OLDISR[60]
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;便于中断嵌套
;COUNTHERE
INCTIMER
AGAIN:
CMPTIMER,1000/55;18
JBDONE
MOVTIMER,60
;carriage
MOVAH,2
MOVDL,13
INT21H
;printtime
MOVAX,COUNTER
MOVDL,10
DIVDL
MOVDH,AH
MOVDL,AL
MOVAH,2
ADDDL,30H
INT21H
MOVDL,DH
ADDDL,30H
INT21H
DECCOUNTER
JGEDONE
MOVISDONE,1
DONE
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 实验 报告
![提示](https://static.bingdoc.com/images/bang_tan.gif)