zoukankan      html  css  js  c++  java
  • 简单应用程序的设计 -重复前缀

    重复前缀

    由于串操作指令只能每次对字符串的一个字符进行处理,所以使用了一个循环,以便完成对整个字符串的处理,为了进一步提高效率,8086和8088还提供了重复指令前缀,重复指令前缀可以加载串操作指令指令之前,已达到重复执行其后串操作指令的目的

    重复前缀REP

    REP用作为一个串操作指令的前缀,它重复其后面的串操作指令动作,每一次重复都先判断CX是否为0,如果为0 就结束重复,否则CX的值就减1,重复其后面的串操作指令,所以CX等于0 时,就不执行其后面的字符操作指令

    重复前缀REP主要用在传送指令MOVS和STOS之前,值得指出的是REP不用在LODSB和LODSW指令之前

    【1】重复操作指令REPZ、REPE

    REPZ与REPE是一个前缀的两个助记符,下面的介绍REPZ为代表

    REPZ用作一个串操作指令的前缀,他重复其后的串操作指令动作,每重复一次,CX的值减少1,重复直到CX为0或者串操作指令使零标志ZF为0,重复结果条件的检查实在重复结果之前进行的

    子程序STRCMP
    功能比较两个字符串是否相同
    入口参数:DS:SI = 字符串1首地址的段值的偏移
                    ES:DI = 字符串2首地址的段值的偏移
    STRCMP  PROC
    CLD
    PUSH DI
    XOR AL,AL;先测量一个字符串的长度
    MOV CX,0FFFFH
    NEXT:SCANSB
    JNZ NEXT
    NOT CX
    POP DI
    REPZ CMPSB
    MOV AL,[SI-1]
    MOV BL,ES:[DI-1]
    XOR AH,AH
    MOV BH,AH
    SUB AX,BX
    RET
    STRCMP ENDP

    【2】重复前缀REPNZ、REPNE

    REPZ用作一个串操作指令的前缀,他重复其后的串操作指令动作,每重复一次,CX的值减少1,重复直到CX为0或者串操作指令使零标志ZF为1,重复结果条件的检查实在重复结果之前进行的

    ;子程序名称 STRCHR
    ;功能 判断字符是否属于字符串
    ;入口参数:DS:SI搜索字符串首地址的段值:偏移
    ;
    
    STRCHR    PROC
                        PUSH BX
                        PUSH SI
                        CLD
                        MOV BL,AL
                        TEST SI,1
                        JZ STRCHR1
                        LODSB
                        CMP AL,BL
                        JZ STRCHR3
                        AND AL,AL
                        JZ STRCHR2
    STRCHR1:LODSW
                        CMP AL,BL
                        JZ SRTCHR4
                        AND AL,AL
                        JZ STRCHR2
                        CMP AH,BL
                        JZ STRCHR3
                        AND AH,AH
                        JNZ STRCHR1
    STRCHR2:STC
                        JMP SHORT STRCHR5
    STRCHR3:INC SI
    STRCHR3:LEA AX,[SI-2]
    STRCHR5:POP SI
                        POP BX
                        RET
    STRCHR    ENDP
  • 相关阅读:
    Insubstantial 6.2 Release
    解决异常:Package should contain a content type part [M1.13]
    Peer-to-Peer 综述
    P2P网络穿越 NAT穿越
    Faster_RCNN 2.模型准备(上)
    Pytorch Visdom
    python opencv3添加opencv-contrib
    Pytorch之验证码识别
    Pytorch tutorial 之Datar Loading and Processing (2)
    Pytorch tutorial 之Datar Loading and Processing (1)
  • 原文地址:https://www.cnblogs.com/fengdashen/p/3721812.html
Copyright © 2011-2022 走看看