如何在屏幕上从DX:AX打印十六进制结果?

时间:2019-01-11 08:22:46

标签: assembly emu8086

我在模拟器emu8086中工作。执行mul命令后,将结果保存在dx:ax寄存器中。如何显示结果?

我使用了一个数组,但是我不喜欢这种输出格式。

mov ax, 13
mul x2
mov cx, ax  ; 13x^2
mov ax, 26
mul x       ; 26x
sub cx, ax  ; 13x^2 - 26x
mov ax, 123 ; 123
add ax, cx  ; 13x^2 - 26x + 123
mul ax      ; (13x^2 - 26x + 123)^2
mov otvet[2], ax
mov otvet[0], dx

1 个答案:

答案 0 :(得分:0)

16是2的幂,因此每个十六进制(基数16)数字仅取决于您数字的4位,而不取决于所有更高的位。因此,您可以用十六进制打印DX,然后分别进行AX。

如果需要更多寄存器,请将AX保存在内存中。您可以使用两个不同的输入进行两次函数调用,以将十六进制数字存储到内存中。或在任意数量的字节上循环(从最高字节开始递减计数,因此您可以按打印顺序获得结果,最高有效位数在前)。


您可以在Google上搜索大量整数->十六进制的示例,例如这些与8086兼容的功能。

还有How to convert a number to hex?,它解释了这些方法起作用的基本原理,并显示了32位循环。