汇编语言MOVSB、MOVSW和MOVSD指令:将数据到EDI指向的内存

MOVSB、MOVSW 和 MOVSD 指令将数据从 ESI 指向的内存位置复制到 EDI 指向的内存位置。(根据方向标志位的值)这两个寄存器自动地增加或减少:

MOVSB 传送(复制)字节
MOVSW  传送(复制)字
MOVSD 传送(复制)双字

MOVSB、MOVSW 和 MOVSD 可以使用重复前缀。方向标志位决定 ESI 和 EDI 是否增加或减少。增加 / 减少的量如下表所示:

指令  ESI 和 EDI 增加或减少的数值
MOVSB 1
MOVSW 2
MOVSD 4

【示例】复制双字数组,假设现在想从 source 复制 20 个双字整数到 target。数组复制完成后,ESI 和 EDI 将分别指向两个数组范围之外的一个位置(即超出 4 字节):
.data
source DWORD 20 DUP(OFFFFFFFFh)
target DWORD 20 DUP(?)
.code
cld                     ;方向为正向
mov ecx,LENGTHOF source ;设置 REP 计数器
mov esi,OFFSET source   ;ES工指向 source
mov edi,OFFSET target   ;ED工指向 target
rep novsd               ;复制双字

编程帮,一个分享编程知识的公众号。跟着站长一起学习,每天都有进步。

通俗易懂,深入浅出,一篇文章只讲一个知识点。

文章不深奥,不需要钻研,在公交、在地铁、在厕所都可以阅读,随时随地涨姿势。

文章不涉及代码,不烧脑细胞,人人都可以学习。

当你决定关注「编程帮」,你已然超越了90%的程序员!

编程帮二维码
微信扫描二维码关注