Обработка целочисленного массива. - 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
Объяснение кода листинга программы
- Указание локальных переменных
- Установка модели памяти
small
- Выделение стека размером 100h
- Объявление секции данных
- Объявление массива
A
размером 5 элементов типа word (целочисленный массив)
- Объявление массива
- Объявление секции кода
- Объявление процедуры
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 - Уменьшение счетчика цикла
- Завершение программы
- Загрузка адреса сегмента данных в регистр
- Объявление процедуры
- Завершение процедуры
main
- Завершение программы
main
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д