Введите 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

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

  1. Установка начального сегмента данных и кода в регистре AX при помощи @data.
  2. Переменная var DBF имеет 8 байтов, заполненных символами вопроса.
  3. Цикл input считывает по одному символу из ввода пользователя и записывает его в переменную var.
  4. Цикл get1 считывает первые 4 байта из переменной var и выполняет сдвиг и деление на 10 для получения десятичного числа.
  5. Цикл get2 считывает следующие 4 байта из переменной var и выполняет сдвиг и деление на 10 для получения десятичного числа.
  6. После выполнения обоих циклов, полученные два десятичных числа объединяются в одно 8-байтовое число.
  7. Если старшая четверка байтов больше 7, то добавляется 7 для приведения к шестнадцатеричному формату.
  8. При помощи int 21h выводится результат на экран.
  9. При помощи int 21h выводится символ новой строки.
  10. Завершение работы программы при помощи int 21h с аргументом 4Ch.

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

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