汇编程序调试实验报告_第1页
汇编程序调试实验报告_第2页
汇编程序调试实验报告_第3页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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 了指令系统。程序编写完成后,便需要进行调试,最初编 写的程序中出现了很多错误, 在编译过程中发现错误后, 不断进行修正, 直到程序正确, 可以实现所需功能。在这一过程中,我逐渐熟悉了汇编程序编辑、编译、连接、调试的 过程,并能通过这些软件的功能找到自己的错误加以改正,最终实现实验目的。 能力方面,由于系统原因,不能直接在电脑当前系统中进行汇编程序的调试,因此我安 装了虚拟机,在虚拟机安装过程中遇到很多问题,通过对搜索引擎的有效利用,我解决 了安装过程中的问题并成功安装了 XP系统,建立了实验所需环境,为实验的完成打下基 础。本次实验,提高了我分析问题和解决问题的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论