STACKS SEGMENT STACK
DW 100H DUP(?)
TOP LABEL WORD
STACKS ENDS
DATAS SEGMENT
STRING1 DB 'abcd123$'
STRING2 DB 'abcd133$' --定義兩個不同的字符串
LEN1 EQU $-STRING1
LEN2 EQU $-STRING2 --獲得字符串的長度
MATCH DB 'MATCH!$'
NOMATCH DB 'NO MATCH!$' --定義MATCH和NOMATCH信息
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACKS
MAIN PROC FAR
MOV AX,STACKS
MOV SS,AX
LEA SP,TOP
MOV AX,DATAS
MOV DS,AX
MOV ES,AX --將存放在數據段中的原串首地址放入DS和ES中
MOV AH,LEN1
MOV AL,LEN2 --將兩個字符串的長度放入AH\AL中
CMP AL,AH --比較兩個寄存器的值,如果不相同則輸出‘NOMATCH’
JNE NO
MOV CH,0
MOV CL,AL --將AL中的值存入cx中,作爲計數器
LEA SI,STRING1
LEA DI,STRING2 -串地址放入SI\DI
CLD --使得DF=0,使得地址自動增量
REPE CMPSB --串比較指令
JNE NO --如果不相等就輸出‘NOMATCH’
YES:
LEA DX,MATCH
MOV AH,09H
INT 21H
JMP EXIT --如果以上都相等則輸出‘NOMATCH’,跳轉到退出
NO: LEA DX,NOMATCH
MOV AH,09H
INT 21H
EXIT:
MOV AH,4CH
INT 21H
MAIN ENDP
CODES ENDS
END MAIN