实验四

实验结论

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

代码如下

实验四_第1张图片

对其进行编译链接

实验四_第2张图片

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

实验四_第3张图片

 

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

实验四_第4张图片

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

实验四_第5张图片

 

 

 

 

 

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

代码为:

实验四_第6张图片

对其进行编译连接

实验四_第7张图片

 

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

实验四_第8张图片

 

用t命令单步执行

实验四_第9张图片

(部分截图)

 

用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命令反汇编为

实验四_第10张图片

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

实验四_第11张图片

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

实验四_第12张图片

 

 

 

 

 

总结与体会

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

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

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

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

 

转载于:https://www.cnblogs.com/gares/p/10012847.html

你可能感兴趣的:(实验四)