MOVS,STOS和REP
MOVS,STOS和REP
MOVS 移动数据
MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI]
简写为MOVSB
MOVS WORD PTR ES:[EDI],WORD PTR DS:[ESI]
简写为MOVSW
MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]
简写为MOVSD
注意:
- 执行
MOVS
后,ESI
和EDI
会根据数据宽度变化,增加或减少由方向标志DF
决定,为0时增加,为1时减少。
例:
MOV EDI,0x12FFD8
MOV ESI,0x12FFD0
MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI] ;注意观察EDI的值
MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]
MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]
MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]
MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]
;修改DF后,执行下列指令,观察EDI的值
MOV EDI,0x12FFD8
MOV ESI,0x12FFD0
MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI] ;注意观察EDI的值
MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]
MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]
MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]
MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]
STOS 将AL/AX/EAX的值存储到[EDI]指定的内存单元
STOS BYTE PTR ES:[EDI]
简写为STOSB
STOS WORD PTR ES:[EDI]
简写为STOSW
STOS DWORD PTR ES:[EDI]
简写为STOSD
注意:
- 执行
STOS
后,EDI
会根据数据宽度变化,增加或减少由方向标志DF
决定,为0时增加,为1时减少。
例:
MOV EAX,0X12345678
MOV EDI,12FFC4
STOS BYTE PTR ES:[EDI] ;注意观察EDI的值
STOS WORD PTR ES:[EDI]
STOS DWORD PTR ES:[EDI]
;修改DF后,执行下列指令,观察EDI的值
MOV EAX,0X12345678
MOV EDI,12FFC4
STOS BYTE PTR ES:[EDI] ;注意观察EDI的值
STOS WORD PTR ES:[EDI]
STOS DWORD PTR ES:[EDI]
REP指令
按计数寄存器 (ECX) 中指定的次数重复执行字符串指令
例:
MOV ECX,10
REP MOVSD
REP STOSD