Как я могу напечатать результат HEX из DX: AX на экране? - PullRequest
0 голосов
/ 11 января 2019

Я работаю в эмуляторе 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 голосов
/ 11 января 2019

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

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


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

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

...