实验二 初级程序的编写与调试.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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)

有志者事竟成 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:7114163151000053

1亿VIP精品文档

相关文档