【求救】(汇编)编程,对输入的一串字符串进行统计
;程序如下:
;
data segment
inmsg db 'please input a string:',0dh,0ah,'$' ;输入提示信息
indat db 0ffh,0,0ffh dup(0) ;输入缓冲区
cmsg db 0dh,0ah,'the count of Capital is: $'
nmsg db 'the count of Number is: $'
lmsg db 'the count of Lowercase is: $'
omsg db 'the count of Other char is: $'
csum db 0,0,0dh,0ah,'$' ;大写计数器
nsum db 0,0,0dh,0ah,'$' ;数字计数器
lsum db 0,0,0dh,0ah,'$' ;小写计数器
osum db 0,0,0dh,0ah,'$' ;其它字符计数器
data ends
code segment
assume cs:code,ds:data
start:mov ax,data
mov ds,ax
mov dx,offset inmsg
mov ah,9
int 21h
mov dx,offset indat ;输入字符串
mov ah,10
int 21h
mov si,offset indat+1
mov cl,[si] ;字符串长度存CL
compare:
inc si
cmp byte ptr [si],'0'
jb other
cmp byte ptr [si],'9' ;检查是否数字
jbe number
cmp byte ptr [si],'A'
jb other
cmp byte ptr [si],'Z' ;是否大写字母
jbe capital
cmp byte ptr [si],'a'
jb other
cmp byte ptr [si],'z' ;是否小写字母
ja other
;下面这个代码段看不太懂,相加的高低位和显示的高低位刚好相反的话,也就是说
;mov ax,word ptr [lsum]这里边AH里装的是要显示的低位,AL...那之后又为什么又XCHG了呢
;这样不是又回到原来原来高BITE装要显示输出的低位了?lowercase:
mov ax,word ptr [lsum] ;小写字母次数送AX,准备加1
xchg al,ah ;交换是因为相加的高低位和显示的高低位刚好相反
add al,1
aaa ;低位加1后调整
mov bl,al
mov al,ah
add al,0
aaa ;高位调整,不用ADC指令是因为AAA指令已经把进位送进AH中了。
mov bh,al
xchg bl,bh
mov word ptr [lsum],bx ;加1后送回计数器单元
dec cl
jnz compare
jmp disp
number:
mov ax,word ptr nsum ;步骤同上。
xchg al,ah
add al,1
aaa
mov bl,al
mov al,ah
add al,0
aaa
mov bh,al
xchg bl,bh
mov word ptr nsum,bx
dec cl
jnz compare
jmp disp
capital:
mov ax,word ptr csum
xchg al,ah
add al,1
aaa
mov bl,al
mov al,ah
add al,0
aaa
mov bh,al
xchg bl,bh
mov word ptr csum,bx
dec cl
jnz compare
jmp disp
other:
mov ax,word ptr osum
xchg al,ah
add al,1
aaa
mov bl,al
mov al,ah
add al,0
aaa
mov bh,al
xchg bl,bh
mov word ptr osum,bx
dec cl
jnz compare
jmp disp
disp: add word ptr csum,3030h ;4个种类计数器的内容变成ASCII码,准备显示
add word ptr nsum,3030h
add word ptr lsum,3030h
add word ptr osum,3030h
mov dx,offset cmsg ;以下分别显示各种类次数。
mov ah,9
int 21h
mov dx,offset csum
mov ah,9
int 21h
mov dx,offset nmsg
mov ah,9
int 21h
mov dx,offset nsum
mov ah,9
int 21h
mov dx,offset lmsg
mov ah,9
int 21h
mov dx,offset lsum
mov ah,9
int 21h
mov dx,offset omsg
mov ah,9
int 21h
mov dx,offset osum
mov ah,9
int 21h
mov ah,4ch
int 21h
code ends
end start
...全文
相关推荐
汇编语言统计字符串里的大小字母等
利用汇编语言写成的程序 最高支持输入20位任意字符串,并且统计这一串字符串里的数字,大写字母,小写字母,特殊符号的个数 这是一个简单的程序,是学生党学完自己写的,请多多包涵。
汇编语言字符串统计
实验内容:从键盘输入一行字符,以‘$’结束,查找输入的字符串是否包含‘computer’字符串,如果包含,计算包含’computer’字符串的个数,并以十进制输出个数。 原理:输入一个字符串到定义好的空间string中,以’$’结束,同时获得字符的个数;将computer单词放在keyword里,以computer的个数作为内循环的次数(8次),循环比较,相同则计数器加1,否则不加,string的指针后移一位,keyword指针清零,继续比较,直到遇到规定的符号,结束操作。
基于汇编实现输入字符串并显示
编完整程序,利用DOS系统功能调用,从键盘输入一个字符串,并将该字符串从屏幕上换行后输出。
使用汇编语言,输入字符串,统计其总字符数、字母数、数字数、其他数并输出
使用汇编语言,输入字符串,统计其总字符数、字母数、数字数、其他数并输出 将字符串输入后,每一位取出比较判断是什么类型的字符,然后对应字符计数器加1,循环结束输出个字符计数器数目与 数组总长 统计字符数
汇编统计字符串数字及字符个数
定义一串字符串(50个,包含字母和数字及其它字符,注意要有大小字母) 将该字符串中的字母和数字分别找出来 存放到原来实验一定义的加数,被加数变量中


