Введите 8 битов с клавиатуры. Выведите на экран введенное число в шестнадцатеричной системе. - Assembler
Формулировка задачи:
Введите 8 битов с клавиатуры - последовательность 0 и 1. Выведите на экран введенное число в шестнадцатеричной системе счисления. Программа должна быть в одном сегменте. Кода нет, так как я в ассемблере новичок, а задачу нужно сделать. Заранее спасибо!!!
Решение задачи: «Введите 8 битов с клавиатуры. Выведите на экран введенное число в шестнадцатеричной системе.»
textual
Листинг программы
- .model small
- .386
- .stack 100h
- .data
- var db 8 dup(?)
- .code
- start:
- mov ax,@data
- mov ds,ax
- mov es,ax
- lea di,var
- mov cx,8
- input:
- mov ah,01h
- int 21h
- and al,0Fh
- stosb
- loop input
- mov ah,02h
- mov dl,0Ah
- int 21h
- mov ah,02h
- mov dl,0Dh
- int 21h
- lea si,var+3
- mov cx,4
- get1:
- mov ah,byte ptr [si]
- shr ax,1
- dec si
- loop get1
- shr ax,4
- add al,30h
- cmp al,39h
- ja big1
- jmp print1
- big1:
- add al,07h
- print1:
- mov ah,02h
- mov dl,al
- int 21h
- lea si,var+7
- mov cx,4
- get2:
- mov ah,byte ptr [si]
- shr ax,1
- dec si
- loop get2
- shr ax,4
- add al,30h
- cmp al,39h
- ja big2
- jmp print2
- big2:
- add al,07h
- print2:
- mov ah,02h
- mov dl,al
- int 21h
- mov ah,4Ch
- mov al,00h
- int 21h
- end start
Объяснение кода листинга программы
- Установка начального сегмента данных и кода в регистре AX при помощи @data.
- Переменная var DBF имеет 8 байтов, заполненных символами вопроса.
- Цикл input считывает по одному символу из ввода пользователя и записывает его в переменную var.
- Цикл get1 считывает первые 4 байта из переменной var и выполняет сдвиг и деление на 10 для получения десятичного числа.
- Цикл get2 считывает следующие 4 байта из переменной var и выполняет сдвиг и деление на 10 для получения десятичного числа.
- После выполнения обоих циклов, полученные два десятичных числа объединяются в одно 8-байтовое число.
- Если старшая четверка байтов больше 7, то добавляется 7 для приведения к шестнадцатеричному формату.
- При помощи int 21h выводится результат на экран.
- При помощи int 21h выводится символ новой строки.
- Завершение работы программы при помощи int 21h с аргументом 4Ch.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д