比较两个字符串 BUF1 和 BUF 所含的字符是否相同,相同则 AL 返回 0,不同 AL 返回 1
最后的结果为:
第一行为BUF1的输入,第二行为BUF1的输出,第三行为BUF2的输入,第四行为BUF2的输出,第五行为判断的结果。
DATAS SEGMENT
BUF1 DB 20,?,20 DUP('$')
LEN1 EQU $-BUF1 ;获取字符串长度
BUF2 DB 20,?,20 DUP('$')
LEN2 EQU $-BUF2
DATAS ENDS
STACKS SEGMENT
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV ES,AX
LEA DX,BUF1
MOV AH,10 ;输入
INT 21H
mov dl,0ah ;换行
mov ah,2
int 21h
mov dl,0dh
mov ah,2
int 21h
lea dx,BUF1[2] ;输出
mov ah,9
int 21h
mov dl,0ah ;换行
mov ah,2
int 21h
mov dl,0dh
mov ah,2
int 21h
LEA DX,BUF2 ;输入
MOV AH,10
INT 21H
mov dl,0ah ;换行
mov ah,2
int 21h
mov dl,0dh
mov ah,2
int 21h
lea dx,BUF2[2] ;输出
mov ah,9
int 21h
mov dl,0ah ;换行
mov ah,2
int 21h
mov dl,0dh
mov ah,2
int 21h
MOV CX,LEN1 ;将长度存入CX 中
CMP CX,LEN2 ;比较字符串长度
JNZ NO
MOV SI,OFFSET BUF1
MOV DI, OFFSET BUF2
REPE CMPSB ;逐个比较
JZ YES ;CX为零时跳出循环,说明两字符串相等
NO: MOV AL,1 ;CX不为零时跳出循环
JMP L
YES:MOV AL,0
L: ADD AL,30H ;将AL中的0与1转换成可显示结果
MOV DL,AL ;显示比较结果
MOV AH,02
INT 21H
MOV AH,4CH
INT 21H
CODES ENDS
END START
结果图: