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

上传人:scccc 文档编号:14066968 上传时间:2022-02-01 格式:DOC 页数:10 大小:56.50KB
返回 下载 相关 举报
汇编程序调试实验报告.doc_第1页
第1页 / 共10页
汇编程序调试实验报告.doc_第2页
第2页 / 共10页
汇编程序调试实验报告.doc_第3页
第3页 / 共10页
亲,该文档总共10页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《汇编程序调试实验报告.doc》由会员分享,可在线阅读,更多相关《汇编程序调试实验报告.doc(10页珍藏版)》请在三一文库上搜索。

1、目录微机原理与接口技术课 程 作 业班级:、实验目的:汇编语言是一种用助记符表示的程序设计语言。用汇编语言编写的源程序生成的目 标代码短,占内存少,执行速度快,适合于系统软件、实时控制软件、 I/O 接口驱动等程 序设计。通过本次实验,熟练掌握汇编程序的调试,深入了解MASMC编语言及其程序设计方法。、实验环境EDIT编辑器、MAS汇编程序、LINK连接程序、TD调试程序三、实验过程(一)基础知识储备1. 了解微处理器 80486的内部结构、寄存器组、工作模式等基本知识。2. 熟练掌握微处理器指令系统的相关知识,重点掌握80486 的寻址方式和常用的指令格式及功能。3. 了解MASMC编语言及

2、其程序设计方法。掌握 MASMC编语言的语句格式、语法规则、 常用伪指令及DOS功能的调用等。了解顺序结构、分支结构、循环结构和子程序的设计 方法。二)汇编语言程序设计1. 分析问题,明确要解决的问题和要求2. 确定解决问题的思路和方法。3. 将解决问题的方案编制成程序流程图。4. 根据流程图,逐条编写程序。5. 上机调试,验证程序是否正确。(三)汇编程序调试MASM编程序的主要功能是:把源文件转换成用二进制代码表示的目标文件,并生 成列表文件 ; 在转换过程中汇编程序将对源程序进行扫描, 检查源程序是否有语法错误并 指出源程序的语法错误。汇编语言源程序的调试过程需要经过编辑、汇编、连接、运行

3、、调试等几个步骤 :1. 编辑:使用编辑程序,将编写好的程序输入计算机,建立一个扩展名为ASM的汇编语言源文件 *.ASM。2. 汇编:使用汇编程序,将*.ASM文件经汇编后生成扩展名为*OBJ。3. 连接:使用连接程序,把一个或多个目标程序连接成可执行文件 *.EXE。4. 运行:运行可执行文件,验证程序是否正确。5. 调试:如果运行中有问题,可使用编辑或调试程序进行修改和调试,重复上述步骤, 直到运行正确为止。四、调试实例(一)实例一要求:编写程序,将MBU为起始单元的5个数按相反次序传送到NBUF开始的存储单元 中。实验思路: 本例采用顺序结构和循环结构,合理利用堆栈,通过堆栈实现数据按

4、照相反 次序传送。源程序:DATA SEGMENT;数据段开始MBUF DB 0,1,2,3,4;每个数据分配一个存储单元NBUF DB 5 DUP(0);空 5个存储单元备用DATA ENDS;数据段结束STACK SEGMENT PARA STACK; 堆栈段开始,定位类型是 PARADB 100 DUP(0)STACK ENDSCODE SEGMENT;代码段开始ASSUME CS:CODE, DS:DATA,SS:STACK ;段分配伪指令START:MOV AX,DATA;数据传送MOV DS,AX;存储器数据传送到段寄存器中MOV SI,OFFSET MBUF;取第一组操作数的偏移

5、地址MOV DI,OFFSET NBUF;取第二组操作数的偏移地址MOV CX,5;数据个数5传送到CX中LOP1:MOV AX,SI PUSH AX INC SILOOP LOP1LOP2:POP AXMOV DI,AXINC DILOOP LOP2MOV AH,4CH INT 21H数据传送 数据入栈指针加 1 循环数据出栈数据传送终止进程数据段等值语句,COUN等于BUF数据长度正数首地址负数首地址堆栈段代码段初始化取BUF中操作数的偏移地址CODE ENDSEND START二)实例二要求: 编写程序,将内存中某数据块中的正数和负数分开,并分别将这些正数和负数送 同一数据段的两个缓冲区

6、中,并在屏幕上显示正数和负数的个数。实验思路: 本例中要求将正数和负数分开,因此应先判断数据块中数据的正负,然后将 不同符号的数分别传送到两个缓冲区中,同时分别计数。利用分支结构和循环结构解决 问题。源程序:DATA SEGMENT ;BUF DB 5,2,7,-4,-2,-3,4,9,-6COUNT EQU $-BUF;ZS DB ?FS DB ?STR1 EQU BUF+20;STR2 EQU BUF+30;DATA ENDSSTACK SEGMENT STACK ;DB 100 DUP(0)STACK ENDSCODE SEGMENT ;ASSUME CS:CODE,DS:DATA,SS

7、:STACKSTART:MOV AX,DATAMOV DS,AX ;MOV BX,OFFSET BUF ;MOV CX,COUNTMOV ZS,0MOV FS,0MOV SI,OFFSET STR1LOP:MOV AL,BXCMP AL,0JG LOP1JL LOP2LOP1:INC ZSMOV SI,ALMOV DI,OFFSET STR2带符号数比较 数据大于 0 时跳转至 LOP1 数据小于 0 时跳转至 LOP2 正数计数加 1正数数据存入 SI 寄存器中INC BXINC SILOOP LOPJMP LASTLOP2:INC FSMOV DI,AL ; 负数数据存入 DI 中INC

8、BXINC DILOOP LOPLAST:MOV DL,ZSMOV AH,06H ; 显示字符INT 21HMOV DL,FSMOV AH,06HINT 21HMOV AH,4CHINT 21HCODE ENDSEND START(三)实例三要求:编写程序,从内存BLOC开始,存放着10个字节的有符号数,从这些数中找出绝 对值最大的那个最大的数,将其存入 MA中。源程序:DATA SEGMENTBLOCK DB 1,-1,2,-3,4,5,3,-1,2;设置数据COUNT EQU $-BLOCK;置计数值MAX DB ?;存最大值DATA ENDSSTACK SEGMENT STACKDB 1

9、00 DUP(0)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX,DATAMOV DS,AXMOV SI,OFFSET BLOCKMOV MAX,0MOV CX,COUNTAGAIN:MOV AL,SI ;CMP AL,0 ;JS JDZ ;LOP:CMP AL,MAXJG BIG;ALJMP LOP1JDZ:NEG AL ;JMP LOP1;BIG:MOV MAX,ALJMP LOP1LOP1:INC SI ;DEC CX ;MOV AH,MAX;JNZ AGAIN;MOV AH,4CHINT 21HCODE

10、 ENDSEND START; 数据首地址;CX 为计数器将第一个数据存在AL中判断正负小于 0 转到 JDZ比较数据与最大值大转到 BIG求补,即绝对值跳转至 LOP1指针加 1,指向下一个数 计数值减 1 最大值存入 AH跳转至 AGAIN四)实例四要求:编写程序,将内存中N个无符号数从大到小排序后输出显示。 源程序:DATA SEGMENTBUF DB 1H,9H,6H,15H,10HCOUNT EQU $-BUFDATA ENDSSTACK SEGMENT STACKDB 100H DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,S

11、S:STACKSTART:MOV AX,DATAMOV DS,AX;初始化MOV CX,COUNT ;DEC CX ;LOP1:MOV SI,CXMOV DI,1 ;MOV BX,OFFSET BUFLOP2:MOV AL,BX ;CMP AL,BX+1 ;JAE LOP3 ;XCHG AL,BX+1 ;MOV BX,ALMOV DI,0 ;LOP3:INC BX;LOOP LOP2;CMP DI,0;束JNZ OK ;MOV CX,SILOOP LOP1;OK:MOV CX,COUNTMOV BX,OFFSET BUF ;BXLOP4:MOV DL,BX;BXMOV AH,06H;INT 2

12、1HINC BX;LOOP LOP4;MOV AH,4CH;INT 21H;CODE ENDSEND START置计数器外层循环减 1交换标志 DI=1 取数组中第一个偏移地址第一个数据送到AL中两数进行比较大于等于转到 LOP3 小于交换两数位置, AL 存大数交换标志 DI=0数据指针指向下一位循环 LOP2 交换标志为 0 继续,交换标志为 1 结不等于0转到0K结束等于 0 循环 LOP1为BUF首地址的偏移地址 中的数放在DL中 输出显示指针指向下一字符 循环 L0P4 结束进程 返回 D0S五、实验总结本次实验,虽然花费时间较长,但通过实验的完成,我的收获也很多。(一)实验收获无论

13、是知识方面还是能力方面,本次实验都让我得到了很大提升。知识方面,本次实验需要编写符合要求的程序。首先要进行程序的设计,明确实验目的 和设计思路,画出程序框图,然后进行程序的编写。通过程序的设计与编写,使我能够 更加深入的了解和掌握 80486 了指令系统。程序编写完成后,便需要进行调试,最初编 写的程序中出现了很多错误, 在编译过程中发现错误后, 不断进行修正, 直到程序正确, 可以实现所需功能。在这一过程中,我逐渐熟悉了汇编程序编辑、编译、连接、调试的 过程,并能通过这些软件的功能找到自己的错误加以改正,最终实现实验目的。 能力方面,由于系统原因,不能直接在电脑当前系统中进行汇编程序的调试,

14、因此我安 装了虚拟机,在虚拟机安装过程中遇到很多问题,通过对搜索引擎的有效利用,我解决 了安装过程中的问题并成功安装了 XP系统,建立了实验所需环境,为实验的完成打下基 础。本次实验,提高了我分析问题和解决问题的能力, 能够通过查阅资料获得所需信息, 解决实验过程中所遇到的各种问题。(二)实验感悟本次实验对知识和能力的要求都比较高,开始完成实验室,遇到了很多阻碍,但通过资 料的查找和优秀视频的参考, 我逐渐找到问题的解决办法, 最终实现了实现所需的功能, 完成了这项任务。在这一过程中,我更深刻地体会到,任何知识的学习和掌握都是时间 和汗水的积累。只有真正认真思考,坚定完成任务的信念,找到解决问题的办法,才能 学会知识和技能。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1