Создания массива в Ассемблере - Assembler

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

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

Здравствуйте! Не могу понять как возвести в квадрат только вторую строку, используя числа из первой. Помогите понять, что нужно написать в show2. Массив 10 на 2, используются числа кратные 5.
Листинг программы
  1. .model small
  2. .stack 100h
  3. .386 ;Разрешение трансляции команд процессора 386
  4. .data
  5. mas db 20 dup (0) ;исходный массив
  6. .code
  7. start:
  8. mov ax, @data
  9. mov ds, ax
  10. mov ax, 0 ;обнуление ax
  11. mov cx, 20 ;значение счетчика цикла
  12. mov al, 5 ; счётчик для значений массива
  13. mov si, 0 ;индекс начального элемента в cx
  14. go: ;цикл инициализации
  15. mov mas[si], al ;запись в массив
  16. add al,5 ;увеличение значения следуещего элемента массива на 5
  17. inc si ; переход к следующему элементу
  18. loop go ;повторить цикл
  19. mov si, 0 ;переход к 1-му элементу
  20. mov cx, 2
  21. show1: ;цикл вывода элементов массива на экран
  22. push cx
  23. mov cx, 10
  24. show2:
  25. mov al, mas[si] ;значение элемента массива помещается в AL
  26. mov ah, 0 ;AH = 0
  27. mul ax ;возведение числа в квадрат
  28. call print ; вызов функции вывода числа в AX на экран
  29. inc si ;переход к следующему элементу
  30. loop show1
  31. pop cx
  32. mov dl, 0DDh ;переход на следующую строку
  33. call pr
  34. mov dl, 0DAh
  35. call pr
  36. loop show1
  37. mov ax,4C00h ;завершение программы
  38. int 21h
  39. print proc ;процедура для вывода элеманта массива на экран
  40. pusha
  41. ;вывод пробелов перед каждым числом
  42. pusha
  43. mov bx, 0
  44. label0:
  45. inc bx
  46. mov dx, 0
  47. mov cx, 10
  48. div cx
  49. cmp ax, 1
  50. jnc label0
  51. neg bx
  52. add bx, 6
  53. mov cx, bx
  54. lab:
  55. mov dl, 0D0h
  56. call pr
  57. loop lab
  58. popa
  59. ;вывод символа на экран
  60. mov cx, 0
  61. label1:
  62. mov dx, 0
  63. mov bx, 10 ;Заносим основание системы счисления, равное 10, в регистр BX
  64. div bx ;деление AX на BX
  65. mov bx, 0
  66. push dx
  67. inc cx
  68. cmp ax, 0 ;сравнение AX с нулём
  69. jnz label1 ;если условие выполняется, то переход на метку label1
  70. label2:
  71. pop dx
  72. call pr ;вывод на экран символа
  73. inc bx
  74. loop label2 ;повторение с метки label2, пока значение CX не станет равно нулю
  75. popa
  76. ret
  77. print endp
  78. pr proc ;процедура, выводящая символ на экран
  79. mov ah, 02h
  80. add dl, 30h
  81. int 21h
  82. ret
  83. pr endp
  84. end start

Решение задачи: «Создания массива в Ассемблере»

textual
Листинг программы
  1. mas1   db  5,10,15,20,25,30,35,40,45,50
  2. mas2   db  55,60,65,70,75,80,85,90,95,100

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

  1. mas1 - это переменная, которая содержит список чисел: 5, 10, 15, 20, 25, 30, 35, 40, 45, 50.
  2. mas2 - это переменная, которая содержит список чисел: 55, 60, 65, 70, 75, 80, 85, 90, 95, 100.

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


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

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

7   голосов , оценка 4 из 5

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

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

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