- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
自动化091 郭沛 0908140113
PAGE 7
实验二 初级程序的编写与调试
一、实验目的
1、熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。
2、深入了解数据在存储器中的存取方法及堆栈中数据的压入与弹出。
3、掌握各种寻址方法及简单指令的执行过程。
二、程序(调试)说明
1、设堆栈指针SP=2000H,AX=3000H,BX=5000H。请编写程序将AX的内容和BX的内容进行交换。用堆栈作为两存储器交换的中间存储单元,用DEBUG调试程序进行汇编与调试
-A 100
0BB3:0100 MOV SP,2000
0BB3:0103 MOV AX,3000 ;赋初值
0BB3:0106 MOV BX,5000
0BB3:0109 PUSH AX ;压入堆栈
0BB3:010A PUSH BX
0BB3:010B POP AX ;弹出堆栈
0BB3:010C POP BX
0BB3:010D INT 20 ;中断当前执行程序
0BB3:010F HLT
0BB3:0110
-
用堆栈作为两存储器交换的中间存储单元,使用起来很方便。
2、设DS=当前段地址,BX=0300H,SI=0002H,请用DEBUG的命令将存储器偏移地址300H~304H连续单元顺序装入0AH、0BH、0CH、0DH、0EH。在DEBUG状态下送入下面程序,并用单步执行的方法,分析每条指令源地址的形成过程。当数据传送完毕,AX中的内容是什么。
MOV AX,BX
MOV AX,0304H
MOV AX,[0304H]
MOV AX,[BX]
MOV AX,0001[BX]
MOV AX,[BX][SI]
MOV AX,0001[BX][SI]
INT 20H
HLT
第一步:显示、填充、清零。
第二步:给存储器偏移地址300H~304H连续单元设初值1、2、3、4、5;
并在0AH~0EH上显示出来;
第三步:输入代码,并显示。这时AX、BX、CX、DX都为0。赋BX、SI的初值
第四步:,并显示存储器偏移地址300H~304H连续单元。
MOV AX,BX;将BX的值赋给AX;AX=0300
MOV AX,0304;将0304H赋给AX;AX=0304
MOV AX,[0304];将偏移地址为0304的单元内容04赋给AX;AX=3004
第五步:我们可以看到通过MOV AX,[BX];地址=DS+BX=0BB3:0300
[0300H]中的0EH赋给了AX中的低8位,即AL=0EH;AH=DFH为[0301H]中的值;
通过MOV AX,0001[BX];地址=DS+BX+0001=0BB3:0301
[0301H] 中的DFH赋给了AX中的低8位,即AL=DFH;AH=91H为[0302H]中的值;
通过MOV AX,[BX][SI];地址=DS+BX+SI=0BB3:0302
[0302H] 中的91H赋给了AX中的低8位,即AL=2EH;AH=2EH为[0303H]中的值;
通过MOV AX,0001[BX][SI];地址=DS+BX+SI+0001=0BB3:0303
[0303H] 中的2EH赋给了AX中的低8位,即AL=2EH;AH=8BH为[0302H]中的值;
当数据传送完毕时,AX中的内容是0403;
3、设AX=0002H,编一个程序段,将AX的内容乘以10。要求用移位的方法。
C:\DOCUME~1\ADMINI~1DEBUG
-A 100
0BB3:0100 MOV AX,0002
0BB3:0103 MOV BX,0002 ;赋初值
0BB3:0106 ROL AX,1 ;AX左移一位AX=0004
0BB3:0108 ROL AX,1 ;AX左移一位AX=0008
0BB3:010A ADD AX,BX ;AX=AX+BX ;AX=000A
0BB3:010C ROL AX,1 ;AX左移一位AX 0014
0BB3:010E INT 20 ;中断当前执行程序
0BB3:0110 HLT
0BB3:0111
-
单步调试结果如下:
最后AX=0014H符合2*10=20
三、调试(体会)说明
初步掌握了汇编程序的编辑、编译、连接和执行的全过程,学习了用 DEBUG 调试程序的方法,了解了另一种程序语言的编写。
感觉它比其他高级语言确实要复杂,但是能更一步体会计算机是如何操作的。
在第一题中,深入了解数据在存储器中的存取方法及堆栈中数据的压入与弹出,了解了堆栈的基本原理。
在第二题中,我掌握各种寻址方法及简单指令的执行过程,花样很多,用起来很便利。
在编第三题时,设AX=0002H,编一个程序段,将AX的内容乘以10。要求用移位的方法。
AX左移
原创力文档


文档评论(0)