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