主题:救急--汇编语言
水中雨
[专家分:90] 发布于 2005-12-19 15:35:00
1.一段字符串,统计其中数字的个数,如
DATA SEGMENT
DA DB 'xsdfcvbn423ae1gf'
DATA ENDS
.......
后面的程序怎么编写呢?
可在MASM.EXE上运行的
这是老师布置的上机考试题目,对于我一个初学者,老师也够残忍的,俺想想了很久也没想出来,就来请教各位大哥大姐帮帮小弟,小弟会感激不尽的,这个星期三(12.21)作业就要交上出了.[em23]
回复列表 (共1个回复)
沙发
erping [专家分:3660] 发布于 2005-12-19 15:06: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
mov cx, 10
mov bp, sp
_@BinToDecString_1:
xor dx, dx
div cx ;除以 10
add dl, '0'
dec bp
mov byte ptr [bp], dl
test ax, ax
jnz _@BinToDecString_1
_@BinToDecString_2:
cmp bp, sp
je _@BinToDecString_3
mov al, byte ptr [bp]
mov byte ptr [si], al
inc bp
inc si
jmp _@BinToDecString_2
_@BinToDecString_3:
mov byte ptr [si], '$'
pop cx
pop dx
ret
BinToDecString endp
end _main
我来回复