📄 16-to -8.asm
字号:
;三位十六进制数转化为八进制数
DATA SEGMENT
HEX DB 4,0,4 DUP(0H)
DECIMAL DB 5 DUP(0H)
STRING DB 'PLEASE ENTER SAN WEI HEX NUMBER:','$'
STRING1 DB 0AH,0DH,'THE OCT NUMBER IS:','$'
STRING2 DB 0AH,0DH,'THE NUMBER YOU ENTER IS INCORROCT!!!!',0AH,0DH,'PLEASE ENTER CORRECT NUMBER:','$'
DATA ENDS
STACK1 SEGMENT PARA STACK
DW 20H DUP(0)
STACK1 ENDS
COSEG SEGMENT
ASSUME CS:COSEG,DS:DATA,SS:STACK1
START: MOV AX,DATA
MOV DS,AX
XOR AX,AX
XOR BX,BX
XOR CX,CX
XOR DX,DX
MOV DX,OFFSET STRING
MOV AH,09H
INT 21H
LOP: MOV DX,SEG HEX
MOV DS,DX
MOV DX,OFFSET HEX
MOV AH,0AH
INT 21H
MOV BL,HEX+3
CALL HEX1
JC LOP
AND BL,0FH
MOV AL,10H
MUL BL
MOV BL,HEX+4
CALL HEX1
JC LOP
AND BL,0FH
ADD AL,BL
XOR AH,AH
MOV CX,AX
MOV AX,100H
MOV BL,HEX+2
CALL HEX1
JC LOP
XOR BH,BH
AND BL,0FH
MUL BX
ADD AX,CX
MOV BX,8
MOV SI,3
MOV CX,4
LOP2: MOV DX,0
DIV BX
MOV DECIMAL[SI],DL
DEC SI
LOOP LOP2
MOV CX,4
MOV SI,0
LOP1: ADD DECIMAL[SI],30H
INC SI
LOOP LOP1
MOV DECIMAL[4],'$'
MOV DX,OFFSET STRING1
MOV AH,09H
INT 21H
MOV DX,OFFSET DECIMAL
MOV AH,09H
INT 21H
MOV AH,4CH
INT 21H
HEX1 PROC
CMP BL,'0'
JB ERROR
CMP BL,'9'
JBE OUT2
CMP BL,'G'
JNC SMALL
CMP BL,'A'
JB ERROR
JMP OUT1
SMALL: CMP BL,'a'
JB ERROR
CMP BL,'f'
JA ERROR
OUT1: SUB BL,7
OUT2: CLC
RET
ERROR: STC
MOV DX,OFFSET STRING2
MOV AH,09H
INT 21H
RET
HEX1 ENDP
COSEG ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -