实验报告实验二熟悉汇编程序建立及其调试方式

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

微机原理实验报告

实验二熟悉汇编程序建立及其调试方式

姓名:吕迪冉晨越

学号:

一、实验目的

1.熟悉汇编语言源程序的框架结构,学会编制汇编程序。

2.熟悉汇编语言上机操作的过程,学会汇编程序调试方法。

二、实验内容

1、学习编写汇编语言源程序的方法,了解数据存放格式。

2、阅读给出的程序,找出程序中的错误。

3、通过调试给出的汇编语言源程序,了解汇编语言程序的建立、汇编、链接、调试、修改和运

行等全过程。

三、实验程序

(一)、源程序

STACKSG: SEGMENT PARA STACK 'STACK' ;冒号

DB 256 DUP(?)

STACKSG ENDS

DATASG: SEGMENT PARA 'DATA' ;冒号

BLOCK DW 0,-5,8,256,-128,96,100,3,45,6,512

DW 23,56,420,75,0,-1024,-67,39,-2000

COUNT EQU 20

MAX DW ?

CODESG: SEGMENT ;冒号

ASSUME CS:CODESG,DS:DATASG,SS:STACKSG

ORG 100H

BEGIN: MOV DS, DATASG;应为 MOV AX,DATASG MOV DS,AX

LEA SI,BLOCK

MOV CX,COUNT

DEC CX

MOV AX,[SI]

CHKMAX ADD SI,2 ;应加冒号

CMP [SI],AX

JLE NEXT

MOV AX,[SI]

DEC CX ;删除

NEXT: LOOP CHKMAX

MOV MAX,AX

MOV AH,4CH

INT 21H

CODESG ENDS

END BEGIN

(二)、修改后程序

STACKSG SEGMENT PARA STACK 'STACK'

DB 256 DUP(?)

STACKSG ENDS ;定义堆栈段

DATASG SEGMENT PARA 'DATA' ;定义数据段

BLOCK DW 0,-5,8,256,-128,96,100,3,45,6,512 ;BLOCK有20个字

DW 23,56,420,75,0,-1024,-67,39,-2000

COUNT EQU 20 ;COUNT=20

MAX DW ? ;定义MAX不赋值

DATASG ENDS

CODESG SEGMENT ;定义代码段

ASSUME SS:STACKSG , CS:CODESG ;定义STACKG为堆栈段 CODESG为代码段

ASSUME DS:DATASG ;定义DATASG为数据段

ORG 100H ;偏移量100H

BEGIN: MOV AX, DATASG ;DATASG传入DS

MOV DS, AX

LEA SI ,BLOCK ;取BLOCK的有效地址给SI

MOV CX, COUNT ;COUNT传入CX

DEC CX ;CX=CX-1

MOV AX , [SI] ;把DS:[SI]内容传入AX

CHKMAX : ADD SI, 2 :SI=SI+2

CMP [SI] , AX ;比较DS:[SI]与AX值的大小

JLE NEXT ;当DS:[SI]<=AX时跳转到NEXT

MOV AX , [SI] ;否则将DS:[SI]装入AX

NEXT: LOOP CHKMAX ;CX=CX-1,CX为零循环CHMAX,否则顺序运行 MOV MAX ,AX ;将AX内容装入MAX

MOV AH, 4CH ;结束

INT 21H ;退出

CODESG ENDS

END BEGIN

(三)程序功能

比较20个数的大小,找出最大的数字。

(四)流程图

四、实验步骤

1、建立汇编语言源程序,编译、链接、建立成可执行文件

2、运行DEBUG调试程序,装入别调试程序,用U命令查看调入的程序

3、用R命令查看当前寄存器内容

4、用D命令查看并记录下内存中数据存放格式

5、用T命令但不运行程序,观察各条指令执行结果,以及对寄存器,标志位,内存单元的影响,若找出程序中的错误,用Q命令退出DEBUG环境,修改汇编语言源程序,重复上述步骤,直至整个程序无误。

6、若将LEA SI,BLOCK语句改为LEA SI,BLOCK+2*COUNT-2,并将ADD SI,2改为SUB SI,2,,重新运行程序观察结果:

7、若重新给出一组数据,可用E命令输入新数据后运行程序,观察并记录运行结果。

8、若要求找出数据区中最小数,程序将如何修改,试上机调试。

将JLE NEXT改为JGE NEXT

内存数据存放格式:

相关文档
最新文档