汇编实验4
2018-11-13 20:45 漠然飘过 阅读(148) 评论(0) 编辑 收藏 举报1.运行如下汇编程序:
assume cs:code
code segment
mov ax,0b800h
mov ds,ax
mov bx,07b8h
mov ax,0403h
mov cx,16
s: mov [bx],ax
inc bx
inc bx
loop s
code segment
mov ax,0b800h
mov ds,ax
mov bx,07b8h
mov ax,0403h
mov cx,16
s: mov [bx],ax
inc bx
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end
int 21h
code ends
end
进行汇编运行结果如下:
![](https://img2018.cnblogs.com/blog/1498102/201811/1498102-20181113202233273-1381654540.png)
将第七行的0403h改为0441h代码如下:
assume cs:code
code segment
mov ax,0b800h
mov ds,ax
mov bx,07b8h
mov ax,0441h
mov cx,16
s: mov [bx],ax
inc bx
inc bx
loop s
code segment
mov ax,0b800h
mov ds,ax
mov bx,07b8h
mov ax,0441h
mov cx,16
s: mov [bx],ax
inc bx
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end
int 21h
code ends
end
运行结果:
![](https://img2018.cnblogs.com/blog/1498102/201811/1498102-20181113202421446-1829882080.png)
发现一行红色的爱心变成了红色的大写的A。
2..、使用 loop,[bx]编写汇编源程序,实现向内存 0:200~0:23F 依次传送数据0-63(3FH)
代码如下:
assume cs:code
code segment
mov ax,0h
mov ds,ax
mov bx,200h
mov ax,0h
mov cx,64
code segment
mov ax,0h
mov ds,ax
mov bx,200h
mov ax,0h
mov cx,64
s: mov [bx],ax
inc bx
inc ax
loop s
mov ax,4c00h
int 21h
code ends
end
inc bx
inc ax
loop s
mov ax,4c00h
int 21h
code ends
end
使用d命令查看0:200-0:23F
![](https://img2018.cnblogs.com/blog/1498102/201811/1498102-20181113202840806-1006134904.png)
3.编写代码
assume cs:code
code segment
code segment
mov ax,cx
mov ds,ax
mov ax,0020h
mov es,ax
mov bx,0
mov cx,16h
s: mov al,[bx]
mov es:[bx],al
inc bx
loop s
mov es:[bx],al
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end
int 21h
code ends
end
使用d命令查看0:200-0:23f
总结
在最后一个实验中,使用es来存放目标空间的段地址,用ds存放源始空间的段地址。
可以用段前缀es给出单元的段地址,这样就不用重复循环的设置ds。
[BX],loop指令中,CPU在执行loop指令时要进行两步操作,cx=cx-1,cx的值影响着loop指令执行的次数。