代码改变世界

汇编实验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
    mov ax,4c00h
    int 21h
code ends
end   
进行汇编运行结果如下:

 

将第七行的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
    mov ax,4c00h
    int 21h
code ends
end   
运行结果:

 

发现一行红色的爱心变成了红色的大写的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
s:  mov [bx],ax
    inc bx
    inc ax
    loop s
 
    mov ax,4c00h
    int 21h
code ends
end
 
使用d命令查看0:200-0:23F

 

 3.编写代码
 
assume cs:code
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 ax,4c00h
   int 21h
code ends
end
 
 
使用d命令查看0:200-0:23f

 

 总结
在最后一个实验中,使用es来存放目标空间的段地址,用ds存放源始空间的段地址。
可以用段前缀es给出单元的段地址,这样就不用重复循环的设置ds。
[BX],loop指令中,CPU在执行loop指令时要进行两步操作,cx=cx-1,cx的值影响着loop指令执行的次数。