我是靠谱客的博主 真实樱桃,最近开发中收集的这篇文章主要介绍汇编一日一学(8)--比较两个字符串,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 

;试编写一程序,要求比较两个字符串STRING1和STRING2所含字符是否完全相同,

;若相同则显示'MATCH',若不相同则显示'NO MATCH'.

DATA SEGMENT

      string1 DB "I a$"

      string2 DB "I am a student!$"

      YES DB "MATCH", 0DH, 0AH, '$'

      NO DB "NO MATCH", 0DH, 0AH, '$'

DATA ENDS

 

CODE SEGMENT

      MAIN PROC FAR

       ASSUME CS:CODE, DS:DATA, ES:DATA

      

STRAT:

        PUSH DS

        SUB AX,AX

        PUSH AX

                   

        MOV AX,data

        MOV DS,AX

        MOV ES,AX  

        ;初始化

        MOV AX,0

        MOV CX,0

        LEA     SI,string1 

        LEA     DI,string2

length1:                      ;string1的长度

        SUB     [SI],'$'

        JZ      length2

        INC     SI

        INC     AX

        JNZ     length1

        

length2:                      ;string2的长度

        SUB     [DI],'$'

        JZ      compare

        INC     DI

        INC     CX

        JNZ     length2  

        

compare:                      ;设置CX为最大长度

        CMP     CX,AX

        JGE     lop

        MOV     CX,AX     

lop:

        LEA                SI, string1                ;设置串比较指令的初值

        LEA                DI, string2

        CLD 

     

        REPE

        CMPSB                        ;串比较

        JNE                dispNo

        LEA                DX, YES                        ;显示MATCH

        JMP                display    

       

dispNo:        LEA                DX, NO                        ;显示NO MATCH  

       

display:        MOV        AH, 9                        ;显示一个字符串的DOS调用   

     

        INT                21H

        RET

 

      MAIN ENDP     

CODE ENDS

     END STRAT

 

//

指令的基本功能:CLD   DF=0

                STD   DF=1

/

 

Direction Flag (DF)

- 方向标志,在串处理指令中控制处理信息的方向用。

当DF为1时,每次操作后使变址寄存器SI和DI减量,这样就使串

处理从高地址向低地址方向处理。当DF为0时,则使SI和DI增量

,使串处理从低地址向高地址方向处理。

///

 

有效地址传送器 LEA

 

相等/为零时重复执行串指令 REPE/REPZ

 

指令的汇编格式:REPE / REPZ     (CX)=比较/扫描的次数

指令的基本功能:① (CX)!=0或ZF=0时,结束执行串指令,否则继续② ~ ④

              ② (CX)←(CX)-1

              ③ 执行串指令(CMPS或SCAS)

              ④ 重复执行①

 

不等/不为零时重复执行串指令 REPNE / PEPNZ

 

指令的汇编格式:REPNE / PEPNZ    (CX)=比较/扫描的次数

指令的基本功能:① (CX)!=0或ZF=1,结束执行串指令,否则继续② ~ ④

              ② (CX)←(CX)-1

              ③ 执行串指令(CMPS或SCAS)

              ④ 重复执行①

最后

以上就是真实樱桃为你收集整理的汇编一日一学(8)--比较两个字符串的全部内容,希望文章能够帮你解决汇编一日一学(8)--比较两个字符串所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部