public.asm
来自「fx.asm 反序输出 cpc.asm 人机对话 DECHEX.ASM 」· 汇编 代码 · 共 114 行
ASM
114 行
DATA SEGMENT
INDAT DB 50
DB 0
DB 50 DUP(0)
MSG1 DB 'Input A Number Not Large Then 255 : $'
MSG2 DB 'The DEC System of The Number is : $'
DATA ENDS
;------------------------------------
STACK SEGMENT PARA STACK 'STACK'
DB 100 DUP(?)
STACK ENDS
;------------------------------------
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
MAIN PROC FAR
START: PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA
MOV DS,AX
;----------------------------------------
CALL CRLF
MOV DX,OFFSET MSG1
MOV AH,09H
INT 21H
MOV DX,OFFSET INDAT
MOV AH,0AH
INT 21H
CALL CRLF
MOV DX,OFFSET MSG2
MOV AH,09H
INT 21H
MOV SI,OFFSET INDAT+1
MOV CX,[SI]
CONVR: PUSH CX
CALL HEXTOBIN
CALL BINTODEC
POP CX
LOOP CONVR
CALL CRLF
RET
MAIN ENDP
;---------------------------------------
HEXTOBIN PROC NEAR
MOV BX,0
MOV SI,OFFSET INDAT+1
LP: INC SI
MOV AL,[SI]
SUB AL,30H
JL EXIT
CMP AL,10
JL ADD_TO
SUB AL,27H
CMP AL,0AH
JL EXIT
CMP AL,10H
JGE EXIT
ADD_TO: MOV CL,4
SHL BX,CL
MOV AH,0
ADD BX,AX
JMP LP
EXIT: RET
HEXTOBIN ENDP
;---------------------------------------
BINTODEC PROC NEAR
MOV CX,10000
CALL DEC_DIV
MOV CX,1000
CALL DEC_DIV
MOV CX,100
CALL DEC_DIV
MOV CX,10
CALL DEC_DIV
MOV CX,1
CALL DEC_DIV
RET
BINTODEC ENDP
;--------------------------------------
DEC_DIV PROC NEAR
MOV AX,BX
MOV DX,0
DIV CX
MOV BX,DX
MOV DL,AL
ADD DL,30H
MOV AH,02H
INT 21H
RET
DEC_DIV ENDP
;--------------- -----------------------
CRLF PROC NEAR
MOV DL,0AH
MOV AH,02H
INT 21H
MOV DL,0DH
MOV AH,02H
INT 21H
RET
CRLF ENDP
;------------------------------------
CODE ENDS
END START
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?