
汇编语言,从键盘输入一字符串
如是数字串,则直接显示,如是字符串,则将该字符串中小写字母转换成大写后输出该字符串,如是字符和数字的混合串,则显示nodisplay,因为我是初学者,所以请简单明了一些...
如是数字串,则直接显示,如是字符串,则将该字符串中小写字母转换成大写后输出该字符串,如是字符和数字的混合串,则显示no display ,因为我是初学者,所以请简单明了一些
展开
2个回答
推荐于2017-10-07
展开全部
;经运行,符合题目要求
code segment
assume cs:code,ds:code
org 100h
start:
push cs
pop ds
Q0:lea dx,Buffer
mov ah,9 ;显示提示
int 21h
mov si,200h ;硬编码缓冲区首址
mov byte ptr [si],0ffh ;置输入缓冲区大小为255个字符
mov dx,si ;定义缓冲区首址
mov ah,0ah
int 21h
mov ax,0e0dh ;回车
int 10h
mov ax,0e0ah ;换行
int 10h
xor dx,dx ;计数器清0
inc si
mov al,[si] ;取输入串实际长度
or al,al ;是空串吗?
jz Q8
inc si ;SI指向字符串首址
Q1:mov al,[si] ;取一字符
cmp al,0dh ;是缓冲区结束标记吗?
jz Q5
cmp al,'0'
jb Q3
cmp al,'9'
ja Q2
inc dl ;数字0-9计数器+1
jmp Q4
Q2:cmp al,'a'
jb Q3
cmp al,'z'
ja Q3
sub al,20h ;小写字母转为大写
mov [si],al ;存入原字串缓冲区
Q3:inc dh ;字母和其它字符计数器+1
Q4:inc si ;SI 指向下一字符
jmp Q1 ;处理下一字符
Q5:mov byte ptr [si],'$' ;添加串结束标记
or dh,dh ;如DH=0,则该串为纯数字串
jz Q7 ;转显示
Q6:or dl,dl ;如DL=0,则该串中无数字0-9
jz Q7 ;转显示
lea dx,Tips
jmp Show
Q7:mov dx,202h ;指向源串串首
jmp Show
Q8:lea dx,Nul
Show:
mov ah,9
int 21h
exit:;下面这句,方便从资源管理器看,
;没这句,屏幕一闪就没了
mov ah,0 ;暂停
int 16h
mov ah,4ch
int 21h
Nul db 'The String is NUL!',0dh,0ah,'$';这是一空串
Tips db 'no display',0dh,0ah,'$';这是一个混合串
Buffer db 'Please input a String: ',0dh,0ah,'$' ;提示
code ends
end start
code segment
assume cs:code,ds:code
org 100h
start:
push cs
pop ds
Q0:lea dx,Buffer
mov ah,9 ;显示提示
int 21h
mov si,200h ;硬编码缓冲区首址
mov byte ptr [si],0ffh ;置输入缓冲区大小为255个字符
mov dx,si ;定义缓冲区首址
mov ah,0ah
int 21h
mov ax,0e0dh ;回车
int 10h
mov ax,0e0ah ;换行
int 10h
xor dx,dx ;计数器清0
inc si
mov al,[si] ;取输入串实际长度
or al,al ;是空串吗?
jz Q8
inc si ;SI指向字符串首址
Q1:mov al,[si] ;取一字符
cmp al,0dh ;是缓冲区结束标记吗?
jz Q5
cmp al,'0'
jb Q3
cmp al,'9'
ja Q2
inc dl ;数字0-9计数器+1
jmp Q4
Q2:cmp al,'a'
jb Q3
cmp al,'z'
ja Q3
sub al,20h ;小写字母转为大写
mov [si],al ;存入原字串缓冲区
Q3:inc dh ;字母和其它字符计数器+1
Q4:inc si ;SI 指向下一字符
jmp Q1 ;处理下一字符
Q5:mov byte ptr [si],'$' ;添加串结束标记
or dh,dh ;如DH=0,则该串为纯数字串
jz Q7 ;转显示
Q6:or dl,dl ;如DL=0,则该串中无数字0-9
jz Q7 ;转显示
lea dx,Tips
jmp Show
Q7:mov dx,202h ;指向源串串首
jmp Show
Q8:lea dx,Nul
Show:
mov ah,9
int 21h
exit:;下面这句,方便从资源管理器看,
;没这句,屏幕一闪就没了
mov ah,0 ;暂停
int 16h
mov ah,4ch
int 21h
Nul db 'The String is NUL!',0dh,0ah,'$';这是一空串
Tips db 'no display',0dh,0ah,'$';这是一个混合串
Buffer db 'Please input a String: ',0dh,0ah,'$' ;提示
code ends
end start
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?

2024-10-22 广告
百事牛是共享提供商,我们提供可靠有效的服务,适当合理的授权费有利于的继续更新优化。同样的事情,同样的方法,百事牛团队十年磨一剑,始终至聚焦在密码恢复领域,深耕于此,我们已研制出有别于其他公司的算法和运算模式, 百事牛的暴力模式加入了分布式点...
点击进入详情页
本回答由百事牛提供
展开全部
什么语言?C?C++?VB?BASIC?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询