汇编语言(四)之比较字符串

输入两个字符串,比较字符串是否相同

程序运行:

 

代码:


datas segment
      string1MaxLength db 0ffh,0  
      string1          db 100h dup(?)
      string1Number    dw 0	
	  
      string2MaxLength db 0ffh,0	  
      string2          db 100h dup(?)	  
	  string2Number    dw 0
	  
	  input1Prompt     db 'input string1:$'
	  input2Prompt     db 0dh,0ah,'input string2:$'
	  outputMatch      db 0dh,0ah,'MATCH$'
	  outputNoMatch    db 0dh,0ah,'NO MATCH$'
	  
datas ends

stacks segment

   db 100h dup(?)

stacks ends

codes segment

assume cs:codes,ds:datas,ss:stacks
main   proc  far
start:
       push ds
	   mov ax,0h
	   push ax
       mov ax,datas          ;初始化ds
	   mov ds,ax
	   
	   ;输出输入string1提示
       lea dx,input1Prompt
	   mov ah,9
	   int 21h
	   ;输入string1
	   lea dx,string1MaxLength
	   mov ah,10
	   int 21h
	   ;保存string1的长度和设置结束字符
       mov bl,string1MaxLength+1
       mov bh,0	   
	   mov string1Number,bx
	   mov string1[bx],'$'
	   
	   
	  ;输出输入string2提示
	   lea dx,input2Prompt
	   mov ah,9
	   int 21h
	   ;输入string2
	   lea dx,string2MaxLength
	   mov ah,10
	   int 21h	
       ;保存string1的长度和设置结束字符
       mov bl,string2MaxLength+1
       mov bh,0	   
	   mov string2Number,bx
	   mov string2[bx],'$'
	   
	   
	   ;比较string1和string2的字符串长度
	   cmp bx,string1Number
	   jne s3                  ;不相等,直接跳转s3
	   
	   ;相等时,判断字符是否相同
	   mov si,0
	   mov di,0
	   mov cx,string1Number
	   compare:
	      mov al,string1[si]
	      cmp al,string2[di]
		  jne s3
		  inc si
		  inc di
		  loop compare
       ;字符完全相同,输出MATCH
	   lea dx,outputMatch
	   mov ah,9
	   int 21h
       jmp exit     ;跳转至退出程序
	   
	   ;不相等,输出NO MATCH
	   s3:
	   lea dx,outputNoMatch
	   mov ah,9
	   int 21h
       
	   exit:
         ret
	   
main endp
codes ends

end main

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值