实验内容
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
复制成功
实验总结
通过这次实验,更加清晰的掌握了将字或者字节写入一段地址空间的操作方法,相关爱心符号的代码在实验三中有所涉及,学会了复制代码段的相关操作过程。