实验 4 [bx]和loop的使用

Posted -cold

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实验 4 [bx]和loop的使用相关的知识,希望对你有一定的参考价值。

实验内容

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

实验代码:

assume cs:code

code segment

  mov ax,0b800h(不能以字母开头,前面置零)

  mov ds,ax

  mov cx,16

  mov bx,07b8h

  mov ax,0403h

s:    mov [bx],al

  inc bx

  mov [bx],ah

  inc bx

  loop s

  mov ax,4c00h

  int 21h

code ends

end

技术分享图片

 

接下来运行程序

技术分享图片

 

编译无错误

 技术分享图片

如图所示,出现16个爱心符号

将源代码程序中字数据0403H→修改为0441H,运行截图、

技术分享图片

 

出现16个A

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

实验代码:

assume cs:code

code segment

  mov ax,0020h

  mov ds,ax

  mov bx,0

  mov cx,64

  mov al,0

s: mov [bx],al

  inc bx

  add al,1

  mov ax,4c00h

  int 21h

code ends

end

技术分享图片

编译无误

技术分享图片

 

 在debug环境下进行调试

t命令是一步一步执行下去。

技术分享图片

 

p命令,在循环部分直接结束。

技术分享图片

g命令直接执行完,结果如上

3. 教材实验4(3)(P121) 

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

assume cs:code

code segment

  mov ax,__

  mov ds,ax

  mov ax,0020h

  mov es,ax

  mov bx,0

  mov cx,__

s: mov al,[bx]

  mov es:[bx],al

  inc bx

  loop s

  mov ax,4c00h

  int 21h

code ends

end

将当前代码段复制到目标空间,复制的测试代码段需要通过在debug中调试得出,用r命令可以看出cx的值,即程序总代码的大小,以字节为单位

现在cx中填4,用r命令观察需要复制的字节数和不需要复制的字节数

技术分享图片

 

技术分享图片

 

可以看出总共需要1ch个字节,无用代码一共需要5h个字节,所以复制的代码为17h个字节,即23

更改源代码cx为23

技术分享图片

 

 技术分享图片

复制成功

实验总结

通过这次实验,更加清晰的掌握了将字或者字节写入一段地址空间的操作方法,相关爱心符号的代码在实验三中有所涉及,学会了复制代码段的相关操作过程。

 

 

 

 

  

 

 

 

 

 

 

 

   

 



以上是关于实验 4 [bx]和loop的使用的主要内容,如果未能解决你的问题,请参考以下文章

实验 4 [bx]和 loop 的使用

实验 4 [bx]和loop的使用

实验 4 [bx]和 loop 的使用

实验4 [bx]和loop的使用

实验 4 [bx]和loop的使用

实验4 [bx]和loop的使用