汇编语言 | 判断输入是否回文,是则输出YES,否则输出NO

INT 21H中断调用中,要认清楚0AH的用法。

.MODEL SMALL
.DATA
INPUT DB"Please input a string:",'$'
OUTPUT1 DB "YES", 0AH,0DH,'$'
OUTPUT2 DB "NO", 0AH,0DH,'$'
CHANGELINE DB 0AH,0DH,'$'
STRING DB 80, ?, 80 DUP(?)
.CODE
MAIN PROC FAR
	MOV AX,@DATA
	MOV DS,AX
	MOV DX,OFFSET INPUT
	MOV AH,09H
	INT 21H
	MOV DX,OFFSET STRING
	MOV AH,0AH;输入字符串
	INT 21H
	;处理字符串
	MOV AL,STRING+1;输入的字符数
	ADD AL,2
	MOV AH,0
	MOV SI,AX
	MOV STRING[SI],'$';在字符串尾查入$,方便输出,输出要求有$,输入没有要求$,易忽略
	MOV BX,OFFSET STRING+2;字符串首
	MOV SI,BX
	MOV CL,STRING+1;输入的字符数
	MOV CH,0
	ADD SI,CX
	DEC SI;减去最后一位字符$
COM:
	CMP BX,SI;地址相等,查找结束
	JGE OP1;大于等于,才能判断偶数个字符
	XOR AL,AL;清空al
	MOV AL,[BX]
	CMP AL,[SI]
	JNE OP2;但凡有不等,即不是回文串,跳转输出
	INC BX
	DEC SI
	JMP COM
OP1:
	MOV DX,OFFSET CHANGELINE
	MOV AH,09H
	INT 21H
	MOV DX,OFFSET OUTPUT1
	MOV AH,09H
	INT 21H
	JMP ENDD
OP2:
	MOV DX,OFFSET CHANGELINE
	MOV AH,09H
	INT 21H
	MOV DX,OFFSET OUTPUT2
	MOV AH,09H
	INT 21H
	JMP ENDD
ENDD:MOV AX,4C00H
	INT 21H
MAIN ENDP
END

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值