失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 常用汇编指令 rep movs / rep stos

常用汇编指令 rep movs / rep stos

时间:2023-04-28 16:21:08

相关推荐

常用汇编指令 rep movs / rep stos

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来使用.

如果觉得《常用汇编指令 rep movs / rep stos》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。