汇编——比较两个字符串

;编写程序、比较两个字符串所含字符是否相等,如果相等在屏幕上显示“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


  • 5
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值