微机原理多重循环实验汇编.docVIP

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

实验 掌握循环程序编写方法 二、实验内容: 例5.8 在附加段中有一个字数组,其首地址已经存放在DI寄存器中,在数组的第一个字中存放该数组的长度。要求编制一个程序是该数组中的数按照有小到大的次序排列。 在程序中定义一个附加段,存放要排序的数组。 为了查看最后排序后的数组是否按照要求排序完毕,可以通过程序输出附加段的内容,也可以在调试程序中显示附加段的内容,本例采用后者。 三、源代码 data segment save_cnt dw ? start_addr dw ? data ends prognam segment bubble proc far assume cs:prognam,ds:data push ds push cx push ax push bx mov ax,data mov ds,ax mov start_addr,di mov cx,es:[di] mov save_cnt,cx init: mov bx,1 dec save_cnt jz sorted mov cx,save_cnt mov di,start_addr next: add di,2 mov ax,es:[di] cmp es:[di+2],ax jae cont xchg es:[di+2],ax mov es:[di],ax sub bx,bx cont: loop next cmp bx,0 je init sorted: mov di,start_addr pop bx pop ax pop cx pop ds ret bubble endp prognam ends end 四、实验过程: 1、编译:C:\MASM 58.ASM 2、链接:C:\LINK 58.OBJ 3、调试:C:\DEBUG 58.EXE 1)、先用命令U反汇编整个程序,查看每条指令的物理地址 -U 内存地址 指令代码 反汇编的程序代码 -U 2)、想查看程序初始化后,各个寄存器的内容,用G命令让程序运行到CALL INIT 后一条指令的地址 3)、经过取地址操作,查看数据段DS、附加段ES中的内容: 由寄存器内容可以看出,数据段中的save_cnt取得了数组的长度,start_addr取得了数组的首地址,寄存器CX记录未排序的数组的大小 4)、查看数据的交换过程 -u 001d ;查找一下内循环结束地址 -t 察看flags标志寄存器的CF位,检验程序的执行走方向,CF=1,可知要执行交换操作 -d es:0000 ;交换前AX寄存器和地址ES:0004内的值如下: -d es:0000 ;交换后AX寄存器和地址ES:0004内的值如下: -g 0045 ;内循环运行排序一次,看排序是否成功 -d es:0000 ;最大的数2D已经排在最后面 -t 6、完全运行完毕,看整个程序是否达到了题目要求 -d ds:0000 -d es:0000 ;已经排序完成 -q

文档评论(0)

jiayou10 + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档