实验报告实验二熟悉汇编程序建立及其调试方式
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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
内存数据存放格式: