ksmjiafeimao 发表于 2011-11-12 23:17:40

一段挺长的程序 不知道错在哪 大家帮帮忙

我自己编的一个程序 要实现从键盘录入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

HACKER 发表于 2011-11-13 07:35:00

xxxxxxxxxxxx

z310394543 发表于 2011-11-13 09:59:36

ksmjiafeimao 发表于 2011-11-13 16:15:16

自己顶一下 有没有会得啊

ascxyh009 发表于 2011-11-13 16:51:40

我也不知道对不对   你试试在dos系统下运行试试(虚拟机好像也可以)
页: [1]
查看完整版本: 一段挺长的程序 不知道错在哪 大家帮帮忙