回 帖 发 新 帖 刷新版面

主题:n那个仁兄帮改个程序,好急啊


输入一串字符串,其中包括字母,数字等,统计出其中有多少个数字。

data segment
    kb_buffer db 100 dup(?)
    nsum db ?
data ends
code segment
     assume cs:code,ds:data
start:mov ax,code
      mov cx,ax
      mov ax,data
      mov ds,ax
      mov cl,0
      mov dx,offset kb_buffer
      mov ah,10
      int 21h
lp:   mov si,dx
      mov al,[si]
      cmp al,23h
      je exit
      cmp al,'0'
      jb other
      cmp al,'9'
      ja other
      inc cl
other:inc dx
      jmp lp
exit: mov nsum,cl
      mov ah,4ch
      int 21h
code ends
     end start

回复列表 (共2个回复)

沙发


;author: Dummy
;date:     2005-12-14 12:21:23
;Microsoft Macro Assembler Version 6.15.8803
;Turbo Link Version 3.01

;输入一字符串,要求显示其中数字的个数及显示这些数字.

.model small

.stack
.data
strBuff        db    100
            db    ?
            db    100    dup    (?)
strMsg1        db    0DH, 0AH, 'number: ', '$'
strMsg2        db    0DH, 0AH, 'total: ', '$'

.code
_main:
            mov        ax, @data
            mov        ds, ax
            
            lea        dx, strBuff
            mov        ah, 0AH
            int        21H

            lea        dx, strMsg1
            mov        ah, 9
            int        21H

            cld
            lea        si, [strBuff + 2]
            mov        cl, byte ptr [si - 1]    ;用户输入字符个数送入 cl
            inc        cl
            xor        bx, bx
    _next_char:
            dec        cl
            test    cl, cl
            jz        _@1
            lodsb
            cmp        al, '0'
            jb        _next_char
            cmp        al, '9'
            ja        _next_char
            inc        bx
            mov        dl, al
            mov        ah, 2
            int        21H
            jmp        _next_char
    _@1:
            lea        dx, strMsg2
            mov        ah, 9
            int        21H
            
            mov        ax, bx
            lea        si, strBuff
            call    BinToDecString

            lea        dx, strBuff
            mov        ah, 9
            int        21H

            mov        ax, 4C00H
            int        21H
;****************************************************
;BinToDecString
;功能:
;    机器数转换为十进制字符串
;入口参数:
;    AX 存放机器数
;    SI 存放要转换后的字符串的地址
;****************************************************
BinToDecString    proc
            push    dx
            push    cx
            cld

            mov        cx, 10
_@BinToDecString_1:
            xor        dx, dx
            div        cx        ;除以 10
            push    ax        ;暂时保存商
            mov        al, dl
            add        al, '0' ;余数加 '0'
            mov        byte ptr [si], al
            inc        si
            pop        ax        ;弹出商
            test    ax, ax
            jnz        _@BinToDecString_1
            
            mov        byte ptr [si], '$'
            pop        cx
            pop        bx
            ret
BinToDecString    endp
end    _main

板凳

谢谢仁兄的程序,但是可以生成EXE文件,但出错,出不了结果请帮帮忙

我来回复

您尚未登录,请登录后再回复。点此登录或注册