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