• 170.串处理指令


    1.串处理指令

     设置方向标志指令
    CLD、STD

     串处理指令 
    MOVSB / MOVSW 
    STOSB / STOSW 
    LODSB / LODSW 
    CMPSB / CMPSW
    SCASB / SCASW

     串重复前缀

    REP    

    REPE / REPZ

    REPNE / REPNZ


    与 REP 配合工作的 MOVS / STOS / LODS

    REP   repeat
    执行操作:
    (1) 如 (CX)=0 则退出 REP,否则转(2)
    (2) (CX) ← (CX) -1
    (3) 执行 MOVS / STOS / LODS
    (4) 重复 (1) ~ (3)


    2.MOVS 串传送指令

    MOVS DST, SRC     move string  DST目的操作数destination   SRC源

    MOVSB (字节)
    MOVSW (字)

    data   segment
           mess1  db  ‘personal_computer’
    data   ends
    
    extra  segment
           mess2  db  17 dup (?)
    extra  ends
    
    code   segment
         
    code   ends
    data   segment
           mess1  db  ‘personal_computer’
    data   ends
    
    extra  segment
           mess2  db  17 dup (?)
    extra  ends
    
    code   segment
     mov  ax, data
     mov    ds,ax
     mov    ax, extra
     mov  es, ax
     lea  si, mess1
     lea  di, mess2
     mov  cx, 17
     cld
     rep  movsb
     …
    code   ends
    
    
    data   segment
     mess1 db  ‘personal_computer’
      mess2  db    17 dup (?)
    data   ends
    
    code   segment
     mov  ax, data
     mov    ds, ax
     mov  es, ax
    
     lea  si, mess1
     lea  di, mess2
     mov  cx, 17
     cld
     rep  movsb
     …
    code   ends
    View Code

     3.STOS 存入串指令

    STOS DST         store into string
    STOSB (字节)
    STOSW (字)


    执行操作:
    字节操作:((DI))←(AL), (DI)←(DI)±1
    字操作:((DI))←(AX), (DI)←(DI)±2

     例:把 附加段 中的 10 个字节缓冲区置为 20H

    lea di, mess2
    mov al, 20H
    mov cx, 10
    cld
    rep stosb

    lea di, mess2
    mov ax, 2020H
    mov cx, 5
    cld
    rep stosw

     4.LODS 从串取指令

    LODS SRC    load from string
    LODSB (字节)
    LODSW (字)

    执行操作:
      字节操作:(AL)←((SI)), (SI)←(SI)±1
      字操作:(AX)←((SI)), (SI)←(SI)±2

    注意:
    * LODS 指令一般不与 REP 联用
    * 源串一般在数据段中(允许使用段跨越前缀来修改),目的串必须在附加段中
    * 不影响条件标志位


    与 REPE / REPZ(REPNE / REPNZ)配合工作的
    CMPS 和 SCAS

    REPE / REPZ
    REPNE / REPNZ

    执行操作:
    (1) 如 (CX)=0 或 ZF=0 (ZF=1) 则退出串操作,
         否则转(2)
    (2) (CX)←(CX) -1
    (3) 执行 CMPS / SCAS
    (4) 重复 (1) ~ (3)


    5.CMPS 串比较指令

    CMPS SRC, DST        compare string
    CMPSB (字节)
    CMPSW (字)

    执行操作:
      (1) ((SI)) - ((DI))
        根据比较结果置条件标志位:相等 ZF=1
                     不等 ZF=0
      (2) 字节操作:(SI)←(SI)±1, (DI)←(DI)±1
        字操作: (SI)←(SI)±2, (DI)←(DI)±2

     6.SCAS 串扫描指令

    SCAS DST                  scan string
    SCASB (字节)
    SCASW (字)

    执行操作:
      字节操作:(AL) - ((DI)), (DI)←(DI)±1
      字操作: (AX) - ((DI)), (DI)←(DI)±2

     

     

     

     

     

     

  • 相关阅读:
    fatal: unable to access ‘https://github.com/Homebrew/brew/‘: Error in the HTTP2 framing layer
    leetcode题目两数和、最大字符串长度、中位数、最长回文子串
    zabbix5.x版本添加自定义监控+263邮件报警
    php过滤特殊字符方法
    js中e相关位置
    少有人走的路-心智成熟的旅程-斯科特·派克
    ios脱壳
    docker 容器开机自启
    Java8 Stream的使用
    Entity Frameworker 的核心 EDM(Entity Data Model)模式
  • 原文地址:https://www.cnblogs.com/ZanderZhao/p/11052432.html
Copyright © 2020-2023  润新知