Как вводится двоичное число в консоль в TASM Ассемблер? - Assembler

Узнай цену своей работы

Формулировка задачи:

Мне нужно ввести двухбайтный код в двоичном в виде в консоль, не нашел примеров ввода. А затем вывести в шестнадцатеричном . И вопрос еще такой, получается если я введу 00001010 он его воспримет как строчку?

Решение задачи: «Как вводится двоичное число в консоль в TASM Ассемблер?»

textual
Листинг программы
  1. org 100h
  2. jmp  start
  3.  
  4. mes0   db  13,10,'Type BIN: $'
  5. mes1   db  13,10,'Result..: $'
  6.  
  7. start:
  8.      mov   ah,9              ;
  9.      mov   dx,mes0           ;
  10.      int   21h               ;
  11. ;----------------- Бинарный ввод ------------------------
  12.      mov   cx,16             ; макс.длина ввода (2 байта)
  13.      xor   bx,bx             ; место под результат
  14. @in: mov   ah,8              ; ввод без эхо
  15.      int   21h               ;
  16.      cmp   al,13             ; можно меньше 2 байт
  17.      je    stop              ;
  18.      cmp   al,'0'            ; отсеиваем всё, ----->----+
  19.      jb    @in               ;       ..кроме 0 и 1      |
  20.      cmp   al,'1'            ;                          |
  21.      ja    @in               ; ---<--------------<------+
  22.      int   29h               ; выводим символ на экран
  23.      ror   ax,1              ; ставим его старшим битом
  24.      shld  bx,ax,1           ; и отправляем в BX
  25.      loop  @in               ; мотаем СХ-раз..
  26.  
  27. stop:                        ; выводим значение на экран
  28.      mov   ah,9              ;
  29.      mov   dx,mes1           ;
  30.      int   21h               ;
  31. ;----------------- Бинарный вывод ------------------------
  32.      mov   cx,16             ; символов для вывода
  33. bin: xor   ax,ax             ;
  34.      shld  ax,bx,1           ; мл.бит АХ = ст.бит BX результата
  35.      add   al,30h            ; переводим число в символ
  36.      int   29h               ; выводим на экран
  37.      rol   bx,1              ; сдвигаем ВХ на 1 бит влево
  38.      loop  bin               ; мотаем СХ-раз..
  39. ;---------------------------------------------------------
  40. exit:                        ;
  41.     xor   ax,ax              ;
  42.     int   16h                ;
  43.     int   20h                ;

Объяснение кода листинга программы

  1. Организация ввода-вывода:
    • Задачу ввода двоичного числа в консоль можно решить двумя способами:
    • Использовать бинарный ввод с помощью функции inp или int 21h, но это усложнит код, так как потребуется обработка ошибок.
    • Использовать десятичный ввод с помощью функции inp или int 21h, а затем преобразовать полученное число в двоичное.
    • Для вывода двоичного числа на консоль можно использовать функцию outp или int 21h, но это потребует больше времени и усложнит код.
    • В данном коде выбран второй вариант - десятичный ввод и последующее преобразование числа в двоичное.
    • Для удобства работы с двоичными числами в коде используются переменные al и bl, которые содержат младший и старший биты двоичного числа соответственно.
  2. Вывод двоичного числа на экран:
    • Для вывода двоичного числа на экран используется функция int 29h, которая выводит символ на экран.
    • Перед выводом числа на экран, его необходимо преобразовать в строку символов.
    • Для этого используется функция int 29h, которая преобразует двоичное число в его символ.
    • Затем этот символ добавляется к строке, содержащей остальные символы числа.
    • После вывода всех символов числа, функция int 29h снова преобразует двоичное число в его символ и добавляет его к строке.
    • Этот процесс повторяется до тех пор, пока все символы числа не будут выведены на экран.
  3. Преобразование двоичного числа в его символ:
    • Для преобразования двоичного числа в его символ используется функция int 29h, которая преобразует двоичное число в его символ.
    • Перед вызовом функции int 29h двоичное число приводится к его младшему биту с помощью операции ror ax,1.
    • Затем младший бит двоичного числа сдвигается на 1 бит влево с помощью операции rol bx,1.
    • Этот процесс повторяется до тех пор, пока все биты двоичного числа не будут использованы для формирования символа.
  4. Организация цикла:
    • Для выполнения повторяющихся операций в коде используются циклы.
    • В данном коде используется цикл loop, который выполняется до тех пор, пока не будет выполнено условие выхода из цикла.
    • Условие выхода из цикла задается с помощью оператора je, который проверяет, что младший байт двоичного числа равен 13.
    • Если условие выхода из цикла выполняется, то происходит переход на метку stop, где выводится значение двоичного числа на экран.
    • Если условие выхода из цикла не выполняется, то происходит переход на метку bin, где начинается процесс вывода двоичного числа на экран.

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


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

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

14   голосов , оценка 4.571 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы