好文档 - 专业文书写作范文服务资料分享网站

大全程序调试实验报告

天下 分享 时间: 加入收藏 我要投稿 点赞

微机原理与接口技术

课 程 作 业 班级: 目录 一、实验目的: ................................................ 2 二、实验环境 .................................................. 2 三、实验过程 .................................................. 2 (一)基础知识储备 ........................................ 2 (二)汇编语言程序设计 .................................... 2 (三)汇编程序调试 ........................................ 3 四、调试实例 .................................................. 3

(一)实例一 .............................................. 3 (二)实例二 .............................................. 4

(三)实例三 .............................................. 5 (四)实例四 .............................................. 6 五、实验总结 .................................................. 7

(一)实验收获 ............................................ 7 (二)实验感悟 ............................................ 8

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

(二)汇编语言程序设计

1.分析问题,明确要解决的问题和要求。 2.确定解决问题的思路和方法。

3.将解决问题的方案编制成程序流程图。 4.根据流程图,逐条编写程序。 5.上机调试,验证程序是否正确。

(三)汇编程序调试

MASM汇编程序的主要功能是:把源文件转换成用二进制代码表示的目标文件,并生成列表文件;在转换过程中汇编程序将对源程序进行扫描,检查源程序是否有语法错误并指出源程序的语法错误。

汇编语言源程序的调试过程需要经过编辑、汇编、连接、运行、调试等几个步骤: 1.编辑:使用编辑程序,将编写好的程序输入计算机,建立一个扩展名为ASM的汇编语言源文件*.ASM。

2.汇编:使用汇编程序,将*.ASM文件经汇编后生成扩展名为*.OBJ。

3.连接:使用连接程序,把一个或多个目标程序连接成可执行文件*.EXE。 4.运行:运行可执行文件,验证程序是否正确。 5.调试:如果运行中有问题,可使用编辑或调试程序进行修改和调试,重复上述步骤,直到运行正确为止。 四、调试实例 (一)实例一 要求:编写程序,将MBUF为起始单元的5个数按相反次序传送到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 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传送到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 21H CODE ENDS

END START

(二)实例二

要求:编写程序,将内存中某数据块中的正数和负数分开,并分别将这些正数和负数送同一数据段的两个缓冲区中,并在屏幕上显示正数和负数的个数。 实验思路:本例中要求将正数和负数分开,因此应先判断数据块中数据的正负,然后将不同符号的数分别传送到两个缓冲区中,同时分别计数。利用分支结构和循环结构解决问题。 源程序: 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 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 ;取BUF中操作数的偏移地址 MOV CX,COUNT MOV ZS,0 MOV FS,0

MOV SI,OFFSET STR1 MOV DI,OFFSET STR2 LOP:MOV AL,[BX]

CMP AL,0 ;带符号数比较

JG LOP1 ;数据大于0时跳转至LOP1 JL LOP2 ;数据小于0时跳转至LOP2 LOP1:INC ZS ;正数计数加1

MOV [SI],AL ;正数数据存入SI寄存器中 INC BX INC SI LOOP LOP JMP LAST LOP2:INC FS

MOV [DI],AL ;负数数据存入DI中 INC BX INC DI LOOP LOP LAST:MOV DL,ZS

MOV AH,06H ;显示字符 INT 21H MOV DL,FS MOV AH,06H INT 21H MOV AH,4CH INT 21H CODE ENDS END START (三)实例三 要求:编写程序,从内存BLOCK开始,存放着10个字节的有符号数,从这些数中找出绝对值最大的那个最大的数,将其存入MAX中。 源程序: DATA SEGMENT BLOCK DB 1,-1,2,-3,4,5,3,-1,2 ;设置数据 COUNT EQU $-BLOCK ;置计数值 MAX DB ? ;存最大值 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 SI,OFFSET BLOCK ;数据首地址 MOV MAX,0

MOV CX,COUNT ;CX为计数器 AGAIN:

MOV AL,[SI] ;将第一个数据存在AL中

大全程序调试实验报告

微机原理与接口技术课程作业班级:目录一、实验目的:................................................2二、实验环境..................................................2三、实验过程...............................
推荐度:
点击下载文档文档为doc格式
5y9m491d7547ty70kclt55mbv23rb1005bf
领取福利

微信扫码领取福利

微信扫码分享