常⽤汇编指令repmovsrepstos
1. MOVSB、MOVSW 和 MOVSD 指令将数据从 ESI 指向的内存位置复制到 EDI 指向的内存位置。(根据⽅向标志位的值)这两个寄
存器⾃动地增加或减少:
cld 设置⽅向标志位DF为0, 每次复制完, esi, edi⾃动增加, 指向下⼀个地址.
std 设置⽅向标志位DF为1, 每次复制完, esi, edi⾃动减少, 指向下⼀个地址.
⾄于esi, edi, 增加或减少多少个字节, 是根据 movsb/movsw/movsd最后⾯哪个字母决定.
movsb 以字节形式复制, 每次复制⼀个字节⼤⼩, esi/edi⾃动增加或减少1个字节
movsw 以字形式复制,每次复制⼀个字(2个字节)⼤⼩, esi/edi⾃动增加或减少2个字节
movsd 以双字形式复制, 每次复制2个字(4个字节)带下, esi/edi⾃动增加或减少4个字节
这⼏条命令⼀般都是配合 rep (repeat) 指令来使⽤, 表⽰重复复制汇编指令有多少个
rep movs byte ptr es:[edi], byte ptr ds:[esi] 简写为: rep movsb
rep movs word ptr es:[edi], word ptr ds:[esi] 简写为: rep movsw
rep movs dword ptr es:[edi], dword ptr ds:[esi] 简写为: rep movsd
⾄于复制多少次, 是由ecx决定的.
2.STOS指令:将Al/AX/EAX的值存储到[EDI]指定的内存单元
STOS BYTE PTR ES:[EDI] 简写为STOSB
STOS WORD PTR ES:[EDI] 简写为STOSW
STOS DWORD PTR ES:[EDI] 简写为STOSD
具体是AL/AX/EAX那就要看具体的宽度是多少,指令执⾏后, edi的值也会增加或减少对应字节数, 这取决于 ⽅向标志位DF的值, DF=0, edi增加, DF=1, edi减少, 和movs指令同理.
STOS指令也会配合REP来使⽤.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论