
从键盘输入字符串,在屏幕上显示输入字符中ASCII最大的字符。应该是用DOS汇编语言写。微机原理的题。
从键盘输入字符串,在屏幕上显示输入字符中ASCII最大的字符Pleaseinputsomechars:0123456789012345Thebiggestcharis:9...
从键盘输入字符串,在屏幕上显示输入字符中ASCII最大的字符
Please input some chars: 0123456789012345
The biggest char is: 9 展开
Please input some chars: 0123456789012345
The biggest char is: 9 展开
2个回答
展开全部
调试通过!
DATAS SEGMENT
d1 db 'Please input some chars: ','$' ;字符串1
d2 db 'The biggest char is: ','$' ;字符串2
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES
START:
MOV AX,DATAS ;初始化DS
MOV DS,AX
mov dx,offset d1 ;显示字符串1
mov ah,9
int 21h
mov bx,0 ;BX置0,下面用来存放AL的值
s1:
mov ah,7 ;键盘输入不回显,AL=输入数据
int 21h
cmp al,30h ;比较如果小于0重新输入,再检查是否是回车.
jb s2
cmp al,39h ;比较如果大于9重新输入
ja s3
mov dl,al ;如果是数字就显示
mov ah,2
int 21h
cmp al,bl ;与BL比较
jb s2
mov bl,al ;如果小于写入BL
jmp s3
s2:
cmp al,0dh ;回车结束输入
jz s4
s3:
jmp s1
s4:
mov dl,0dh ;显示回车
mov ah,2
int 21h
mov dl,0ah ;显示换行
int 21h
mov dx,offset d2 ;显示字符串2
mov ah,9
int 21h
mov dl,bl ;显示BL,也就是输入的最大值。
mov ah,2
int 21h
mov ah,0 ;等待输入
int 16h
MOV AH,4CH
INT 21H
CODES ENDS
END START
DATAS SEGMENT
d1 db 'Please input some chars: ','$' ;字符串1
d2 db 'The biggest char is: ','$' ;字符串2
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES
START:
MOV AX,DATAS ;初始化DS
MOV DS,AX
mov dx,offset d1 ;显示字符串1
mov ah,9
int 21h
mov bx,0 ;BX置0,下面用来存放AL的值
s1:
mov ah,7 ;键盘输入不回显,AL=输入数据
int 21h
cmp al,30h ;比较如果小于0重新输入,再检查是否是回车.
jb s2
cmp al,39h ;比较如果大于9重新输入
ja s3
mov dl,al ;如果是数字就显示
mov ah,2
int 21h
cmp al,bl ;与BL比较
jb s2
mov bl,al ;如果小于写入BL
jmp s3
s2:
cmp al,0dh ;回车结束输入
jz s4
s3:
jmp s1
s4:
mov dl,0dh ;显示回车
mov ah,2
int 21h
mov dl,0ah ;显示换行
int 21h
mov dx,offset d2 ;显示字符串2
mov ah,9
int 21h
mov dl,bl ;显示BL,也就是输入的最大值。
mov ah,2
int 21h
mov ah,0 ;等待输入
int 16h
MOV AH,4CH
INT 21H
CODES ENDS
END START
展开全部
下列程序已经可以正常工作。
ASSUME CS:CODE, DS:DATA
DATA SEGMENT
MSG1 DB 'Please input some chars: $'
MSG2 DB 13, 10, 'The biggest char is: <'
BIG DB ' ', '>$'
DATA ENDS
CODE SEGMENT
START:
MOV AX, DATA
MOV DS, AX
;------------------------------
MOV DX, OFFSET MSG1
MOV AH, 9
INT 21H
M_LOOP:
MOV AH, 1
INT 21H
CMP AL, 13
JE DISP
CMP AL, DS:[BIG]
JB M_LOOP
MOV DS:[BIG], AL
JMP M_LOOP
DISP:
MOV DX, OFFSET MSG2
MOV AH, 9
INT 21H
;------------------------------
MOV AH, 4CH
INT 21H
CODE ENDS
END START
本程序,不仅仅适用于输入数字符号。
任何的大小写英文、数字、以及其它符号,本程序都能正确处理。
ASSUME CS:CODE, DS:DATA
DATA SEGMENT
MSG1 DB 'Please input some chars: $'
MSG2 DB 13, 10, 'The biggest char is: <'
BIG DB ' ', '>$'
DATA ENDS
CODE SEGMENT
START:
MOV AX, DATA
MOV DS, AX
;------------------------------
MOV DX, OFFSET MSG1
MOV AH, 9
INT 21H
M_LOOP:
MOV AH, 1
INT 21H
CMP AL, 13
JE DISP
CMP AL, DS:[BIG]
JB M_LOOP
MOV DS:[BIG], AL
JMP M_LOOP
DISP:
MOV DX, OFFSET MSG2
MOV AH, 9
INT 21H
;------------------------------
MOV AH, 4CH
INT 21H
CODE ENDS
END START
本程序,不仅仅适用于输入数字符号。
任何的大小写英文、数字、以及其它符号,本程序都能正确处理。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询