主题:n那个仁兄帮改个程序,好急啊
kuangquanshui
[专家分:0] 发布于 2005-12-16 15:48:00
输入一串字符串,其中包括字母,数字等,统计出其中有多少个数字。
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个回复)
沙发
erping [专家分:3660] 发布于 2005-12-16 16:33:00
;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
板凳
kuangquanshui [专家分:0] 发布于 2005-12-18 19:02:00
谢谢仁兄的程序,但是可以生成EXE文件,但出错,出不了结果请帮帮忙
我来回复