Как вводится двоичное число в консоль в 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
, где начинается процесс вывода двоичного числа на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д