8086汇编(33)串传送指令

串传送指令

格式:movsb

功能:执行movsb指令相当于进行下面几步操作。

  1. ((es)16+(di)) = ((ds)16+(si))

  2. 如果df=0 则 (si)=(si)+1 (di)=(di)+1

如果df=1则: (si)=(si)-1 (di)=(di)-1

当然也可以传送一个字

格式:movsw

功能:将ds:si指向的内存单元中的字送入es:di中,然后根据标志寄存器df位的值,将si和di递增2或递减2.

movsb和movsw进行的是串传送操作中的一个步骤,一般来说,movsb和movsw都和rep配合使用,格式如下:

rep movsb

rep功能:根据cx的值,重复执行后面的串传送指令。由于每执行一次movsb指令si和di都会递增或递减指向后一个单元或前一个单元,则rep movsb就可以循环实现(cx)个字符的传送。

8086CPU提供下面两条指令对df位进行设置。

cld指令: 将标志寄存器的df位置0

std指令: 将标志寄存器的df位置1

1)编程,用串传送指令,将data段中的第一个字符串复制到它后面的空间中。

data segment
     db  'welcome to masm!'
     db 16 dup (0)
data ends

code segment

       mov ax,data
       mov ds,ax
       mov si, 0
       mov es,ax
       mov di,16
       mov cx,16
       cld
       rep  movsb

code ends

end

2)编程,用串传送指令,将F000段中的最后16个字符复制到data段中。

data segment
         db  16  dup  (0)
data ends

code segment 
           mov ax,0f000h
           mov ds,ax
           mov si, 0ffffh
           mov ax,data
           mov es,ax
           mov di, 15
           mov cx, 16
           std
           rep  movsb
    
code ends
end

你可能感兴趣的:(8086汇编(33)串传送指令)