大全程序调试实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

微机原理与接口技术

班级:

目录

一、实验目的: (2)

二、实验环境 (2)

三、实验过程 (2)

(一)基础知识储备 (2)

(二)汇编语言程序设计 (2)

(三)汇编程序调试 (2)

四、调试实例 (3)

(一)实例一 (3)

(二)实例二 (4)

(三)实例三 (5)

(四)实例四 (6)

五、实验总结 (7)

(一)实验收获 (7)

(二)实验感悟 (7)

一、实验目的:

汇编语言是一种用助记符表示的程序设计语言。用汇编语言编写的源程序生成的目标代码短,占内存少,执行速度快,适合于系统软件、实时控制软件、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

相关文档
最新文档