汇编实验四

实验结论:

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

(1)源代码如下:

 1 assume cs:code
 2 code segment
 3     mov ax,0b800h
 4     mov ds,ax
 5     mov bx,07b8h
 6     mov cx,16
 7     mov ax,0441h
 8 
 9 s:  mov [bx],al
10     inc bx
11     mov [bx],ah
12     inc bx
13     loop s
14 
15     mov ax,4c00h
16     int 21h
17 code ends
18 end

运行结果如下:

(2)将源代码程序中字数据 0403H→修改为 0441H,再次运行,截图显示运行结果。

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

(1)源代码如下:

 1 assume cs:code
 2 code segment
 3     mov ax,0020h
 4     mov ds,ax
 5     mov bx,0
 6     mov cx,40h
 7     
 8 s:  mov [bx],bx
 9     inc bx
10     loop s
11 
12     mov ax,4c00h
13     int 21h
14 code ends
15 end

(2)汇编、链接无误后,灵活使用 debug 的 t 命令、g 命令、p 命令调试,用 d 命令查看 0:200~0:23F,确认是否将 0~63 传送至此段内存区域。这部分,要求有截图。

用d命令查看后发现的确将0~63传送至了此段内存区域。

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

(1)补全代码如下:

 1 assume cs:code
 2 code segment
 3     mov ax,cs
 4     mov ds,ax
 5     mov ax,0020h
 6     mov es,ax
 7     mov bx,0
 8     mov cx,17h
 9 
10 s:  mov al,[bx]
11     mov es:[bx],al
12     inc bx
13     loop s
14 
15     mov ax,4c00h
16     int 21h
17 code ends
18 end

(1)第一空:要将“mov ax,4c00h”之前的指令复制到内存0:200处我认为只要将代码段地址赋值给ds。

(2)第二空:一开始并不知道cx的值是多少,所以随便写了一个,然后通过反汇编可以看出“mov ax,4c00h”之前的代码长度为17h。

再用d命令查看之后的若干字节:

  

确实被复制。

总结与体会:

这次实验我学会了用loop循环减少繁琐的步骤,也学会了用[bx]和loop向内存中传送数据。

 

posted @ 2018-11-16 22:07  Gemini小纯洁  阅读(319)  评论(1编辑  收藏  举报