- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
汇编程序调试实验报告
汇编程序调试实验报告
汇编程序调试实验报告
微机原理与接口技术
课
程
作
业
班级:
目录
一、实验目的:
汇编语言是一种用助记符表示的程序设计语言。用汇编语言编写的源程序生成的目
标代码短,占内存少,执行速度快,适合于系统软件、实时控制软件、 I/O 接口驱动等程
序设计。通过本次实验,熟练掌握汇编程序的调试,深入了解 MASM汇编语言及其程序设计方法。
二、实验环境
EDIT 编辑器、 MASM汇编程序、 LINK 连接程序、 TD调试程序
三、实验过程
(一)基础知识储备
了解微处理器 80486 的内部结构、寄存器组、工作模式等基本知识。
2. 熟练掌握微处理器指令系统的相关知识,重点掌握 80486 的寻址方式和常用的指令格式及功能。
了解 MASM汇编语言及其程序设计方法。掌握 MASM汇编语言的语句格式、语法规则、常用伪指令及 DOS功能的调用等。了解顺序结构、分支结构、循环结构和子程序的设计方法。
(二)汇编语言程序设计
分析问题,明确要解决的问题和要求。
确定解决问题的思路和方法。
将解决问题的方案编制成程序流程图。
根据流程图,逐条编写程序。
上机调试,验证程序是否正确。
(三)汇编程序调试
MASM汇编程序的主要功能是:把源文件转换成用二进制代码表示的目标文件,并生成列表文件 ; 在转换过程中汇编程序将对源程序进行扫描, 检查源程序是否有语法错误并指出源程序的语法错误。
汇编语言源程序的调试过程需要经过编辑、汇编、连接、运行、调试等几个步骤 :
1. 编辑:使用编辑程序,将编写好的程序输入计算机,建立一个扩展名为 ASM的汇编语言源文件 *.ASM。
汇编:使用汇编程序,将 *.ASM 文件经汇编后生成扩展名为 *.OBJ 。
连接:使用连接程序,把一个或多个目标程序连接成可执行文件*.EXE。
运行:运行可执行文件,验证程序是否正确。
调试:如果运行中有问题,可使用编辑或调试程序进行修改和调试,重复上述步骤,直到运行正确为止。
四、调试实例
(一)实例一
要求:编写程序,将 MBUF为起始单元的 5 个数按相反次序传送到 NBUF开始的存储单元中。
实验思路: 本例采用顺序结构和循环结构,合理利用堆栈,通过堆栈实现数据按照相反次序传送。
源程序:
DATA SEGMENT ;
MBUF DB 0,1,2,3,4 ;
NBUF DB 5 DUP(0) ;
DATA ENDS ;
STACK SEGMENT PARA STACK ;
DB 100 DUP(0)
STACK ENDS
CODE SEGMENT ;
ASSUME CS:CODE, DS:DATA,SS:STACK
START:
MOV AX,DATA ;
MOV DS,AX ;
MOV SI,OFFSET MBUF ;
MOV DI,OFFSET NBUF ;
MOV CX,5 ;
数据段开始
每个数据分配一个存储单元
空 5 个存储单元备用
数据段结束
堆栈段开始,定位类型是 PARA
代码段开始
;段分配伪指令
数据传送
存储器数据传送到段寄存器中
取第一组操作数的偏移地址
取第二组操作数的偏移地址
数据个数 5 传送到 CX中
LOP1:
MOV AX,[SI]
PUSH AX
INC SI
LOOP LOP1
;
;
;
;
数据传送
数据入栈
指针加 1
循环
LOP2:
POP AX
MOV [DI],AX
;
;
数据出栈
数据传送
INC DI
LOOP LOP2
MOV AH,4CH
;
终止进程
INT 21H
CODE ENDS
END START
(二)实例二
要求: 编写程序,将内存中某数据块中的正数和负数分开,并分别将这些正数和负数送同一数据段的两个缓冲区中,并在屏幕上显示正数和负数的个数。
实验思路: 本例中要求将正数和负数分开,因此应先判断数据块中数据的正负,然后将
不同符号的数分别传送到两个缓冲区中,同时分别计数。利用分支结构和循环结构解决
问题。
源程序:
DATA SEGMENT ;
BUF DB 5,2,7,-4,-2,-3,4,9,-6
COUNT EQU $-BUF ;
ZSDB?
FSDB?
STR1 EQU BUF+20 ;
STR2 EQU BUF+30 ;
DATA ENDS
STACK SEGMENT STACK ;
DB 100 DUP(0)
STACK ENDS
CODE SEGMENT ;
ASSUME CS:CODE,DS:DATA,SS:STACK
START:
MOV AX,DATA
MOV DS,AX ;
MOV BX,OFFSET BUF ;
MOV CX,COUNT
MOV ZS,0
MOV FS,0
M
文档评论(0)