Введите 8 битов с клавиатуры. Выведите на экран введенное число в шестнадцатеричной системе. - Assembler

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

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

Введите 8 битов с клавиатуры - последовательность 0 и 1. Выведите на экран введенное число в шестнадцатеричной системе счисления. Программа должна быть в одном сегменте. Кода нет, так как я в ассемблере новичок, а задачу нужно сделать. Заранее спасибо!!!

Решение задачи: «Введите 8 битов с клавиатуры. Выведите на экран введенное число в шестнадцатеричной системе.»

textual
Листинг программы
  1. .model small
  2. .386
  3.  
  4. .stack 100h
  5.  
  6. .data
  7. var db 8 dup(?)
  8.  
  9. .code
  10. start:
  11. mov ax,@data
  12. mov ds,ax
  13. mov es,ax
  14.  
  15. lea di,var
  16. mov cx,8
  17. input:
  18. mov ah,01h
  19. int 21h
  20.  
  21. and al,0Fh
  22.  
  23. stosb
  24. loop input
  25.  
  26. mov ah,02h
  27. mov dl,0Ah
  28. int 21h
  29.  
  30. mov ah,02h
  31. mov dl,0Dh
  32. int 21h
  33.  
  34. lea si,var+3
  35. mov cx,4
  36. get1:
  37. mov ah,byte ptr [si]
  38.  
  39. shr ax,1
  40.  
  41. dec si
  42. loop get1
  43.  
  44. shr ax,4
  45.  
  46. add al,30h
  47.  
  48. cmp al,39h
  49. ja big1
  50.  
  51. jmp print1
  52.  
  53. big1:
  54. add al,07h
  55.  
  56. print1:
  57. mov ah,02h
  58. mov dl,al
  59. int 21h
  60.  
  61. lea si,var+7
  62. mov cx,4
  63. get2:
  64. mov ah,byte ptr [si]
  65.  
  66. shr ax,1
  67.  
  68. dec si
  69. loop get2
  70.  
  71. shr ax,4
  72.  
  73. add al,30h
  74.  
  75. cmp al,39h
  76. ja big2
  77.  
  78. jmp print2
  79.  
  80. big2:
  81. add al,07h
  82.  
  83. print2:
  84. mov ah,02h
  85. mov dl,al
  86. int 21h
  87.  
  88. mov ah,4Ch
  89. mov al,00h
  90. int 21h
  91. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы