一段挺长的程序 不知道错在哪 大家帮帮忙
我自己编的一个程序 要实现从键盘录入200个以上小写英文文章,并把小写文章转换成大写文章输出到屏幕上,同时统计每个字母出现的次数 。现在 可以运行 可是出现Please enter your letters,and press enter to end your input后 输入东西 按回车 只是换行 什么也不出来 大家帮帮忙看看啊data segment
buffer db 255
db ?
db 255 dup('$')
countdb 255 dup(0)
str1 db 'Please enter your letters,and press enter to end your input:','$'
str2 db 0dh,0ah,'The number of chars:','$'
str3 db 0dh,0ah,'You have NOT input any letters','$'
huiche db 0dh,0ah,'$'
data ends
stacks segment
dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
stacks ends
code segment
assume cs:code,ds:data,ss:stacks
start:
main proc near
mov ax,data
mov ds,ax
mov ax,stacks
mov ss,ax
mov ah,09h
mov dx,offset str1
int 21h
call input
mov dx,offset huiche
mov ah,09h
int 21h
call transform
call xianshi
lea bx,buffer
mov ch,0
mov cl,
mov si,0
call jishu1
mov si,0
mov ch,0
mov cl,
call print1
mov ah,4ch
int 21h
main endp
input proc near
push ax
push dx
mov dx,offset buffer
mov ah,0ah
int 21h
pop dx
pop ax
ret
input endp
transform proc near
push ax
push bx
mov bx,3
b20:mov al,ds:
cmp al,'$'
jzexit
cmp al,'a'
jbb30
cmp al,'z'
jab30
sub al,20h
mov ds:,al
b30:inc bx
jmp b20
pop bx
pop ax
exit:ret
transform endp
xianshi proc near
push ax
push bx
push cx
push dx
mov bx,4
mov cl,ds:
cmp cl,24h
jnexs1
mov ah,09h
mov dx,offset str3
int 21h
jmp exit1
xs1:mov ah,09h
mov dx,3
int 21h
pop dx
pop cx
pop bx
pop ax
exit1:ret
xianshi endp
jishu1 proc near
looper:mov di,0
mov al,
push cx
push si
mov cx,si
bj:cmp al,
je jia
inc di
loopne bj
mov al,count
inc al
mov count,al
jmp exit2
jia:mov al,count
inc al
mov count,al
exit2:pop si
pop cx
inc si
loopne looper
ret
jishu1 endp
print1 proc near
mov dx,offset str2
mov ah,09h
int 21h
looper1:mov al,0
cmp count,al
jne shuchu
ll: inc si
loopne looper1
jmp exit3
shuchu: mov dx,offset huiche
mov ah,09h
int 21h
mov dl,
mov ah,02
int 21h
mov dl,count
add dl,30h
cmp dl,39h
jg zhuanhuan
zhuanhuan:push cx
push bx
mov al,count
cbw
mov bl,100
divbl
add al,30h
mov ch,ah
mov ah,02h
mov dl,al
int 21h
mov al,ch
cbw
mov bl,10
div bl
add al,30h
mov ch,ah
mov ah,02h
mov dl,al
int 21h
mov dl,ch
int 21h
pop bx
pop cx
jmp ll
exit3: ret
print1 endp
code ends
end start
xxxxxxxxxxxx 自己顶一下 有没有会得啊 我也不知道对不对 你试试在dos系统下运行试试(虚拟机好像也可以)
页:
[1]