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

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

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

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

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

textual
Листинг программы
org 100h
jmp  start
 
mes0   db  13,10,'Type BIN: $'
mes1   db  13,10,'Result..: $'
 
start:
     mov   ah,9              ;
     mov   dx,mes0           ;
     int   21h               ;
;----------------- Бинарный ввод ------------------------
     mov   cx,16             ; макс.длина ввода (2 байта)
     xor   bx,bx             ; место под результат
@in: mov   ah,8              ; ввод без эхо
     int   21h               ;
     cmp   al,13             ; можно меньше 2-х байт
     je    stop              ;
     cmp   al,'0'            ; отсеиваем всё, ----->----+
     jb    @in               ;       ..кроме 0 и 1      |
     cmp   al,'1'            ;                          |
     ja    @in               ; ---<--------------<------+
     int   29h               ; выводим символ на экран
     ror   ax,1              ; ставим его старшим битом
     shld  bx,ax,1           ; и отправляем в BX
     loop  @in               ; мотаем СХ-раз..
 
stop:                        ; выводим значение на экран
     mov   ah,9              ;
     mov   dx,mes1           ;
     int   21h               ;
;----------------- Бинарный вывод ------------------------
     mov   cx,16             ; символов для вывода
bin: xor   ax,ax             ;
     shld  ax,bx,1           ; мл.бит АХ = ст.бит BX результата
     add   al,30h            ; переводим число в символ
     int   29h               ; выводим на экран
     rol   bx,1              ; сдвигаем ВХ на 1 бит влево
     loop  bin               ; мотаем СХ-раз..
;---------------------------------------------------------
exit:                        ;
    xor   ax,ax              ;
    int   16h                ;
    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
Похожие ответы