主题:求助一道汇编程序题目![统计数字个数的]
123save
[专家分:0] 发布于 2005-12-14 23:49:00
连续输入一组字符,统计数字的个数
由于初学汇编,连个程序什么样,都理不清,谢谢!
回复列表 (共11个回复)
沙发
123save [专家分:0] 发布于 2005-12-15 09:46:00
那位朋友帮帮忙啊
板凳
renfenghua [专家分:30] 发布于 2005-12-15 11:52:00
还包括统计字母和其他字符的
data segment
letter db 0
digit db 0
other db 0
data ends
code segment
main proc far
assume cs:code ,ds:data
start:mov letter,0
mov digit,0
mov other,0
input:mov ah,01h
int 21h
cmp al,0dh
jz exit
cmp al,'A'
JB num
CMP AL,'Z'
ja word
inc letter
jmp input
num: cmp al,'0'
jb oth
cmp al,'9'
ja oth
inc digit
jmp input
word: cmp al,'a'
jb oth
cmp al,'z'
ja oth
inc letter
jmp input
oth:inc other
jmp input
exit: mov ah,4ch
int 21h
main endp
code ends
end start
3 楼
fycomputer [专家分:20] 发布于 2005-12-15 17:54:00
有些地方不太理想. 如果是一个多位数呢? 所以还应该有相关的switch .
4 楼
水中雨 [专家分:90] 发布于 2005-12-20 22:00:00
怎么输入呀???
5 楼
kaikaikai007 [专家分:650] 发布于 2005-12-21 09:39:00
自己编写!参考!
STACKSG SEGMENT STACK
DW 64 DUP(?)
STACKSG ENDS
DATA SEGMENT
BUF DB 60
DB ?
DB 60 DUP(?)
PRINT DB 'only word,number,null can be input:',0DH,0AH,'$'
PRINTK DB 'the null number is:',0DH,0AH,'$' ;空格的个数
PRINTS DB 'the sz number is:',0DH,0AH,'$' ;数字的个数
PRINTZ DB 'the zm number is: ',0DH,0AH,'$' ; 字母和符号的个数
K DB 0, 0DH,0AH,'$'
S DB 0, 0DH,0AH,'$'
Z DB 0, 0DH,0AH,'$'
COUNT DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV AH,09H ;显示提示信息
LEA DX,PRINT
INT 21H
MOV AH,0AH ;输入字符
LEA DX,BUF
INT 21H
MOV CL,BUF+1 ;把字符个数送给cl
XOR CH,CH
CLD
LEA SI,BUF+2
BEGIN: LODSB ;字符下移
CMP AL,20H
JNE SZ ;不等跳到数字
INC K ; 空格加一
L: LOOP BEGIN
JMP EXIT
SZ: CMP AL,30H ;数字部分
JB ERROR
CMP AL,39H
JA ZM ;大于跳到字母和符号
INC S ;数字加一
JMP L
ZM: CMP AL,41H ;字母部分
JB ERROR
CMP AL,5AH
JA ZM2
INC Z ;字母和符号加一
JMP L
ZM2: CMP AL,61H
JB ERROR
CMP AL,7AH
JA ERROR
INC Z
JMP L
ERROR: MOV AH,14 ;其他处理
MOV AL,7
MOV BH,0
INT 10H
JMP L
EXIT: ADD K,30H
ADD S,30H
ADD Z,30H
MOV AH,9
LEA DX,PRINTK
INT 21H
MOV AH,2
MOV DL,K
INT 21H
MOV AH,0EH
MOV AL,0DH
INT 10H
MOV AH,0EH
MOV AL,0AH
INT 10H
MOV AH,9
LEA DX,PRINTS
INT 21H
MOV AH,2
MOV DL,S
INT 21H
MOV AH,0EH
MOV AL,0DH
INT 10H
MOV AH,0EH
MOV AL,0AH
INT 10H
MOV AH,9
LEA DX,PRINTZ
INT 21H
MOV AH,2
MOV DL,Z
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
7 楼
水中雨 [专家分:90] 发布于 2005-12-22 12:46:00
可以不可以只写 统计数字的个数呢??
字符串不用从键盘输入的,直接存在数据段里,可以吗??
谢谢了!!!!!!!!
8 楼
mihailovich [专家分:20] 发布于 2006-03-03 21:04:00
This is very easy.
data segment
digit db 0
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
nInput:
mov ah,1
int 21h
cmp al,0dh
jz exit ; if you input enter then quit
cmp al,30h
jb next ; input < 0
cmp al,39h
ja next ; input > 9
inc digit ; digit++
next:
jmp nInput
exit: ; quit program if you input enter
mov ah,4ch
int 21h
code ends
end start
9 楼
senier [专家分:10] 发布于 2006-03-05 20:27:00
求助!JA 是什么条件转移啊,我这看的不太懂。
10 楼
kangaroos [专家分:0] 发布于 2006-10-30 10:36:00
求助:从键盘输入一系$结束符的字符串,然后对其中的非数字字符计数,并显示结果.
我来回复