【问题标题】:How can I print HEX result from DX:AX on screen?如何在屏幕上打印 DX:AX 的十六进制结果?
【发布时间】:2019-01-11 08:22:45
【问题描述】:

我在模拟器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

【问题讨论】:

    标签: assembly emu8086


    【解决方案1】:

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

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


    有很多整数->十六进制的例子,你可以用谷歌搜索,例如这些 8086 兼容的功能。

    还有How to convert a number to hex?,它详细解释了这些方法为何起作用的基础知识,并显示了一个 32 位循环。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-31
      • 1970-01-01
      相关资源
      最近更新 更多