;经运行,符合题目要求
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
什么语言?C?C++?VB?BASIC?