合肥工业大学汇编语言程序设计实验报告 - 图文
更新时间:2023-10-12 11:50:01 阅读量: 综合文库 文档下载
- 合肥工业大学物理实验报告推荐度:
- 相关推荐
合肥工业大学 计算机与信息学院
实验报告
课 程:汇编语言程序设计
专业班级:
学 号:
姓 名:
实验一 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:0100 MOV AX,[0200]↙ 186E:0103 MOV BX,[0202]↙ 186E:0107 ADD AX,[0204]↙ 186E:010B ADC BX,[0206]↙ 186E:010F MOV [0208],AX↙ 186E:0112 MOV [020A],BX↙ 186E:0116 ↙
4、用“U”命令反汇编验证源程序 –U CS:0100↙
186E:0100 A10002 MOV AX,[0200] 186E:0103 8B1E0202 MOV BX,[0202] 186E:0107 03060402 ADD AX,[0204] 186E:010B 131E0602 ADC BX,[0206] 186E:010F A30802 MOV [0208],AX 186E:0112 891E0A02 MOV [020A],BX
186E:0116 注意:
1)检查源程序是否有错误,若有则返回到第3步用“A 地址”命令进行修改,直到程序无错误。
2)DEBUG约定在其命令或源程序中所涉及到的数据均被看作十六进制数,其后不用“H”说明。
3)在DEBUG下,源程序中不能使用“标号”、“变量”和一些伪指令。
4)在DEBUG下,大小写不敏感。
5、程序未执行前,用“R”命令观察,相关寄存器的内容。
–R↙
如:(AX)= 0000H,(BX)= 0000H,(SI)= 0000H, (DI)= 0000H,(CS)= 13F5H,(IP)= 0100H。
6、在程序未执行前,用“D”命令观察DS:0200H,DS:0204H、DS:0208H单元的内容
–D 200 20B ↙
7、用“G”命令运行源程序 –G =100 0116 ↙
8、再用“D”命令观察DS:0200H~DS:020BH字节单元中的内容 –D 200 20B↙
9、用“T”单步操作命令对源程序单步执行,观察AX、BX、CS、IP寄
器内容的变化,并与预计的结果相比较。
注意:D命令显示内存数据,注意观察多字节数据在内存中的存放方式。 指令执行的时。
程序运行结果:(AX)= 1110H ,(BX)= 1111H
DS:0208H四字节单元的内容: 11111110H 四. 实验结果(包括必要的截图)
五. 实验体会
通过这次实验的练习,我熟悉了在DEBUG的环境下,汇编程序中的命令,并且学会调试运行汇编语言源程序,掌握8086/8088的寻址方式及多字节数据的处理方法。虽然自己动手实现了简单的计算的中间出现了很多错误,但是在查阅书本以及在老师和同学的帮助下完成了实验任务。
实验二 汇编语言程序设计(顺序、循环)
一. 实验目的
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)data segment
x dw 1 y dw 0 z dw 0 v dw 0 sum1 dw ? sum2 dw ? data ends code segment
assume cs:code,ds:data start:
mov ax,data mov ds,ax mov ax,x imul y mov cx,ax mov bx,dx mov ax,z cwd
add cx,ax adc bx,dx sub cx,720 sbb bx,0 mov ax,v cwd
sub ax,cx sbb dx,bx idiv x
mov sum1,ax
mov sum2,dx mov ax,4c00h int 21h
code ends end start 2data segment
grade dw 98,98,96,95,94,93,87,86,85,97,86 data ends code segment
assume cs:code,ds:data start:
mov ax,data mov ds,ax xor ax,ax mov cx,11
mov bx,offset grade
loop1: add ax,[bx] inc bx inc bx loop loop1 mov cx,11 idiv cx
mov bx,ax mov ax,4c00h int 21h Code ends end start 3)DATA SEGMENT
BUF DB 50, ?, 50 DUP(24H) CHAR DB 0AH,0DH,\DATA ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATA START:
MOV AX,DATA MOV DS,AX
MOV AH,10 LEA DX,BUF INT 21H
LEA DX,CHAR MOV AH,9 INT 21H
LEA DX,BUF+2 MOV AH,9 INT 21H
MOV AH,4CH INT 21H
四.实验结果(包括必要的截图)
五.实验体会
通过这次实验的练习,我掌握了顺序和循环程序结构和设计方法,并且可以自己动手在debug下运用顺序和循环的程序结构自己设计汇编的代码,另外这节课我还学会了在在屏幕上输入和输出字符串,非常的有趣,顺便我又熟悉了一遍在PC机上建立、汇编、连接、调试和运行8086/8088汇编语言程序的过程,感觉收获颇丰。挺高了自己对于学习汇编的兴趣。
实验三 汇编语言子程序设计(分支、子程序)
一. 实验目的
1、掌握分支和子程序结构和设计方法;
2、熟悉在PC机上建立、汇编、连接、调试和运行8086/8088汇编语言程序的过程。 3、通过汇编语言了解高级语言的参数传递等知识。
二. 实验内容
1、1. BL中的只有一位为1。编写程序测试,并输出提示信息“The X Bit is 1”,要求:地址表和转移表。
2. 编写一个子程序计算z=f(x,y)=x*y+x-y(x,y,z有符号数内存数)。要求通过堆栈(寄存器、内存)传送所有参数。 3. 实践C?Asm的转换过程。
三. 实验过程和程序 1.
;实验三 第一题 DATA SEGMENT
;定义提示信息msg,msgi分别代表第i字节出为1 msg1 db'the 1 bit is 1',0dh,0ah,'$' msg2 db'the 2 bit is 1',0dh,0ah,'$' msg3 db'the 3 bit is 1',0dh,0ah,'$' msg4 db'the 4 bit is 1',0dh,0ah,'$' msg5 db'the 5 bit is 1',0dh,0ah,'$' msg6 db'the 6 bit is 1',0dh,0ah,'$' msg7 db'the 7 bit is 1',0dh,0ah,'$' msg8 db'the 8 bit is 1',0dh,0ah,'$' DATA ENDS
STACKS SEGMENT ;未定义栈内容 STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATA,SS:STACKS START: MOV AX,DATA MOV DS,AX
;程序代码部分
xor bx,bx ;用异或将bx,dx部分清零 xor dx,dx mov bl,08h ;将00001000b赋值给bl mov cx,8 ;利用loop进行8次循环 Lp1: shr bl,1 ;将bl进行逻辑右移一次 jc next ;判断CF中数据是否为1,若是跳转到next处 add dx,3 ;dx加3 loop Lp1 next: mov ah,09h
lea si,table ;将转移表的地址传入到si中 add si,dx ;得到转移表的CF为1的地方 jmp si table:
;同一个代码段内使用near跳转 jmp near ptr l1 jmp near ptr l2 jmp near ptr l3 jmp near ptr l4 jmp near ptr l5 jmp near ptr l6 jmp near ptr l7 jmp near ptr l8
;Li: 将msgi的地址传入到dx中,并跳转到done处 l1: lea dx,msg1 jmp done l2: lea dx,msg2 jmp done l3: lea dx,msg3 jmp done l4: lea dx,msg4 jmp done l5: lea dx,msg5 jmp done l6: lea dx,msg6 jmp done l7: lea dx,msg7 jmp done l8: lea dx,msg8 jmp done ;返回汇编窗口 done: int 21h MOV AH,4CH INT 21H ;代码部分结束
CODES ENDS
END START 2.DATAS SEGMENT x dw 6 y dw 8 DATAS ENDS
STACKS SEGMENT ;未定义栈部分 STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS START:
MOV AX,DATAS MOV DS,AX ;主程序部分
mov ax,x ;分别将x,y压栈 push ax mov ax,y push ax call f ;调用子程序f(x,y) add sp,4 pop ax pop ax ;子程序调用结束,弹栈 MOV AH,4CH INT 21H
;子程序部分 f proc push bp mov bp,sp push ax push dx push bx mov bx,[bp+4] ;bx=y mov ax,[bp+6] ;ax=x imul bx ;x*y add ax,[bp+6] ;x*y+x adc dx,0 sub ax,[bp+4] ;x*y+x-y sbb dx,0 pop bx
pop dx pop ax ret f endp
CODES ENDS
END START
四. 实验结果(包括必要的截图)
五. 实验体会
通过这次实验的练习,我掌握分支和子程序结构和设计方法,特别是地址表和转移表的运用,已经可以熟练的运用转移表和地址表进行分支结构的设计,实验二又让我对子程序参数的调用有了深刻的体会,知道了在运用堆栈进行参数传递时需要注意的要点,另外这次实验又让我再一次熟悉一遍在PC机上建立、汇编、连接、调试和运行8086/8088汇编语言程序的过程。
jne again }
for(int i=0;i<5;i++) cout< 四. 实验结果(包括必要的截图) 五. 实验体会 这次实验的练习,使我对汇编语言中宏程序有了一定的了解,并且自己动手编写了宏程序,另外我还掌握了中断服务子程序的编写,感觉非常的复杂,很长时间找不到头绪,最后请教了老师和同学。在他们的帮助下完成了实验。虽然花了很久的时间,但是还是非常值得的。
正在阅读:
国内主要车型及适配轮胎表05-15
教科版二年级上册科学实验报告单 - 图文12-28
管道施工水暖工作业安全技术交底08-25
墨玉县职称论文发表-屏式过热器超温氧化皮论文选题题目04-30
中国钢化玻璃楼梯行业市场前景分析预测年度报告(目录) - 图文05-19
“凝心聚力决胜全面小康、决战脱贫攻坚”主题党日党课09-06
我相信我能行满分作文02-04
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 合肥工业大学
- 汇编语言
- 程序设计
- 实验
- 图文
- 报告
- 教师招聘考试教育综合(分章节练习)之7.1教学概述
- 2011-2012学年度第一学期期中考试生物试题
- 河道管理范围内的工程建设方案申请和审查意见书
- 经济法教程课后答案及案例分析
- 煤气鼓风机操作规程
- 山西同煤集团下属企业
- 肺栓塞学习笔记与总结
- 1、湖北师范学院大学生创新创业训练计划项目申报书(终) - 图文
- 河流及洋流练习题 - 图文
- 新版六年级英语上册第四单元A部分Lets-learn导学案
- 锅炉车间司炉操作规程
- 职业生涯规划管理的基本概念及内容
- 北京新机场协同发展区规划 - 图文
- 金鹰小学小学生性教育课讲座
- 西方音乐史题库
- 学前儿童社会性发展
- HACCP考核试题及答案
- 助学资助感谢信回信
- 2018年秋浙教版七年级上《2.5.1有理数的乘方》同步练习含答案
- 莆田一中2012年高考喜报