我在模拟器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
答案 0 :(得分:0)
16是2的幂,因此每个十六进制(基数16)数字仅取决于您数字的4位,而不取决于所有更高的位。因此,您可以用十六进制打印DX,然后分别进行AX。
如果需要更多寄存器,请将AX保存在内存中。您可以使用两个不同的输入进行两次函数调用,以将十六进制数字存储到内存中。或在任意数量的字节上循环(从最高字节开始递减计数,因此您可以按打印顺序获得结果,最高有效位数在前)。
您可以在Google上搜索大量整数->十六进制的示例,例如这些与8086兼容的功能。
还有How to convert a number to hex?,它解释了这些方法起作用的基本原理,并显示了32位循环。