📄 123-3.asm
字号:
DSMG SEGMENT
DIGIT DB 0
LETTER DB 0
OTHER DB 0
SUM DB 0
TAB DB '0123456789ABCDEF'
CLOSE DB 'H',13,10,'$'
MES1 DB 'OTHER:','$'
MES2 DB 'DIGIT:','$'
MES3 DB 'LETTER:','$'
MES4 DB 'SUM:','$'
MES5 DB 'Input :','$'
CRLF DB 13,10,'$'
DSMG ENDS
CSMG SEGMENT
MAIN PROC FAR
ASSUME CS:CSMG,DS:DSMG
START: PUSH DS
SUB AX,AX
PUSH AX
MOV AX,DSMG
MOV DS,AX
LEA DX,MES5
MOV AH,9
INT 21H
READ: MOV CL,80
CMP SUM,CL
JNC EXIT
MOV AH,01H
INT 21H
CMP AL,0DH
JZ EXIT
CMP AL,30H
JC OTHERCO
CMP AL,39H
JBE DIGITCO
CMP AL,41H
JC OTHERCO
CMP AL,5AH
JBE LETTERCO
CMP AL,61H
JC OTHERCO
CMP AL,7AH
JBE LETTERCO
OTHERCO: ADD OTHER,1
ADD SUM,1
JMP READ
LETTERCO:ADD LETTER,1
ADD SUM,1
JMP READ
DIGITCO: ADD DIGIT,1
ADD SUM,1
JMP READ
EXIT: LEA DX,CRLF
MOV AH,09H
INT 21H
MOV CH,SUM
LEA DX,MES4
CALL MATH
MOV CH,OTHER
LEA DX,MES1
CALL MATH
MOV CH,DIGIT
LEA DX,MES2
CALL MATH
LEA DX,MES3
MOV CH,LETTER
CALL MATH
RET
MAIN ENDP
MATH PROC NEAR ;二进制转十六进制子程序
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV AH,09H
INT 21H
MOV BL,CH
MOV CL,4
ROL BL,CL
AND BL,0FH
MOV BH,00H
MOV AH,02H
MOV DL,TAB[BX]
INT 21H
MOV BL,CH
AND BL,0FH
MOV BH,00H
MOV DL,TAB[BX]
MOV AH,02H
INT 21H
MOV AH,09H
LEA DX,CLOSE
INT 21H
POP DX
POP CX
POP BX
POP AX
RET
MATH ENDP
CSMG ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -