码迷,mamicode.com
首页 > 其他好文 > 详细

实验四

时间:2018-11-24 18:59:38      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:img   可见   info   src   赋值   单元   使用   sum   分享   

实验结论

1. 综合使用 loop,[bx],编写完整汇编程序,实现向内存 b800:07b8 开始的连续 16 个 字单元重复填充字数据0403H

代码如下

技术分享图片

对其进行编译链接

技术分享图片

运行这个程序,结果如下图

技术分享图片

 

将源代码程序中字数据0403H→修改为0441H

技术分享图片

对其进行编译链接后,结果如下

技术分享图片

 

 

 

 

 

2. 综合使用 loop,[bx],编写完整汇编源程序,实现向内存 0:200~0:23F 依次传送数据 0~63(3FH)

代码为:

技术分享图片

对其进行编译连接

技术分享图片

 

运行这个程序,先查看0:200开始的64个内存里初始值,以做比较

技术分享图片

 

用t命令单步执行

技术分享图片

(部分截图)

 

用g命令运行

技术分享图片

 

最后再用d命令查看内存单元,以检验

技术分享图片

 

 

 

 

 

(3)下面的程序功能是将“mov ax,4c00h"之前的指令复制到内存0:200处,补全程序。上机调试,跟踪运行结果。

assume cs:code   

code segment   

     mov ax,  1    ;

     mov ds,ax   

     mov ax,0020h   

     mov es,ax   

     mov bx,0   

     mov cx,  2     ;

  s: mov al,[bx]   

     mov es:[bx],al   

     inc bx   

     loop s   

     mov ax,4c00h   

     int 21h   

code ends   

end

 

1答案为:cs(该程序目的是复制“mov ax,4c00h"之前的指令,数据段要与代码段相同,所以应该将cs赋值给ax)

2答案为:17h(各指令所占字节之和为23,所以复制的代码段长度为17h)

 

运行该程序,并对其u命令反汇编为

技术分享图片

使用g命令将其执行,并查看0:200开始内存单元的内容

技术分享图片

最后用u命令反汇编从0:200开始的内存单元,从图中可见,程序已复制成功

技术分享图片

 

 

 

 

 

总结与体会

1)在书写源代码时,注意十六进制的h,漏加多加会导致编译出错

2)注意loop中设置cx的次数

3)cx在载入程序后会保留程序的长度

3)数据和代码对CPU来说是没有去别的,只要CS:IP指向的就是代码

 

实验四

标签:img   可见   info   src   赋值   单元   使用   sum   分享   

原文地址:https://www.cnblogs.com/gares/p/10012847.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!