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

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

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

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

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

textual
Листинг программы
LOCALS
 
.model small
 
.stack 100h
 
.data
        A       dw      5 dup (?)
 
.code
 
main    proc
        mov     ax,     @data
        mov     ds,     ax
 
        ;заполнение массива
        lea     si,     A
        mov     cx,     5
        mov     ax,     7       ;выбранное число
@@For1:
        shl     ax,     1       ;умножение на 4
        shl     ax,     1
        mov     [si],   ax
        add     si,     2
        loop    @@For1
 
        ;циклический сдвиг каждого элемента массива на величину,
        ;равную его номеру
        lea     si,     A
        mov     cx,     5
        mov     dx,     1       ;номер элемента массива
@@For2:
        push    cx
        mov     cx,     dx
        ror     word ptr [si],  cl
        pop     cx
        add     si,     2
        inc     dx
        loop    @@For2
 
        mov     ax,     4C00h
        int     21h
main    endp
 
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
Похожие ответы