zoukankan      html  css  js  c++  java
  • 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

     

     

     

     

     

     

  • 相关阅读:
    java8
    Python isinstance()
    Python3 File next()
    np.array() 与 np.mat() 比较
    np.nonzero()
    np.dot()
    算法之归并排序的应用 —— 小和问题以及逆序对问题
    递归过程以及递归master公式
    算法之异或运算及其应用
    算法之二分法及其应用
  • 原文地址:https://www.cnblogs.com/ZanderZhao/p/11052432.html
Copyright © 2011-2022 走看看