ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:18.37KB ,
资源ID:10097602      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10097602.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(汇编程序调试实验报告.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

汇编程序调试实验报告.docx

1、汇编程序调试实验报告 This model paper was revised by LINDA on December 15, 2012.汇编程序调试实验报告微机原理与接口技术课程作业班级:一、实验目的:汇编语言是一种用助记符表示的程序设计语言。用汇编语言编写的源程序生成的目标代码短,占内存少,执行速度快,适合于系统软件、实时控制软件、I/O接口驱动等程序设计。通过本次实验,熟练掌握汇编程序的调试,深入了解MASM汇编语言及其程序设计方法。二、实验环境EDIT编辑器、MASM汇编程序、LINK连接程序、TD调试程序三、实验过程(一)基础知识储备1.了解微处理器80486的内部结构、寄存器组、

2、工作模式等基本知识。2.熟练掌握微处理器指令系统的相关知识,重点掌握80486的寻址方式和常用的指令格式及功能。3.了解MASM汇编语言及其程序设计方法。掌握MASM汇编语言的语句格式、语法规则、常用伪指令及DOS功能的调用等。了解顺序结构、分支结构、循环结构和子程序的设计方法。(二)汇编语言程序设计1.分析问题,明确要解决的问题和要求。2.确定解决问题的思路和方法。3.将解决问题的方案编制成程序流程图。4.根据流程图,逐条编写程序。5.上机调试,验证程序是否正确。(三)汇编程序调试MASM汇编程序的主要功能是:把源文件转换成用二进制代码表示的目标文件,并生成列表文件;在转换过程中汇编程序将对

3、源程序进行扫描,检查源程序是否有语法错误并指出源程序的语法错误。汇编语言源程序的调试过程需要经过编辑、汇编、连接、运行、调试等几个步骤:1.编辑:使用编辑程序,将编写好的程序输入计算机,建立一个扩展名为ASM的汇编语言源文件*.ASM。2.汇编:使用汇编程序,将*.ASM文件经汇编后生成扩展名为*.OBJ。3.连接:使用连接程序,把一个或多个目标程序连接成可执行文件*.EXE。4.运行:运行可执行文件,验证程序是否正确。5.调试:如果运行中有问题,可使用编辑或调试程序进行修改和调试,重复上述步骤,直到运行正确为止。四、调试实例(一)实例一要求:编写程序,将MBUF为起始单元的5个数按相反次序传

4、送到NBUF开始的存储单元中。实验思路:本例采用顺序结构和循环结构,合理利用堆栈,通过堆栈实现数据按照相反次序传送。源程序:DATA SEGMENT ;数据段开始 MBUF DB 0,1,2,3,4 ;每个数据分配一个存储单元 NBUF DB 5 DUP(0) ;空5个存储单元备用DATA ENDS ;数据段结束STACK SEGMENT PARA STACK ;堆栈段开始,定位类型是PARA DB 100 DUP(0)STACK ENDSCODE SEGMENT ;代码段开始ASSUME CS:CODE, DS:DATA,SS:STACK ;段分配伪指令START: MOV AX,DATA

5、;数据传送 MOV DS,AX ;存储器数据传送到段寄存器中 MOV SI,OFFSET MBUF ;取第一组操作数的偏移地址 MOV DI,OFFSET NBUF ;取第二组操作数的偏移地址 MOV CX,5 ;数据个数5传送到CX中LOP1: MOV AX,SI ;数据传送 PUSH AX ;数据入栈 INC SI ;指针加1 LOOP LOP1 ;循环LOP2: POP AX ;数据出栈 MOV DI,AX ;数据传送 INC DI LOOP LOP2 MOV AH,4CH ;终止进程 INT 21HCODE ENDS END START(二)实例二要求:编写程序,将内存中某数据块中的正

6、数和负数分开,并分别将这些正数和负数送同一数据段的两个缓冲区中,并在屏幕上显示正数和负数的个数。实验思路:本例中要求将正数和负数分开,因此应先判断数据块中数据的正负,然后将不同符号的数分别传送到两个缓冲区中,同时分别计数。利用分支结构和循环结构解决问题。源程序:DATA SEGMENT ;数据段 BUF DB 5,2,7,-4,-2,-3,4,9,-6 COUNT EQU $-BUF ;等值语句,COUNT等于BUF数据长度 ZS DB FS DB STR1 EQU BUF+20 ;正数首地址 STR2 EQU BUF+30 ;负数首地址DATA ENDSSTACK SEGMENT STACK

7、 ;堆栈段 DB 100 DUP(0)STACK ENDSCODE SEGMENT ;代码段 ASSUME CS:CODE,DS:DATA,SS:STACKSTART: MOV AX,DATA MOV DS,AX ;初始化 MOV BX,OFFSET BUF ;取BUF中操作数的偏移地址 MOV CX,COUNT MOV ZS,0 MOV FS,0 MOV SI,OFFSET STR1 MOV DI,OFFSET STR2LOP:MOV AL,BX CMP AL,0 ;带符号数比较 JG LOP1 ;数据大于0时跳转至LOP1 JL LOP2 ;数据小于0时跳转至LOP2LOP1:INC ZS

8、 ;正数计数加1 MOV SI,AL ;正数数据存入SI寄存器中 INC BX INC SI LOOP LOP JMP LASTLOP2:INC FS MOV DI,AL ;负数数据存入DI中 INC BX INC DI LOOP LOPLAST:MOV DL,ZS MOV AH,06H ;显示字符 INT 21H MOV DL,FS MOV AH,06H INT 21H MOV AH,4CH INT 21HCODE ENDS END START(三)实例三要求:编写程序,从内存BLOCK开始,存放着10个字节的有符号数,从这些数中找出绝对值最大的那个最大的数,将其存入MAX中。源程序:DAT

9、A SEGMENT BLOCK DB 1,-1,2,-3,4,5,3,-1,2 ;设置数据 COUNT EQU $-BLOCK ;置计数值 MAX DB ;存最大值DATA ENDSSTACK SEGMENT STACK DB 100 DUP(0)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKSTART: MOV AX,DATA MOV DS,AX MOV SI,OFFSET BLOCK ;数据首地址 MOV MAX,0 MOV CX,COUNT ;CX为计数器AGAIN: MOV AL,SI ;将第一个数据存在AL中 CMP AL

10、,0 ;判断正负 JS JDZ ;小于0转到JDZLOP: CMP AL,MAX ;比较数据与最大值 JG BIG ;AL大转到BIG JMP LOP1JDZ: NEG AL ;求补,即绝对值 JMP LOP1 ;跳转至LOP1BIG: MOV MAX,AL JMP LOP1LOP1: INC SI ;指针加1,指向下一个数 DEC CX ;计数值减1 MOV AH,MAX ;最大值存入AH JNZ AGAIN ;跳转至AGAIN MOV AH,4CH INT 21HCODE ENDS END START(四)实例四要求:编写程序,将内存中N个无符号数从大到小排序后输出显示。源程序:DATA

11、SEGMENT BUF DB 1H,9H,6H,15H,10H COUNT EQU $-BUFDATA ENDSSTACK SEGMENT STACK DB 100H DUP()STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKSTART: MOV AX,DATA MOV DS,AX ;初始化 MOV CX,COUNT ;置计数器 DEC CX ;外层循环减1LOP1: MOV SI,CX MOV DI,1 ;交换标志DI=1 MOV BX,OFFSET BUF ;取数组中第一个偏移地址LOP2: MOV AL,BX ;第一个数据送到A

12、L中 CMP AL,BX+1 ;两数进行比较 JAE LOP3 ;大于等于转到LOP3 XCHG AL,BX+1 ;小于交换两数位置,AL存大数 MOV BX,AL MOV DI,0 ;交换标志DI=0LOP3: INC BX ;数据指针指向下一位 LOOP LOP2 ;循环LOP2 CMP DI,0 ;交换标志为0继续,交换标志为1结束 JNZ OK ;不等于0转到OK,结束 MOV CX,SI LOOP LOP1 ;等于0循环LOP1OK: MOV CX,COUNT MOV BX,OFFSET BUF ;BX为BUF首地址的偏移地址LOP4: MOV DL,BX ;BX中的数放在DL中 M

13、OV AH,06H ;输出显示 INT 21H INC BX ;指针指向下一字符 LOOP LOP4 ;循环LOP4 MOV AH,4CH ;结束进程 INT 21H ;返回DOSCODE ENDS END START五、实验总结本次实验,虽然花费时间较长,但通过实验的完成,我的收获也很多。(一)实验收获无论是知识方面还是能力方面,本次实验都让我得到了很大提升。知识方面,本次实验需要编写符合要求的程序。首先要进行程序的设计,明确实验目的和设计思路,画出程序框图,然后进行程序的编写。通过程序的设计与编写,使我能够更加深入的了解和掌握80486了指令系统。程序编写完成后,便需要进行调试,最初编写的

14、程序中出现了很多错误,在编译过程中发现错误后,不断进行修正,直到程序正确,可以实现所需功能。在这一过程中,我逐渐熟悉了汇编程序编辑、编译、连接、调试的过程,并能通过这些软件的功能找到自己的错误加以改正,最终实现实验目的。能力方面,由于系统原因,不能直接在电脑当前系统中进行汇编程序的调试,因此我安装了虚拟机,在虚拟机安装过程中遇到很多问题,通过对搜索引擎的有效利用,我解决了安装过程中的问题并成功安装了XP系统,建立了实验所需环境,为实验的完成打下基础。本次实验,提高了我分析问题和解决问题的能力,能够通过查阅资料获得所需信息,解决实验过程中所遇到的各种问题。(二)实验感悟本次实验对知识和能力的要求都比较高,开始完成实验室,遇到了很多阻碍,但通过资料的查找和优秀视频的参考,我逐渐找到问题的解决办法,最终实现了实现所需的功能,完成了这项任务。在这一过程中,我更深刻地体会到,任何知识的学习和掌握都是时间和汗水的积累。只有真正认真思考,坚定完成任务的信念,找到解决问题的办法,才能学会知识和技能。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1