• 汇编语言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               ;复制双字

更多...

加载中...