串传送指令是movsb和movsw
这个两个指令的区别就是movsb是按字节传送的,movsw是按字传送的,所以下面以movsb举例
movsb就是:将ds:[si]为首地址所指的字符串移动到es:[di]为首地址所指的空间中,就是说:mov es:[di], ds:[si]
然后就是判断标志位的DF标志,如果是0,那么需要进行:inc si
inc di
如果是1,那么需要进行:dec si
dec di
另外还有一个和这两个指令配合使用的指令,就是rep指令
rep movsb
可以等价于:
s: movsb
loop s
下面以一个例子来认识:
例子是将data中0~15的字符串复制到16~31的位置
代码:
assume cs:code, ds:data
data segment
db 'Welcome to masm!'
db 16 dup(0)
data ends
code segment
start: mov ax, data
mov ds, ax
mov ax, data
mov es, ax
mov si, 0