【汇编】 字符串比较

汇编语言中对于字符串的比较:

1. 把两字符串的首地址分别送入 SI 和 DI寄存器

2. 把样板字符串长度送入CX 寄存器

3. 将方向标志位清零,使用CLD指令,并把 串指针设置为自动增量

4.使用自动比较指令 REPZ CMPSB 比较两字符串

下面的示例程序指定样板字符串,比较字符串通过系统功能调用输入:

其中对于字符串缓冲区的设置为:


; You may customize this and other start-up templates; 
; The locaweixin_46918378.//32tion of this template is c:\emu8086\inc\0_com_template.txt

DATA SEGMENT
    STR1 DB 80 ;定义
               ;接收字符串str1的缓冲区
         DB 0
         DB 80 DUP(0) 
    STR2 DB 'XCOPY.EXE' ;STR2 中的内容
    NUM EQU $-STR2  ;获取STR2的长度
    DATA ENDS
SSEG SEGMENT STACK
    STACK DB 20 DUP(0)
    SSEG ENDS
CSEG SEGMENT 'CODE'                
    ASSUME CS:CSEG,DS:DATA,SS:SSEG,ES:DATA
    START : MOV AX,DATA
            MOV DS,AX
            MOV ES,AX ;建立附加数据段
            
            LEA DX,STR1
            MOV AH,10   ;输入字符串到STR1
            INT 21H
            XOR AH,AH
            MOV AL,STR1+1  ;取实际长度值
            CMP AX,NUM
            JNE EXIT   ;长度不等,转EXIT
            LEA SI,STR1+2
            LEA DI,STR2
            MOV CX,NUM  ;串长度送到CX
            CLD
            REPZ CMPSB
            JNE EXIT
            MOV BX,0
            JMP END1
    EXIT:   MOV BX,0FFFFH  ; 不相等
            MOV AH,4CH
            INT 21H 
    END1:   MOV BX,0H  ; 相等
            MOV AH,4CH
            INT 21H   
CSEG ENDS
END START




猜你喜欢

转载自blog.csdn.net/mid_Faker/article/details/112388923