DISP_STR MACRO X ;宏定義.
MOV DX, OFFSET X
MOV AH, 9
INT 21H
ENDM
;----------------------
DATA SEGMENT ;數據段.
MSG1 DB 13, 10, 'Please Input : $'
MSG3 DB 13, 10, 'The HEX is : $'
x DW ? ;存放新輸入數據.
DATA ENDS
;----------------------
CODE SEGMENT ;代碼段.
ASSUME CS: CODE, DS: DATA
START:
MOV AX, DATA
MOV DS, AX
;--------------------------------
IN_LOOP:
DISP_STR MSG1 ;宏調用,提示 Please Input :
;--------------------------------
MOV x, 0 ;數據清零.
_INX:
MOV AH, 1 ;輸入字符.
INT 21H
;--------------------------------
CMP AL, 13 ;回車?
JE _IN_END ;是則結束輸入.
CMP AL, '0'
JB IN_LOOP ;小於'0',不是數字.
CMP AL, '9'
JA IN_LOOP ;大於'9',不是數字.
SUB AL, '0'
MOV CL, AL
MOV CH, 0
MOV AX, x
MOV BX, 10 ;老數據乘以10
MUL BX
ADD AX, CX ;加上新數據.
MOV x, AX ;保存.
CMP AX, 99
JA IN_LOOP
JMP _INX
;--------------------------------
_IN_END:
DISP_STR MSG3 ;宏調用,提示 The HEX is :
MOV AX, x
MOV BX, 16
MOV CX, 0
D_1:MOV DX, 0
DIV BX
ADD DL, '0'
CMP DL, 3AH
JB ZZZ
ADD DL, 7
ZZZ:
PUSH DX
INC CX
CMP AX, 0
JNE D_1
MOV AH, 2
D_2:POP DX
INT 21H
LOOP D_2
;--------------------------------
MOV AH, 4CH
INT 21H
;--------------------------------
CODE ENDS
END START
;=====================