串传送指令
格式:movsb
功能:执行movsb指令相当于进行下面几步操作。
-
((es)16+(di)) = ((ds)16+(si))
-
如果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
网友评论