汇编语言程序设计 - 要求比较两个字符串STRING1和STRING2所含字符是否完全相同,若相同则显示‘MATCH’, 若不相同则显示‘NO MATCH’

80x86汇编习题
题目描述:要求比较两个字符串STRING1和STRING2所含字符是否完全相同,若相同则显示‘MATCH’, 若不相同则显示‘NO MATCH’

思路:

1,利用串操作指令完成

2,数据段和附加段指向同一段,SI,DI赋对应的值

3,设定执行方向,指向长度,开始REP指令

4,全部比较完没问题就输出MATCH,一旦不相等就跳去输出not match

DATAS SEGMENT
	STR1 DB 'I am so handsome.'
	STR2 DB 'I am so handsome!'
	MATCH DB 'MATCH',0DH,0AH,'$'
	NOTMA DB 'NOT MATCH',0DH,0AH,'$'
DATAS ENDS

STACKS SEGMENT
    DW 100H DUP(?)
	TOP LABEL WORD  
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    MOV ES,AX		;数据段和附加段指向同一段
    MOV AX,STACKS
    MOV SS,AX
    LEA SP,TOP		;初始化
    
	LEA SI,STR1		;数据段的指针
	LEA DI,STR2		;附加段的指针
	CLD				;执行方向
	MOV CX,STR2-STR1;比较的次数,用STR2的地址减去STR1地址,也就是CX等于STR1的长度
	REPE CMPSB		;逐个字节比较
	JNE MOVNO		;一旦不相等就跳去设定not match的
	
	LEA DX,MATCH	;全部比较完没问题就设定MATCH
	JMP DISP		;跳去输出
	
MOVNO:
	LEA DX,NOTMA	;设定not match
	
DISP:
	MOV AH,9		;输出结果信息
	INT 21H
    
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值