汇编语言程序设计上机实验 - 图文
更新时间:2024-05-31 07:01:01 阅读量: 综合文库 文档下载
- 汇编语言程序设计实验总结推荐度:
- 相关推荐
实验报告
汇编语言程序设计 实验报告
系
班级
学号
姓名
指导教师 陆勤
实验一 汇编语言运行环境及方法、简单程序设计
一、程序说明
本程序用来比较两个字符串string1和string2所含的字符是否相同。若相同则显示‘Match’,否则显示‘Nomatch’。
在程序的数据段先定义两个字符串string1和string2,再定义两个字符串mess1和mess2,分别代表‘Match’和‘Nomatch’。再代码段比较字符串string1和string2,通过比较判断是否相同。若相同则显示‘Match’,否则显示‘Nomatch’ 二、结合你的调试过程,整理其中用到的debug命令的使用方法和效果截图,并解释每一步骤的结论
用汇编程序masm对源文件汇编产生目标文件obj C:\\masm5\\sample
用连接程序link尝试执行文件exe
执行程序
使用debug程序调试
-g命令运行程序
-u命令显示程序,了解命令地址
-g0b将断点设置在程序的主要部分以前
-d0根据其中只是的ds寄存器内容查看数据段情况,显示地址0及地址0后面数据
e命令修改数据区的字符串
q命令退出debug
t命令逐条跟踪程序的执行
e命令修改一段字符串
三、调试中遇到的问题及解决方法
E命令修改数据区的一个字符,而不是一段字符串
实验二 用DEBUG编程:使用堆栈段将
AX和BX的内容进行交换等
一、程序说明:
1、设堆栈指针SP=2000H,AX=3000H,BX=5000H;编一程序段将AX和BX的内容进行交换。请用堆栈作为两寄存器交换内容的中间存储单元,用DEBUG调试程序进行汇编与调试。
2、设DS=当前段地址,BX=0300H,SI=0002H;请用DEBUG的命令将存储器偏移地址300H~304H连续单元顺序装入0AH,0BH,0CH,0DH,0EH。在DEBUG状态下送入下面程序,并用单步执行的方法,分析每条指令源地址的形成过程,当数据传送完毕时,AX中的内容是什么。
二、调试说明 第一部分先将程序编好后,在DOS环境下用masm程序生成obj文件,再用link程序生成exe文件,然后进入debug进行调试,用-t命令逐步运行程序,查看AX和BX中内容的变化。如果发现AX和BX中的内容进行了交换,则说明程序运行成功。
进入debug程序,先用—u指令查看一下程序,结果如下:
用—t指令逐步调试,结果如下:
第二部分:如前面第一章最终生成可执行程序。也可进入进入debug进行编写,如下:
三:程序清单和执行结果: 第一个程序清单:
DATAS SEGMENT DATAS ENDS
STACKS SEGMENT STACKS ENDS CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX MOV AX,3000H MOV BX,5000H PUSH AX MOV AX,BX POP BX
MOV AH,4CH
INT 21H CODES ENDS END START
在debug 中进行调试,逐步执行结果:
第二个程序清单: DATAS SEGMENT DATAS ENDS CODES SEGMENT
ASSUME CS:CODES,DS:DATAS START: MOV AX,DATAS MOV DS,AX MOV BX,0300h MOV SI,0002h MOV AH,4CH INT 21H CODES ENDS END START
在debug中进行调试,逐步执行结果:
实验三、存储器块清零和内存块移动
一、 程序说明:
第一个程序是存储块清零。程序流程大概为首先设置起始地址,然后设置块长度,然后将当前地址内容清零,地址加1,然后查看是否清除完全,若没有则回到当前地址清零,然后再查看,直到地址内容清除完,结束程序。
第二个程序是内存块移动。程序流程框图为:首先设置块的源地址,然后设置筷的目的地址,然后再设置移动长度,然后按长度重复传送数据,然后结束。 二、 调试说明:
第一个程序在进入debug后,先用-u指令查看一下程序,再将断点设置在指令Loop again之后,通过指令-g加上指令Loop again后的地址,将程序运行到Loop again之后停止,然后再通过-d指令查看相关内存内容是否被清零。 第二个程序在进入到debug后,先用-u指令查看一下程序,再将断点设置在指令rep movsb之前,通过指令-g运行后,然后用-d指令查看一下内存块的相关内容,得到的结果如下:
三:源程序代码和执行结果:
实验一: data segment
block db 256 dup(55h) data ends
code segment
assume cs :code ,ds:data start proc near mov ax,data mov ds ,ax
mov bx,offset block mov cx,256 again:
mov [bx],byte ptr 0 inc bx
loop again jmp $
code ends end start
实验二: 源代码:
地址块加一方法移动块的源程序: DATAS SEGMENT
SOURCE DB 256 DUP(055H) TARGET DB 256 DUP(0AAH) DATAS ENDS
STACKS SEGMENT STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,ES:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX MOV ES,AX
MOV SI,OFFSET SOURCE
MOV DI,OFFSET TARGET MOV CX,256 REP MOVSB MOV AH,4CH INT 21H CODES ENDS END START
第二部分地址块减一方法移动块的源程序: DATAS SEGMENT
SOURCE DB 256 DUP(055H) T ARGET DB 256 DUP(0AAH) DATAS ENDS
STACKS SEGMENT STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,ES:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX MOV ES,AX
MOV SI,OFFSET SOURCE ADD SI,255
MOV DI,OFFSET TARGET MOV CX,256
NEXT:MOV AL,[SI] MOV [DI],AL DEC SI INC DI LOOP NEXT MOV AH,0 MOV AH,4CH INT 21H
CODES ENDS END START 执行结果:
实验四 将键盘输入的小写字母用大写字母显示出来
一、 程序说明
本程序用来将小写字母转变为大写,并在屏幕上显示出来。先利用DOS功能调用INT21H的1号功能从键盘输入字符,然后判断输入的是否是小写字母,若不是小写字母,则显示输入出错,重新输入。若输入的是小写字母,则通过将其减去20h,从而变为大写字母。在通过DOS功能调用INT21H的2号功能显示出来。若输入的是Enter键,则结束程序。 二、 调试说明
调试程序可以在debug中进行,基本步骤和前面的实验大致相同,在软件Masm 集成实验环境 2008.4中编辑程序,则可以直接点击程序上的调试按钮,即可进行调试。调试时可通过-t指令来逐步运行程序,观察相关内容变化,来调试程序。
三:源程序代码和执行结果: DATAS SEGMENT
string1 db ' this not is a zimu!Please input between a to z!',0ah,0dh,'$' string2 db ' $' DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS START:
MOV AX,DATAS MOV DS,AX L0:mov ah,1
int 21h cmp al,0dh jz exit cmp al,'a' jae L1 jb L3
L1: cmp al,'z' jna L2 ja L3
L2:sub al,20h mov cl,al lea dx,string2 mov ah,9 int 21h mov dl,0 mov dl,cl mov ah,2 int 21h
mov dl,0ah mov ah,2 int 21h mov dl,0dh mov ah,2 int 21h jmp L0
L3: lea dx,string1 mov ah,9 int 21h jmp L0
exit: MOV AH,4CH
int 21H codes ends end start 运行结果:
正在阅读:
汇编语言程序设计上机实验 - 图文05-31
工人先锋号创建会议纪要07-17
精选表弟作文300字4篇03-27
基于分布参数模型的水平管式降膜蒸发器模拟07-29
一场别开生面的演出作文07-06
易制毒管理工作职责05-14
新课标初中数学四星级题库书稿4 - 图文09-23
高考化学一轮复习目录01-17
- 天大砼方案 - 图文
- 农业科技网络书屋能力提升_玉米错题选
- DNS习题
- 浅议检察官对罪犯谈话的技巧与效果
- 高考语文文言文翻译专题训练
- AB类学科竞赛目录(2015)
- 建筑面积计算新规定(2015最新)
- Revit2012初级工程师题集一
- 十三五项目米线可行性报告
- 2013体育学院党组织建设工作总结
- 2014Revit工程师题库
- 高中数学如何实施研究性学习
- 茶艺表演 中英互译
- 小学音乐湘文艺版 四年级下册 第十一课《(歌表演)脚印》优质课公
- 山西省农村合作经济承包合同管理条例
- 2015年镇江市中考化学一模试题参考答案及评分标准(定稿)
- 统计 题集
- 批评意见清单
- 8潞安集团蒲县黑龙关煤矿矿业公司2
- 鄂教版四年级语文上册复习精要(光谷四小)
- 汇编语言
- 上机
- 程序设计
- 实验
- 图文
- 土地增值税清算技巧与汇算清缴热点难点问题
- 新版部编人教版一年级下册语文全册教案(2018精编版) - 图文
- 华侨大学第38届运动会田径比赛(泉州校区)竞赛规程
- 会计从业资格证计算题大题
- 非流动资产会计分录汇总
- 柳州市公园路小学校园网设计方案new
- 载重汽车驱动桥设计计算说明书
- 耳鼻咽喉教研室教学总结-3
- 生物工程设备复习题
- 文化生活知识大背诵
- 2014-2015学年校三好学生(标兵)、优秀学生干部初审名单
- 四川省攀枝花市矿产资源总体规划
- QBZ-45矿用隔爆型电磁起动器说明书
- 直放站及室内覆盖系统工程质量验收细则(v.02)
- 《单招新学径数学第二册》调研报告
- 北师大版四年级数学下册第三单元教学设计
- 现代医学电子仪器原理与设计复习指导(含答案)
- 金蝶EAS常见问题解答 - 基础业务服务 - 2016
- 2013年全国各地中考数学试题分类汇编:统计
- 体育理论考试题库