;编写程序、比较两个字符串所含字符是否相等,如果相等在屏幕上显示“Y",反之显示”N"
1、MOV ES,AX 必须要加,因为 使用了CMPSB,这个要用到源地址
2、MOV CX,LEN1 ;将长度存入CX 中
CMP CX,LEN2 ;比较字符串长度
这段必须要加在CMPSB之前,不加或者不使用CX都会导致程序不能正常运行,为啥我也不知道。
;编写程序、比较两个字符串所含字符是否相等,如果相等在屏幕上显示“Y",反之显示”N"
DATAS SEGMENT
BUF1 DB 20,?,20 DUP('$')
LEN1 EQU $-BUF1 ;获取字符串长度
BUF2 DB 20,?,20 DUP('$')
LEN2 EQU $-BUF2
INPUTA DB 'PLEASE ENTER BUF1 $'
INPUTB DB 'PLEASE ENTER 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
;此处输入代码段代码
MOV DX,OFFSET INPUTA
MOV AH,09H
INT 21H
mov dl,0ah ;换行
mov ah,2
int 21h
mov dl,0dh
mov ah,2
int 21h
LEA DX,BUF1
MOV AH,10 ;输入
INT 21H
mov dl,0ah ;换行
mov ah,2
int 21h
mov dl,0dh
mov ah,2
int 21h
MOV DX,OFFSET INPUTA
MOV AH,09H
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
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,'N' ;CX不为零时跳出循环
JMP L
YES:MOV AL,'Y'
L:
MOV DL,AL ;显示比较结果
MOV AH,02
INT 21H
MOV AH,4CH
INT 21H
CODES ENDS
END START