如何在屏幕上打印DX:AX的HEX结果



我在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

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

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


有很多integer->hex的例子可以在谷歌上搜索,例如这些8086兼容的函数。

  • 在x86程序集中打印十六进制值
  • 用汇编语言(NASM)将十六进制数转换为十六进制字符串(调试)
  • 用汇编语言打印数字?(16位代码,但使用32位寄存器。您可以将其更改为16位寄存器,并用两个输入调用两次。它还显示直接复制到视频RAM,以及使用DOS调用

还有如何将数字转换为十六进制?它详细解释了这些方法工作的基本原理,并显示了一个32位循环。

最新更新