我希望能够将十六进制数字打印为分数 . 让我们说.D
;This macro registers AH,AL
READ MACRO
MOV AH,8
INT 21H
ENDM
;This macro registers AH,DL
PRINT MACRO CHAR
PUSH AX
PUSH DX
MOV DL,CHAR
MOV AH,2
INT 21H
POP DX
POP AX
ENDM
.main:
READ ;This is Actually .D
xor ah,ah ; clear it
; some code to translate ascii to hex
; Needed code goes here
你可以看到我读了十六进制字符,我想把它作为一个分数打印出来 . 例如.D打印为.8125
我不明白如何转换它并打印它 . 我只使用intel 8086程序集 . 我知道这实际上是浮点数在c中所做的,但我不知道如何实现它 .
1 回答
当我理解定点到字符串转换时,答案非常简单 . 基本上你已经将零以下的每一位都转化为它们的值 . 由于我只有4位,算法很简单:
现在al寄存器有结果 . 如果我们有更多的位低于零,那么我们将继续该过程 . 这个想法是每一点都值得前一个的一半 . 这段代码并不是最优的,但它确实可以解决这个问题 .