Как я могу распечатать результат HEX из DX: AX на экране?

Работаю в эмуляторе 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

person Andrey Kondratovich    schedule 11.01.2019    source источник


Ответы (1)


16 - это степень двойки, поэтому каждая шестнадцатеричная (основание 16) цифра зависит только от 4 бит вашего числа, а не от всех старших битов. Таким образом, вы можете распечатать DX в шестнадцатеричном формате, а затем отдельно выполнить AX.

Сохраните AX в памяти, если вам нужно больше регистров. Вы можете дважды вызвать функцию с двумя разными входами для сохранения шестнадцатеричных цифр в памяти. Или цикл по произвольному количеству байтов (отсчет от самого старшего байта, поэтому вы получаете результат в порядке печати, сначала старшая цифра).


Есть масса примеров целочисленного-> шестнадцатеричного числа, которые вы можете использовать в Google, например. эти 8086-совместимые функции.

И есть Как преобразовать число в шестнадцатеричное?, в котором подробно рассказывается о основы того, почему эти методы работают, и показан 32-битный цикл.

person Peter Cordes    schedule 11.01.2019