2.通过键盘输入一个小写字母,找出对应的前导字母和后续字母,再按顺序显示这三个字母。

DATA	SEGMENT
MSG1	DB	'Please input a lowercase letters:','$'
MSG2 	DB 	'RESULT:','$'
MSG3	DB  'The character you entered is wrong',0ah,0dh,'$'
STRING	DB	'zabcdefghijklmnopqrstuvwxyza','$'
CRLF	DB	0AH,0DH,'$'  ;回车,换行
DATA	ENDS

CODE    SEGMENT
ASSUME  CS:CODE,DS:DATA
MAIN    PROC 	FAR
START:
	MOV AX,DATA
  	MOV DS,AX
  	
  	LEA DX,MSG1
  	MOV AH,09H
  	INT 21H 
  		
  	MOV AH,01H   	;接受键盘输入小写字母
  	INT 21H
  		
  	MOV AH,09H
  	LEA DX,CRLF
  	INT 21H      	;输出回车、换行
  
  	CMP AL,61H
  	JB 	STOP
  	CMP AL,7AH
  	JA STOP			;判断输入字符是否为小写字符
  		
  	LEA DI,STRING
L1:  	INC DI       	;使DI指向a
  	CMP AL,[DI]
  	JNE L1       	;如果输入字符和当前指向字符不相等,则比较下一个
  
  	DEC DI       	;找到相对应字母后,DI指向其前导字母
  
  	MOV AH,09H
  	LEA DX,CRLF
  	INT 21H      	;输出回车、换行
  
 	MOV AH,09H
  	LEA DX,MSG2
  	INT 21H      	;输出回车、换行
  	MOV CX,3     	;循环顺序输出显示三个小写字母
L2:    	MOV DL,[DI]
        MOV AH,02H   	;单字符显示,需要将显示的字符送入DL
  	INT 21H
  	INC DI
  	LOOP L2
  	JMP EXIT
STOP:
	MOV AH,09H
  	LEA DX,CRLF
  	INT 21H      	;输出回车、换行
  		
	LEA DX,MSG3		;输出输入出错提示
	MOV AH,09H 
	INT 21H
	JMP EXIT
EXIT:
  	MOV AH,4CH
  	INT 21H
  		
MAIN 	ENDP
CODE 	ENDS
	END	MAIN

输出提示信息的操作较繁琐,可以考虑把它改变为宏定义

posted @ 2020-10-26 09:03  不知道说什么才好  阅读(808)  评论(0编辑  收藏  举报