合肥工业大学汇编程序设计实验报告完整代码.docx
- 文档编号:1475160
- 上传时间:2022-10-22
- 格式:DOCX
- 页数:32
- 大小:875.27KB
合肥工业大学汇编程序设计实验报告完整代码.docx
《合肥工业大学汇编程序设计实验报告完整代码.docx》由会员分享,可在线阅读,更多相关《合肥工业大学汇编程序设计实验报告完整代码.docx(32页珍藏版)》请在冰豆网上搜索。
合肥工业大学汇编程序设计实验报告完整代码
合肥工业大学
计算机与信息学院
实验报告
课程:
汇编语言程序设计
专业班级:
信息安全13-1
学号:
**********
*****
实验一Debug程序的使用
一.实验目的
1、熟悉DEBUG程序中的命令,学会在DEBUG下调试运行汇编语言源程序。
2、掌握8086/8088的寻址方式及多字节数据的处理方法。
二.实验内容
1、利用DEBUG程序中的“E”命令,将两个多字节数“003F1AE7H”和“006BE5C4H”分别送入起始地址为DS:
0200H和DS:
0204H两个单元中。
2、分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将DS:
0200H单元和DS:
0204H单元中的数据相加,并将运算结果存放在DS:
0208H单元中。
要求:
本次实验的内容均在DEBUG下完成,实现数据的装入、修改、显示;汇编语言程序段的编辑、汇编和反汇编;程序的运行和结果检查。
三.实验过程和程序
实验将”12345678H”和”FEDCBA98H”分别送入起始地址为DS:
200H和DS:
204H的两个单元中。
还包含两个附加题,一是从DS:
0000H开始的5个16位带符号数分别记为x,y,z,v,w,E命令初始化为:
540,1,-1,1080,0,试求w=(v-(x*y+z-540))/x,二是统计bx中1的个数
四.实验结果(包括必要的截图)
将两个多字节数“003F1AE7H”和“006BE5C4H”分别送入起始地址为DS:
0200H和DS:
0204H两个单元中。
直接寻址方式实现数据相加
寄存器间接寻址实现数据相加
附加题一:
从DS:
0000H开始的5个16位带符号数分别记为x,y,z,v,w,用E命令初
始化为:
540,1,-1,1080,0,试求w=(v-(x*y+z-540))/x
附加题二:
完成BX中1的个数的统计。
五.实验体会
通过本次实验,了解了使用debug的各种指令。
同时在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、计算表达式值(V–(X*Y+Z-720))/X;
datasegment
xdw021ch
ydw0001h
zdw0ffffh
vdw0438h
wdw0000h
sum1dw?
sum2dw?
dataends
assumecs:
code,ds:
data
codesegment
start:
movax,data
movds,ax
MOVAX,x
IMULY;x*y
MOVCX,AX
MOVBX,DX
MOVAX,Z
CWD
ADDCX,AX
ADCBX,DX;x*y+z
SUBCX,540;?
SBBBX,0;x*y+z-540
MOVAX,V
CWD
SUBAX,CX
SBBDX,BX;v-(x*y+z-540)
IDIVX;(v-(x*y+z-540))/x
movsum1,ax
movsum2,dx
movax,4c00h
int21h
codeends
endstart
2、求一个班50名学生成绩的平均值(附加题:
最大值和最小值,并将结果显示出来)
datasegment
db7,49dup(6)
maxdb?
mindb?
resultdb0
dataends
assumecs:
code,ds:
data
codesegment
start:
movax,data
movds,ax
movax,0
movcx,50
movdi,0
again:
movbx,0
movbl,[di]
adddi,1
addax,bx
loopagain
movbl,50
divbl
movresult,al
movdi,50
max2:
subdi,1
movcx,50
movsi,0
moval,[di]
max1:
cmpal,[si]
jbmax2
addsi,1
loopmax1
movmax,al
movdi,50
min2:
subdi,1
movcx,50
movsi,0
moval,[di]
min1:
cmpal,[si]
jnbmin2
addsi,1
loopmin1
movmin,al
movax,4c00h
int21h
codeends
endstart
3、从键盘读入一个字符串,以Enter结束,字符串不超过50个字符,并打印该字符串(附加题:
查找中间是否有‘asm’子串。
如果有,输出‘Yes’;否则,输出‘No’)。
datasegment
data2db50,?
50dup('$')
stringdb'yes$'
string1db'no$'
dataends
assumecs:
code,ds:
data
codesegment
start:
movax,data
movds,ax
movah,0ah
movdx,offsetdata2
int21h
movah,2h
movdl,0ah
int21h
movah,2h
movdl,0dh
int21h
movdx,offsetdata2+2
movah,09h
int21h
movah,2h
movdl,0ah
int21h
movah,2h
movdl,0dh
int21h
moval,0h
movcx,47
movdi,0
again:
moval,[di+2]
cmpal,61h
jnznext
moval,[di+3]
cmpal,73h
jnznext
moval,[di+4]
cmpal,6dh
jnznext
jmpyes
next:
adddi,1
loopagain
movdx,offsetstring1
movah,09h
int21h
jmpendcode
yes:
movdx,offsetstring
movah,09h
int21h
endcode:
movax,4c00h
int21h
codeends
endstart
四.实验结果(包括必要的截图)
1、计算表达式值(V–(X*Y+Z-720))/X;
2、求一个班50名学生成绩的平均值(附加题:
最大值和最小值,并将结果显示出来)
0030地址为平均值的商0032地址为最大值0034地址为最小值
3、从键盘读入一个字符串,以Enter结束,字符串不超过50个字符,并打印该字符串(附加题:
查找中间是否有‘asm’子串。
如果有,输出‘Yes’;否则,输出‘No’)。
五.实验体会
通过此次试验,了解了符号扩展指令的使用。
第二程序中,以及在输出时,输入的字符串末尾要注意加结束标志’$’,还有在输出字符串前要先输出个回车换行,否则回车后看不到输出结果。
实验三汇编语言子程序设计(分支、子程序)
一.实验目的
1、掌握分支和子程序结构和设计方法;
2、熟悉在PC机上建立、汇编、连接、调试和运行8086/8088汇编语言程序的过程。
3、通过汇编语言了解高级语言的参数传递等知识。
二.实验内容
1、BL中的只有一位为1。
编写程序测试,并输出提示信息“TheXBitis1”,要求:
地址表和转移表。
2.编写一个子程序计算z=f(x,y)=x*y+x-y(x,y,z有符号数内存数)。
要求通过堆栈(寄存器、内存)传送所有参数。
3.实践CAsm的转换过程。
三.实验过程和程序
1、BL中的只有一位为1。
编写程序测试,并输出提示信息“TheXBitis1”,要求:
地址表和转移表。
;blhaveone1cout< datasegment addresdwfun8,fun7,fun6,fun5,fun4,fun3,fun2,fun1 string8db'The8Bitis1$' string7db'The7Bitis1$' string6db'The6Bitis1$' string5db'The5Bitis1$' string4db'The4Bitis1$' string3db'The3Bitis1$' string2db'The2Bitis1$' string1db'The1Bitis1$' dataends assumeds: data,cs: code codesegment start: movax,data movds,ax movbl,10h movax,0000h movcx,8 math: shlbl,1 jcright jmpnext right: movdl,02h muldl movbp,ax jmpaddres[bp] next: incax loopmath fun8: movdx,offsetstring8 jmpcout fun7: movdx,offsetstring7 jmpcout fun6: movdx,offsetstring6 jmpcout fun5: movdx,offsetstring5 jmpcout fun4: movdx,offsetstring4 jmpcout fun3: movdx,offsetstring3 jmpcout fun2: movdx,offsetstring2 jmpcout fun1: movdx,offsetstring1 jmpcout cout: movah,09h int21h movah,4ch int21h codeend
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 合肥 工业大学 汇编程序 设计 实验 报告 完整 代码