📄 count4.asm
字号:
DATA SEGMENT
DATA1 DB 50 DUP(' ')
COUNTV DW 0
COUNTS DW 0
MESSAGE1 DB 'COUNTV=','$'
MESSAGE2 DB 'COUNTS=','$'
DATA2 DW 10
DATA ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE
STRDSP MACRO STRING
MOV AH,09H
MOV DX,OFFSET STRING
INT 21H
ENDM
CURSOR MACRO ROW,COLUMN
MOV AH,02H
MOV BH,00
MOV DH,ROW
MOV DL,COLUMN
INT 10H
ENDM
START: MOV AX,DATA
MOV DS,AX
LEA BX,DATA1
INPUT: MOV AH,01H ;输入一个字符
INT 21H
MOV [BX],AL
INC BX
CMP AL,0DH
JNZ INPUT ;循环直至回车
MOV COUNTV,0 ;计数器初始化
MOV COUNTS,0
LEA BX,DATA1
NEXT: MOV CL,[BX]
INC BX
CMP CL,0DH
JZ DONE
CMP CL,30H
JB NEXT
CMP CL,3AH
JB CONTS
CMP CL,41H
JB NEXT
CMP CL,5BH
JB CONTV
CMP CL,61H
JB NEXT
CMP CL,7AH
JB CONTV
CONTV: INC COUNTV
JMP NEXT
CONTS: INC COUNTS
JMP NEXT
DONE: CURSOR 1,0
STRDSP MESSAGE1
MOV AX,COUNTV
CMP AX,10 ; 判断是否大于10
JB OUTPUTV1
XOR AX,AX
XOR DX,DX
MOV AX,COUNTV ; 求余
DIV DATA2
MOV CX,DX
ADD AX,30H ; 10进制转ASC码
ADD CX,30H
MOV DX,OFFSET AX
MOV AH,02H
INT 21H
MOV DX,OFFSET CX
MOV AH,02H
INT 21H
JMP OUTPUTS1
OUTPUTV1: ADD AX,30H
MOV DX,OFFSET AX
MOV AH,02H
INT 21H
OUTPUTS1: CURSOR 2,0
STRDSP MESSAGE2
MOV BX,COUNTS
CMP BX,10
JB OUTPUTS2
XOR AX,AX
XOR DX,DX
MOV AX,COUNTS
DIV DATA2
MOV CX,DX
ADD AX,30H
ADD CX,30H
MOV DX,OFFSET AX
MOV AH,02H
INT 21H
MOV DX,OFFSET CX
MOV AH,02H
INT 21H
JMP DISP
OUTPUTS2: ADD BX,30H
MOV DX,OFFSET BX
MOV AH,02H
INT 21H
DISP: MOV AH,4CH
INT 21H
CODE ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -