;---------------------------------------------------
DATA SEGMENT
PARS DB 100 ;准备接收100个字符.
NNN DB ? ;用于存放实际输入的个数.
III DB 100 DUP(?) ;100字节的空间.
CHR DB 0
C_N DB 0
MES_I DB 13, 10, 'Input STR : $ ' ;用于提示.
MES_N DB 13, 10, 'Input CAHR : $ ' ;用于提示.
MES_O DB 13, 10, 'THE num IS : $ ' ;用于提示.
DATA ENDS
;---------------------------------------------------
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START:
MOV AX, DATA
MOV DS, AX
MOV DX, OFFSET MES_I
MOV AH, 9 ;9号功能调用,显示提示.
INT 21H
MOV DX, OFFSET PARS
MOV AH, 10 ;10号功能调用,接收键盘输入.
INT 21H
MOV DX, OFFSET MES_N
MOV AH, 9 ;9号功能调用,显示提示.
INT 21H
MOV AH, 1
INT 21H
MOV CHR, AL
;---------------------------------------------------
MOV CL, NNN ;收到字符的个数.
MOV CH, 0
CMP CX, 0
JNZ DO_IT
JMP EXIT
DO_IT:
LEA SI, III ;键入字符的起始地址.
;----------------------------下面开始循环统计.
AGAIN:
MOV AL, [SI] ;取来一个.
CMP AL, CHR
JNZ NEXT
INC C_N
NEXT:
INC SI
LOOP AGAIN
;----------------------------
MOV DX, OFFSET MES_O
MOV AH, 9 ;9号功能调用,显示提示.
INT 21H
MOV AL, C_N
MOV AH, 0
CALL PRINTAX
;----------------------------显示结束.
EXIT:
MOV AH, 4CH
INT 21H
;------------------------------
PRINTAX PROC ;输出AX中的无符号整数.
MOV BX, 10
OR AX, AX
JZ _0_
LOOP_P:
XOR DX, DX
DIV BX
MOV CX, AX
OR CX, DX
JZ _E_
PUSH DX
CALL LOOP_P
POP DX
ADD DL, '0' ;变成ASCII码.
JMP _1_
_0_: MOV DL, '0' ;是0则直接输出.
_1_: CALL PUTC
_E_: RET
PRINTAX ENDP
;------------------------------
PUTC PROC
MOV AH, 2
INT 21H
RET
PUTC ENDP
;------------------------------
CODE ENDS
END START
温馨提示:内容为网友见解,仅供参考