+ -
当前位置:首页 → 问答吧 → 高手请进,麻烦帮忙看一下这个程序错在哪?谢谢!!!

高手请进,麻烦帮忙看一下这个程序错在哪?谢谢!!!

时间:2011-07-02

来源:互联网

输入一个字符串,并显示输入的字符,并统计字符个数,为什么这个程序只能统计10个以内的字符,超出10个字符就会统计有错误 ,如果要改正应该怎么改?比如改正为能统计超出10个字符的个数。谢谢!!!
 Data SEGMENT
 BUFFER DB 80 
 COUNT DB ?
 MSG DB 80 DUP ('$')
 THESTR DB 0DH,0AH,'THE STRING :','$'
 NUM DB 0DH,0AH,'THE NUM:','$'
 Data ENDS
 Stack SEGMENT STACK
  DB 80 DUP(?)
 Stack ENDS

 

 Code SEGMENT
  ASSUME CS:Code,SS:Stack,DS:Data

 START:  
  MOV AX,Data
  MOV DS,AX
   
  LEA DX,BUFFER
  MOV AH,0AH
  INT 21H
   
  LEA DX,THESTR
  MOV AH,09H
  INT 21H
  LEA DX,MSG
  MOV AH,09H
  INT 21H
   
  LEA DX, NUM
  MOV AH,09H
  INT 21H

  XOR AX,AX
  MOV CX,01H
  MOV BL,09H
  MOV DH,COUNT
AGAIN:
  MOV AL,DH
  CMP AL,BL
  JB JTOT
  INC CX
  DIV BL
 JTOT:  
  MOV DH,AH
  MOV DL,AL
  ADD DL,30H
  MOV AH,02H
  INT 21H
  LOOP AGAIN  
   
   
  MOV AX,4C00H
  INT 21H
  Code ENDS
  END START

作者: ddj008   发布时间: 2011-07-02

考虑下

作者: yangyoutong   发布时间: 2011-07-02

Assembly code

;这是一个将DX里的值以十进制显示出来的子程序。
;希望对你有帮助!
;input:dx
disp    proc uses dx
        mov ax,dx
        xor dx,dx
        mov bx,10
        mov cx,0
a:      cmp ax,10
        jb ok
        div bx
        add dl,30h
        push dx
        xor dx,dx
        inc cx
        jmp a
ok:     add al,30h
        push ax
        inc cx
b:      pop dx
        mov ah,2
        int 21h
        loop b
        ret
disp    endp

作者: masmaster   发布时间: 2011-07-02

XOR AX,AX
  MOV CX,01H
  MOV BL,09H
  MOV DH,COUNT
AGAIN:
  MOV AL,DH
  CMP AL,BL
  JB JTOT
  INC CX
  DIV BL
 JTOT:  
  MOV DH,AH
  MOV DL,AL
  ADD DL,30H
  MOV AH,02H
  INT 21H
  LOOP AGAIN  
请问这一段是什么意思,能不能具体解释一下?

作者: ddj008   发布时间: 2011-07-02