试编写一个汇编语言程序,从键盘输入一个字符,若该字符是大写字母,在屏幕上输出"upper"(不含双引号) 20
若该字符时小写字母,在屏幕上输出"lower"(不含双引号)若两者都不是,在屏幕上输出“no"(不含双引号)...
若该字符时小写字母,在屏幕上输出"lower"(不含双引号)若两者都不是,在屏幕上输出“no"(不含双引号)
展开
2个回答
展开全部
;------------------------------------
PRINT MACRO PARA ; 定义一个显示字符串的宏
LEA DX, PARA
MOV AH, 9
INT 21H
ENDM
;------------------------------------
DSEG SEGMENT
MSG_LOWER DB ' lower', 0DH, 0AH, 24H
MSG_UPPER DB ' upper', 0DH, 0AH, 24H
MSG_NO DB ' no', 0DH, 0AH, 24H
MSG1 DB 'please press a key (press [esc] key to end program): $'
DSEG ENDS
;------------------------------------
CSEG SEGMENT
ASSUME CS:CSEG, DS:DSEG
START:
MOV AX, DSEG
MOV DS, AX
;------------------------
LB_1:
PRINT MSG1 ;显示提示信息
MOV AH, 1
INT 21H ;输入一个字符
CMP AL, 1BH ;是[esc]?
JZ EXIT
CMP AL, 'A' ;小于'A'?
JB LB_NO
CMP AL, 'z' ;大于'z'?
JA LB_NO
CMP AL, 'Z' ;小于等于'Z'?
JBE UUU
CMP AL, 'a' ;小于'a'?
JB LB_NO
;------------------
PRINT MSG_LOWER
JMP LB_1
UUU:
PRINT MSG_UPPER
JMP LB_1
LB_NO:
PRINT MSG_NO
JMP LB_1
;------------------------
EXIT:
MOV AX, 4C00H
INT 21H
CSEG ENDS
END START
PRINT MACRO PARA ; 定义一个显示字符串的宏
LEA DX, PARA
MOV AH, 9
INT 21H
ENDM
;------------------------------------
DSEG SEGMENT
MSG_LOWER DB ' lower', 0DH, 0AH, 24H
MSG_UPPER DB ' upper', 0DH, 0AH, 24H
MSG_NO DB ' no', 0DH, 0AH, 24H
MSG1 DB 'please press a key (press [esc] key to end program): $'
DSEG ENDS
;------------------------------------
CSEG SEGMENT
ASSUME CS:CSEG, DS:DSEG
START:
MOV AX, DSEG
MOV DS, AX
;------------------------
LB_1:
PRINT MSG1 ;显示提示信息
MOV AH, 1
INT 21H ;输入一个字符
CMP AL, 1BH ;是[esc]?
JZ EXIT
CMP AL, 'A' ;小于'A'?
JB LB_NO
CMP AL, 'z' ;大于'z'?
JA LB_NO
CMP AL, 'Z' ;小于等于'Z'?
JBE UUU
CMP AL, 'a' ;小于'a'?
JB LB_NO
;------------------
PRINT MSG_LOWER
JMP LB_1
UUU:
PRINT MSG_UPPER
JMP LB_1
LB_NO:
PRINT MSG_NO
JMP LB_1
;------------------------
EXIT:
MOV AX, 4C00H
INT 21H
CSEG ENDS
END START
参考资料: 楼上的程序
展开全部
PRINT MACRO PARA ; 定义一个宏,用来显示字符串,用宏可以使程序写起方便,并显得干净
LEA DX,PARA
MOV AH,9
INT 21H
ENDM
SSEG SEGMENT PARA STACK 'stack'
DB 1024 DUP(?)
SSEG ENDS
DSEG SEGMENT
MSG_LOWER DB 'lower',0DH,0AH,24H
MSG_NO DB 'no',0DH,0AH,24H
MSG1 DB 'please press a key (press [esc] key to end program):$'
CRLF DB 0DH,0AH,24H
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG ,SS:SSEG
START: MOV AX,SSEG
MOV SS,AX
MOV AX,DSEG
MOV DS,AX
;------------------------
LB_1: PRINT MSG1 ; 显示提示信息
MOV AH,1
INT 21H ; 输入一个字符
PUSH AX
PRINT CRLF
POP AX
CMP AL,1BH ; 是[esc]键吗?
JZ EXIT
CMP AL,61H ;小于字母'a'?
JC LB_NO
CMP AL,7BH ; 大于字母'z' ?
JNC LB_NO
PRINT MSG_LOWER
JMP LB_1
LB_NO: PRINT MSG_NO
JMP LB_1
;------------------------
EXIT: MOV AX,4C00H
INT 21H
CSEG ENDS
END START
程序已经测试,如有其它问题,我们再讨论。希望能对你有帮助
LEA DX,PARA
MOV AH,9
INT 21H
ENDM
SSEG SEGMENT PARA STACK 'stack'
DB 1024 DUP(?)
SSEG ENDS
DSEG SEGMENT
MSG_LOWER DB 'lower',0DH,0AH,24H
MSG_NO DB 'no',0DH,0AH,24H
MSG1 DB 'please press a key (press [esc] key to end program):$'
CRLF DB 0DH,0AH,24H
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG ,SS:SSEG
START: MOV AX,SSEG
MOV SS,AX
MOV AX,DSEG
MOV DS,AX
;------------------------
LB_1: PRINT MSG1 ; 显示提示信息
MOV AH,1
INT 21H ; 输入一个字符
PUSH AX
PRINT CRLF
POP AX
CMP AL,1BH ; 是[esc]键吗?
JZ EXIT
CMP AL,61H ;小于字母'a'?
JC LB_NO
CMP AL,7BH ; 大于字母'z' ?
JNC LB_NO
PRINT MSG_LOWER
JMP LB_1
LB_NO: PRINT MSG_NO
JMP LB_1
;------------------------
EXIT: MOV AX,4C00H
INT 21H
CSEG ENDS
END START
程序已经测试,如有其它问题,我们再讨论。希望能对你有帮助
更多追问追答
追问
后面问题我忘了写了 若该字符是小写字母,在屏幕上输出“lower”(不含双引号),若两者都不是,在屏幕上输出“NO”(不含双引号)
追答
程序上有啊
服了你了,你看程序没啊?:)
来自:求助得到的回答
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询