汇编语言中对于字符串的比较:
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