MOVSB MOVSW 字字 B: MOVS ES: BYTE PTR DI, DS:[ SI I 执行操作: (1)((D1)+((S1)) (2)字节操作:(S1)←(S1)±1,(D1)←(D)± 字操作:(S1)←(S1)±2,(D1)←(D1)±2 方向标志DF=0时用+,DF=1时用 REP MOVS:将数据段中的整串数据传送到附加段 源串(数据段)→目的串(附加段)
11 MOVS 串传送指令: MOVS DST , SRC MOVSB (字节) MOVSW (字) 例:MOVS ES : BYTE PTR [ DI ] , DS : [ SI ] 执行操作: (1) ( ( DI ) ) ← ( ( SI ) ) (2) 字节操作: ( SI ) ← ( SI ) ± 1 , ( DI ) ← ( DI ) ± 1 字操作: ( SI ) ← ( SI ) ± 2 , ( DI ) ← ( DI ) ± 2 方向标志 DF = 0 时用 + ,DF = 1 时用 - REP MOVS:将数据段中的整串数据传送到附加段 源串(数据段)→ 目的串(附加段)
执行 REP MOVS之前,应先做女 (1)源串首地址(末地址)→S (2)目的串首地址(末地址)→D (3)串长度→CX (4)建立方向标志 (CLD使DF=0,STD使DF=1)
12 执行 REP MOVS 之前,应先做好: (1) 源串首地址(末地址)→ SI (2) 目的串首地址(末地址)→ DI (3) 串长度 → CX (4) 建立方向标志 ( CLD 使 DF = 0,STD 使 DF = 1 )
数据段 的加段 (S1)→ ←-(D1) DE-I (S1)→ ←-(D1)
13 ( SI ) → ( DI ) DF = 0 DF = 1 数据段 附加段 ( SI ) → ( DI )
mess1 db ersonalcomputer data ends extra segment mess db 17 dup (? extra ends code segment lea si, mess1 lea di, mess mov CX, 17 cld lea si, mess1+16 rep movsb lea di, mess2+16 mov CX. 17 std code ends rep movsb
14 data segment mess1 db ‘personal_computer’ data ends extra segment mess2 db 17 dup (?) extra ends code segment … lea si, mess1 lea di, mess2 mov cx, 17 cld rep movsb … code ends lea si, mess1+16 lea di, mess2+16 mov cx, 17 std rep movsb
SIO STOSB 字节 STOSW (字 执行操作 字节操作:((D1))←(AL),(D)←(D1)土 字操作:((D1)+(AX),(D1)+(D1)±2 例:把附加段中的10个字节缓冲区置为20H lea di, mess mov a. 20H lea di. mess mov CX, 10 mov ax 2020H cld mov CX 3 rep stosb rep stow
15 STOS 存入串指令: STOS DST STOSB (字节) STOSW (字) 执行操作: 字节操作:(( DI ) ) ← ( AL ) , ( DI ) ← ( DI ) ± 1 字操作:( ( DI ) ) ← ( AX ) , ( DI ) ← ( DI ) ± 2 例:把附加段中的10 个字节缓冲区置为20H lea di, mess2 mov al, 20H mov cx, 10 cld rep stosb lea di, mess2 mov ax, 2020H mov cx, 5 cld rep stosw