Обработка целочисленного массива. - Assembler (223120)

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

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

1. Задать в программе массив из 5 элементов. 2. Последовательно заполнить элементы массива результатом целочисленного деления/умножения выбранного числа на «2»/«4» (использовать операторы побитового сдвига). 3. Проведите циклический сдвиг каждого элемента массива на величину, равную его номеру

Решение задачи: «Обработка целочисленного массива.»

textual
Листинг программы
  1. LOCALS
  2.  
  3. .model small
  4.  
  5. .stack 100h
  6.  
  7. .data
  8.         A       dw      5 dup (?)
  9.  
  10. .code
  11.  
  12. main    proc
  13.         mov     ax,     @data
  14.         mov     ds,     ax
  15.  
  16.         ;заполнение массива
  17.         lea     si,     A
  18.         mov     cx,     5
  19.         mov     ax,     7       ;выбранное число
  20. @@For1:
  21.         shl     ax,     1       ;умножение на 4
  22.         shl     ax,     1
  23.         mov     [si],   ax
  24.         add     si,     2
  25.         loop    @@For1
  26.  
  27.         ;циклический сдвиг каждого элемента массива на величину,
  28.         ;равную его номеру
  29.         lea     si,     A
  30.         mov     cx,     5
  31.         mov     dx,     1       ;номер элемента массива
  32. @@For2:
  33.         push    cx
  34.         mov     cx,     dx
  35.         ror     word ptr [si],  cl
  36.         pop     cx
  37.         add     si,     2
  38.         inc     dx
  39.         loop    @@For2
  40.  
  41.         mov     ax,     4C00h
  42.         int     21h
  43. main    endp
  44.  
  45. end     main

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

  1. Указание локальных переменных
  2. Установка модели памяти small
  3. Выделение стека размером 100h
  4. Объявление секции данных
    • Объявление массива A размером 5 элементов типа word (целочисленный массив)
  5. Объявление секции кода
    • Объявление процедуры main
      • Загрузка адреса сегмента данных в регистр ax
      • Перемещение значения ax в регистр ds
      • Заполнение массива A
      • Загрузка адреса массива A в регистр si
      • Установка счетчика цикла в значение 5
      • Загрузка значения 7 в регистр ax
      • Исполнение цикла For1:
        • Сдвиг значения в ax налево на два бита (умножение на 4)
        • Сохранение значения в память по адресу si
        • Увеличение адреса si на 2 (размер элемента массива)
        • Уменьшение счетчика цикла
      • Циклический сдвиг каждого элемента массива на величину, равную его номеру
      • Загрузка адреса массива A в регистр si
      • Установка счетчика цикла в значение 5
      • Установка значения dx в 1 (номер элемента массива)
      • Исполнение цикла For2:
        • Сохранение значения счетчика цикла в стек
        • Загрузка значения dx в регистр cx
        • Циклический сдвиг значения по адресу si налево на значение регистра cl
        • Извлечение значения счетчика цикла из стека
        • Увеличение адреса si на 2 (размер элемента массива)
        • Увеличение значения dx на 1
        • Уменьшение счетчика цикла
      • Завершение программы
  6. Завершение процедуры main
  7. Завершение программы main

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


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

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

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

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

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

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