程序接收用户键入的一行字符(字符个数不超过80个,该字符串用回车符结束),按数字及其它字符分类计数,然后将结果存入以DIGIT和OTHER为名的存储单元中,并将数字(数码本身的数值)之和存入以SUM为名的存储单元中。
我的程序:
DATA SEGMENT
CRLF DB 13,10,'$'
STRPAR LABEL BYTE ;缓冲区标志
MAXLEN DB 80 ;缓冲区最大空间
strlen db ? ;实际输入个数
BUFFER DB 80 DUP(?) ;缓存输入的字符串
msg db 40 dup(?),13,10,'$' ;存字符串
LEN DB ? ;存字符串的长度
SUM DW ? ;存数字之和
DIGIT DB 0
OTHER DB 0
INMSG DB 'please input a string:',13,10,'$' ;提示输入的信息
DATA ENDS
CODE SEGMENT
assume ds:data,cs:code
start:
mov ax,data
mov ds,ax
mov es,ax
lea dx,inmsg
mov ah,09
int 21h
lea dx,strpar ;输入字符串到缓冲区
mov ah,0ah
int 21h
mov bl,strlen
MOV LEN,BL ;字符个数送len
LEA SI,BUFFER ;把输入的字符串送到msg
lea di,msg
cld
mov cx,40
REP MOVSB
;计算各数字之和
mov bx,0
lea si,msg
MOV CL,LEN
mov ch,0
LP:
mov al,[si]
cmp al,30h
jb TOLOOP
cmp al,39h
ja TOLOOP
sub al,30h
mov ah,0
add bx,ax
TOLOOP:
inc si
loop LP
MOV SUM,BX
MOV AH,09
INT 21H
;字符分类计数
S: MOV AL,[BX]
cmp al,'0' ;当扫描字符为数字时
JB OTHERS
cmp al,'9'
JA OTHERS
inc digit ;是数字时则数字计数器加1
jmp short next ;直接检查下一个字符
OTHERS: INC OTHER ;是其它字符时则将其它字符计数器加1
NEXT: INC BX
loop s
mov ah,09
int 21h
CODE ENDS
END START
(不好意思,写得有点乱)
已经生成了EXE文件,并且运行了
但是我怎么查看三个存储单元:digit,other,sum的值是多少?
[此贴子已经被作者于2006-8-22 20:49:23编辑过]