- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
北京工业大学 软件学院 艾孜尔江·艾尔斯兰
PAGE 5
实验二 熟悉汇编程序的建立及其调试方法
(实验员:艾孜尔江·艾尔斯兰)
实验目的
熟悉汇编语言源程序的框架结构,学会编制汇编程序。
熟悉汇编语言上机操作的过程,学会汇编程序调试方法。
实验内容
学习编写汇编语言源程序的方法,了解数据存放格式。
阅读给出的程序,找出程序中的错误。
通过调试给出的汇编语言源程序,了解并掌握汇编语言程序的建立、汇编、链接、调试、修改和运行等全过程。
实验预习
阅读实验指导第9章的内容,了解汇编语言程序建立、汇编、链接、调试的全过程。
下面的汇编语言源程序有错误,试给程序加注释。通过调试手段找出程序中的错误并修改。写出程序的功能,画出程序流程图。
实验步骤
建立汇编语言源程序,对所建立的汇编语言源程序进行编译、链接。
运行DEBUG调试程序,装入被调试程序,用U命令查看调入的程序,记录代码段基值和数据段基值,用R命令查看并记录当前寄存器内容。
用D命令查看并记录内存中数据的存放格式。
用T命令单步运行程序,观察各条指令的执行结果,以及对寄存器、标志位、内存单元的影响,若查找出程序中的错误,则用Q命令退出DEBUG环境,修改汇编语言源程序,重复上述步骤,直至整个程序无误。
若将LEA SI,BLOCK语句改为LEA SI, BLOCK+2*COUNT-2,并将ADD SI,2语句改为SUB SI,2,重新运行程序,观察运行结果。
若重新给出一组数据,则可用E命令重新输入新数据后运行程序,观察并记录运行结果。
若要求找出数据区中的最小数,程序将如何修改,并上机调试。
实验习题与思考
在装入被调试程序后,如何知道分配给该用户程序的数据段在内存中的位置。
答:在DEBUG调试环境中,通过输入D指令查看数据段在内存中的位置。
数据区中以什么形式存放有符号数?
答:有符号数以补码的形式存放。
修改前、后的程序在执行时有何区别(提示:观察数据指针的变化)?
答:原来SI逐渐递增,之后逐渐递减。
程序执行完毕,结果存放在何处?
答:存放在内存数据段MAX里。
总结一下CS,IP,SS,DS,ES设置的区别,
答:CS,SS,DS,ES都是通过ASSUME提前预设与数据段建立联系;IP是通过ORG设置初始量。
观察伪指令PARA和ORG的作用。
答:PARA属定位类型,是对该段起始地址定位。一般,各个逻辑段的首地址在‘节’的整数边界上(每16个存储单元叫做一节),即每个逻辑段的起始地址是16的整数倍。对于PARA—指定定位段的起始地址必须在节的整数边界;
ORG定义当前段的偏移地址。
实验报告要求
写出调试正确的程序,并给程序加注释,画出程序的流程图,写出程序的功能。
写出实验中所记录下的内存数据存放格式。
完成实验习题与思考。
实验结果
1:程序功能:对输入的20个数进行比大小,比出最大的数。
流程图:
2:
3:
4:
5:
6:
将第一个数0改成1,结果无差。
7:
将JLE NEXT改为JGE NXT
程序代码
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 ?
DATASG ENDS
STACKSG SEGMENT PARA STACK STACK;去掉冒号
DB 256 DUP(?)
STACKSG ENDS
CODESG SEGMENT;去掉冒号
ASSUME CS:CODESG,DS:DATASG,SS:STACKSG
ORG 100H
BEGIN:;加上冒号
MOV AX,DATASG
MOV DS,AX;修改MOV DS,DATASG
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
文档评论(0)