汇编语言程序设计!急求
发布网友
发布时间:2022-04-30 15:23
我来回答
共3个回答
热心网友
时间:2022-06-26 06:10
;从键盘输入一行字符,统计字母、空格、数字、其他字符的个数,并显示。
;要求:提示输入一行字符串;
; 键盘输入字符串,Enter键结束输入,并换行显示结果。
;
;用MASM5.0编译
;以下是运行结果
;Please enter a string: 123 abEEE\=---=
;Result is:
;LETTER: 005
;SPACE : 004
;DIGITAL: 003
;OTHER: 006
;Please enter a string:
data segment
S1 DB 0dh,0ah,'Please enter a string: $'
N1 DB 250,0,250 DUP(?)
ZM DB 0
KG DB 0
SZ DB 0
QT DB 0
S2 DB 0DH,0AH,'Result is: '
ZM1 DB 0DH,0AH,'LETTER: $'
KG1DB 0DH,0AH,'SPACE : $'
SZ1DB 0DH,0AH,'DIGITAL: $'
QT1DB 0DH,0AH,'OTHER: $'
data ends
code segment
main proc far
assume cs:code,ds:data
start:
PUSH DS
XOR AX,AX
PUSH AX
MOV AX,DATA
MOV DS,AX
AGAIN:
mov al,0
mov ZM,al
mov kg,al
mov sz,al
mov qt,al
MOV AH,09
MOV DX,OFFSET S1
INT 21H
MOV AH,0AH
MOV DX,OFFSET N1
INT 21H
MOV BX,OFFSET N1
MOV CL,[BX+1]
cmp cl,0
jnz L0
RET
L0:
MOV CH,0
MOV BX,OFFSET N1
ADD BX,2
NEXT:
MOV AL,[BX]
CMP AL, ' '
JNE L1
INC KG
JMP E1
L1:
CMP AL,'0'
JB OTHER
CMP AL,'9'
JA L2
INC SZ
JMP E1
L2:
CMP AL,'A'
JB OTHER
CMP AL,'Z'
JA L3
INC ZM
JMP E1
L3:
CMP AL,'a'
JB OTHER
CMP AL,'z'
JA OTHER
INC ZM
jmp e1
OTHER:
INC QT
E1:
INC BX
LOOP NEXT
;
MOV AH,09
MOV DX,OFFSET S2
INT 21H
MOV AL,ZM
CALL TO10
MOV AH,09
MOV DX,OFFSET KG1
INT 21H
MOV AL,KG
CALL TO10
MOV AH,09
MOV DX,OFFSET SZ1
INT 21H
MOV AL,SZ
CALL TO10
MOV AH,09
MOV DX,OFFSET QT1
INT 21H
MOV AL,QT
CALL TO10
JMP AGAIN
MAIN ENDP
;==============
TO10 PROC NEAR
MOV AH,0
MOV BL,100
DIV BL
PUSH AX
MOV DL,AL
ADD DL,30H
MOV AH,2
INT 21H
POP AX
MOV AL,AH
XOR AH,AH
MOV BL,10
DIV BL
ADD AX,3030H
PUSH AX
MOV DL,AL
MOV AH,2
INT 21H
POP AX
MOV DL,AH
MOV AH,2
INT 21H
RET
TO10 ENDP
;===============
code ends
end start
热心网友
时间:2022-06-26 06:11
C语言的?
热心网友
时间:2022-06-26 06:11
程序代码如下:
DATASEGMENT
MAXLEN DB 100
ACTLEN DB ?
DB 100 DUP(?)
SPACEDB 0AH,0DH,'SPACE:'
N1 DB 0,'$' ;保存空格数
NUMDB 0AH,0DH,'NUMBER:'
N2 DB 0,'$' ;保存数字数
CHARDB 0AH,0DH,'CHARACTER:'
N3 DB 0,'$' ;保存字母数
OTHERDB 0AH,0DH,'OTHER:'
N4 DB 0,'$' ;保存其他符号数
DATAENDS
STACKSEGMENT STACK
DB 200 DUP(0)
STACKENDS
CODESEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
START:MOV AX,DATA
MOV DS,AX
LEA DX,MAXLEN
MOV AH,0AH;输入字符
INT 21H
;*************
MOV CH,0
MOV CL,ACTLEN
MOV SI,OFFSET ACTLEN
INC SI
NEXT:MOV AL,[SI]
CMP AL,' ';判断是否为空格
JNE CONT1
INC N1
JMP LOP
CONT1: CMP AL,'0';判断是否为数字
JB CONT2
CMP AL,'9'
JA CONT2
INC N2
JMP LOP
CONT2: CMP AL,'A';判断是否为大写字母
JB CONT3
CMP AL,'Z'
JA CONT3
INC N3
JMP LOP
CONT3: CMP AL,'a';判断是否为小写字母
JB CONT4
CMP AL,'z'
JA CONT4
INC N3
JMP LOP
CONT4: INC N4;其它符号
LOP:INC SI
LOOP NEXT
;*************
MOV AL,30H;将数值转化为字符
ADD N1,AL
ADD N2,AL
ADD N3,AL
ADD N4,AL
;*************
LEA DX,CHAR
MOV AH,9;输出字母数
INT 21H
LEA DX,NUM
MOV AH,9;输出数字数
INT 21H
LEA DX,SPACE
MOV AH,9;输出空格数
INT 21H
LEA DX,OTHER
MOV AH,9;输出其它符号数
INT 21H
MOV AH,4CH;程序结束
INT 21H
CODEENDS
END START