Ввод байта в двоичной системе счисления - Assembler

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

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

Доброго времени суток, помогите пожалуйста решить следующую задачу в WinAsm для Dosbox Ввести строку символьных данных состоящую только из 0 и 1 .Взять буфер равный 8 байтам. Получить вместо этого символьного буфера один байт информации, формируя каждый бит 0 или 1 из введенного буфера начиная с конца.

Решение задачи: «Ввод байта в двоичной системе счисления»

textual
Листинг программы
.model small        
.286                
 
.data
txt db 8 dup(?)
msg db 'input string: $'
 
.stack              
db 255 dup(?)       
 
.code               
start:              
mov ax,@data        
mov ds,ax
mov es,ax
 
mov ah,09h
lea dx,msg
int 21h
 
cld
lea di,txt
mov cx,8
input:
mov ah,08h
int 21h
 
cmp al,'0'
je ok
 
cmp al,'1'
jne input
 
ok:
stosb
 
mov ah,02h
mov dl,al
int 21h
loop input
 
mov ah,02h
mov dl,0Ah
int 21h
 
mov ah,02h
mov dl,0Dh
int 21h
 
std
xor ah,ah
lea si,txt+7
mov cx,8
form:
lodsb
 
shr al,1
rcl ah,1
loop form
 
mov ah,4Ch          
mov al,00h          
int 21h
end start

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

  1. Установка начального значения регистрам AX, CS, DS, ES = @data
  2. Вывод сообщения с призывом к вводу текста
  3. Установка регистра BX в 09h (для ввода байта)
  4. Установка регистра DX в адрес строки msg (для вывода сообщения)
  5. Ввод байта с помощью функции 08h (ввода символа)
  6. Проверка введенного символа на равенство '0'
  7. Если символ '0', то выполнение перехода к метке ok
  8. Если символ не равен '0', то повторный вызов функции ввода байта
  9. Если символ равен '0', то выполнение цикла по символам строки txt с помощью цикла while и команды stosb (запись байта в строку)
  10. Вывод символа новой строки с помощью функции 02h и int 21h (0Dh = CR, 0Ah = LF)
  11. Повторный вывод символа новой строки (для надежности)
  12. Вывод сообщения об успешном вводе
  13. Установка регистра BX в 4Ch (для выхода из программы)
  14. Установка регистра AL в 00h (для выхода из программы с кодом 0)
  15. Вызов функции int 21h для выхода из программы

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


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

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

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