Вывод ответа на экран - Assembler
Формулировка задачи:
Как вывести число, которое хранится в регистре ax, на экран?
.MODEL SMALL .STACK 100h .DATA .CODE START: mov ax, 5 add ax, 3 mov bx, 4 sub bx, 1 mul bl mov bx, 2 mul bl mov cx, ax mov ax, 5 mov bx, 2 mul bl sub cx, ax mov ax, cx mov bx, 2 div bl ;Ответ хранится в регистре ax END START
Решение задачи: «Вывод ответа на экран»
textual
Листинг программы
; процедура выводит на экран АХ в HEX outHex: xchg dx,ax ; DX = AX mov cx,4 ; число цифр для вывода @@: shld ax,dx,4 ; получить в AL очередную цифру rol dx,4 ; удалить ее из DX and al,0Fh ; оставить в AL только эту цифру cmp al,0Ah ; три команды, переводящие sbb al,69h ; ..шестнадцатеричную цифру в AL das ; ..в соответствующий ASCII-код int 29h ; вывод на экран loop @b ; повторить для всех цифр ret
Объяснение кода листинга программы
В этом коде представлена процедура, которая выводит на экран значение регистра AX в шестнадцатеричной системе счисления. Давайте разберём этот код пошагово:
- Сначала происходит обмен между регистрами DX и AX, в результате чего в DX оказывается значение AX.
- Затем в регистре CX устанавливается значение 4, которое будет использоваться как счётчик цифр.
- Далее происходит цикл, который повторяется до тех пор, пока все цифры не будут выведены на экран. Внутри цикла происходит следующее: 3.1. Значение регистра AX сдвигается влево на 4 позиции, при этом самая старшая цифра, которая должна быть выведена на экран, оказывается в регистре AL. 3.2. Затем происходит сдвиг регистра DX на 4 позиции вправо, при этом из него удаляется только что выведенная на экран цифра. 3.3. И, наконец, происходит перевод полученного десятичного числа в шестнадцатеричное, с последующим переводом в ASCII-код. Для этого используются три команды: SBB AL, 69H, DAS. 3.4. Полученный ASCII-код выводится на экран с помощью команды INT 29H.
- После завершения цикла программа возвращает управление на уровень вызова, предшествующий её запуску.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д