DF标志和传送指令

传送命令

1)movsb

操作步骤如下:

1
2
3
4
5
6
7
8
9
10
1.((es)*16+(di))=((ds)**16+(si))

2.if (df==0){
(si)=+1
(di)=+1
}
if(df==1){
(si)=+1
(di)=+1
}

2)movsw

1
2
3
4
5
6
7
8
9
10
1.((es)*16+(di))=((ds)**16+(si))

2.if (df==0){
(si)=+2
(di)=+2
}
if(df==1){
(si)=-2
(di)=-2
}

设置DF标志:cld;DF=0 ,std;DF=1

编程

用传送命令,将data段中的第一个字符串复制到他后面的空间中

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
assume cs:code

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

code segment
start: mov ax,data
mov ds,ax
mov si,0
mov es,ax
mov di,16
mov cx,16
cld ;df=0正向传送
rep movsb

mov ax,4c00h;
int 21;

code ends
end start

11.10

用传送指令,把F000H段中的最后16个字符复制到data段中

11.10.2