Программа для увеличения на 5 каждого нечётного элемента массива из 15 чисел - Assembler

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

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

Всем доброго времени суток! Возникла задача написать программу для увеличения каждого нечётного элемента массива из 15 чисел на 5. P.S.: Вывести массив 1-ой строкой, 2-ой строкой все нечетные числа массива, а 3-ей строкой весь измененный массив (ко всем нечетным +5). Заранее благодарен всем отзывчивым людям!

Решение задачи: «Программа для увеличения на 5 каждого нечётного элемента массива из 15 чисел»

textual
Листинг программы
  1. .stack 256
  2. .data
  3.     array   dw 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
  4.     Space   db ' ', ' ', '$'
  5.     CrLf    db 0dh, 0ah, '$'
  6. .code
  7. main:
  8.     mov ax, @data
  9.     mov ds, ax
  10.  
  11. ;***************************
  12.     lea si, array
  13.     mov cx, 15
  14.  
  15. @@ShowAll:
  16.     mov ax, [si]
  17.     call    Show_ax
  18.     add si, 2
  19.     loop    @@ShowAll
  20.     lea dx, CrLf   
  21.     mov ah, 9
  22.     int 21h
  23.  
  24. ;***************************
  25.     lea si, array
  26.     mov cx, 15
  27.  
  28. @@ShowOdd:
  29.     mov ax, [si]
  30.     test    ax, 1
  31.     jz  @@NextOdd
  32.     call    Show_ax
  33.     lea dx, Space
  34.     mov ah, 9
  35.     int 21h
  36. @@NextOdd:
  37.     add si, 2
  38.     loop    @@ShowOdd
  39.     lea dx, CrLf
  40.     mov ah, 9
  41.     int 21h

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

  1. .stack 256 - устанавливает стек размером 256 байт
  2. .data - указывает, что следующий код будет работать с данными
  3. array dw 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 - создаёт массив из 15 чисел, начиная с 1 и заканчивая 15
  4. Space db ' ', ' ', '$' - создаёт строку из трёх пробелов и символа доллара
  5. CrLf db 0dh, 0ah, '$' - создаёт строку из двух символов перевода строки и символа доллара
  6. .code - указывает, что следующий код будет исполняться
  7. main: - является точкой входа в программу
  8. mov ax, @data - переносит значение регистра ds в ax
  9. lea si, array - переносит адрес массива в si
  10. mov cx, 15 - устанавливает счётчик циклов на 15
  11. @@ShowAll: - метка цикла
  12. mov ax, [si] - переносит значение элемента массива в ax
  13. call Show_ax - вызывает процедуру вывода значения ax
  14. add si, 2 - увеличивает значение si на 2
  15. loop @@ShowAll - выполняет цикл 15 раз
  16. lea dx, CrLf - переносит адрес строки перевода строки в dx
  17. mov ah, 9 - устанавливает регистр ah равным 9
  18. int 21h - выполняет интерполяцию регистра ah с регистром dx
  19. @@ShowOdd: - метка цикла
  20. mov ax, [si] - переносит значение элемента массива в ax
  21. test ax, 1 - проверяет, является ли значение ax нечётным
  22. jz @@NextOdd - если значение ax чётное, то выполняется метка @@NextOdd
  23. call Show_ax - вызывает процедуру вывода значения ax
  24. lea dx, Space - переносит адрес строки пробелов в dx
  25. mov ah, 9 - устанавливает регистр ah равным 9
  26. int 21h - выполняет интерполяцию регистра ah с регистром dx
  27. @@NextOdd: - метка цикла
  28. add si, 2 - увеличивает значение si на 2
  29. loop @@ShowOdd - выполняет цикл 15 раз
  30. lea dx, CrLf - переносит адрес строки перевода строки в dx
  31. mov ah, 9 - устанавливает регистр ah равным 9
  32. int 21h - выполняет интерполяцию регистра ah с регистром dx

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


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

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

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

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

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

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