Вывод ответа на экран - 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 в шестнадцатеричной системе счисления. Давайте разберём этот код пошагово:

  1. Сначала происходит обмен между регистрами DX и AX, в результате чего в DX оказывается значение AX.
  2. Затем в регистре CX устанавливается значение 4, которое будет использоваться как счётчик цифр.
  3. Далее происходит цикл, который повторяется до тех пор, пока все цифры не будут выведены на экран. Внутри цикла происходит следующее: 3.1. Значение регистра AX сдвигается влево на 4 позиции, при этом самая старшая цифра, которая должна быть выведена на экран, оказывается в регистре AL. 3.2. Затем происходит сдвиг регистра DX на 4 позиции вправо, при этом из него удаляется только что выведенная на экран цифра. 3.3. И, наконец, происходит перевод полученного десятичного числа в шестнадцатеричное, с последующим переводом в ASCII-код. Для этого используются три команды: SBB AL, 69H, DAS. 3.4. Полученный ASCII-код выводится на экран с помощью команды INT 29H.
  4. После завершения цикла программа возвращает управление на уровень вызова, предшествующий её запуску.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.214 из 5
Похожие ответы