Реалізація основних операцій по обробці масивів мовою асемблера.
3.1.1. Оголошення масиву. Для оголошення масиву в секції визначення даних досить оголосити змінну і тип даних: - масив з десяти 32-бітних даних: array dd 10 dup (?) 3.1.2. Ініціалізація масиву: - масив з десяти 32-бітних даних: array1 dd 1,2,5,4,5,6,7,8,9,10: - масив з десяти 16-бітних даних: array2 dw 5 dup (4095) - створюється масив з 10 елементів, значенням яких є число 4095(0FFFh): З погляду програмування на асемблері не існує принципових відмінностей в оголошенні одномірних і двовимірних масивів, так приведений вище приклад оголошення масиву array1, можна розглядати як двовимірний масив (2x5) або (5x2):
Розходження будуть виявлятися тільки при організації доступу до елемента масиву. 3.1.3. Організація доступу до елементів масиву. Для одержання доступу до елемента масиву при програмуванні на асемблері використовується непряма адресація операндів, при цьому в якості перемінної - лічильника зручно використовувати один з вільних регістрів загального призначення. - доступ до елементів одномірного масиву: Рис.1.- Алгоритм доступу до елемента одномірного масиву Приклад коду, що реалізує алгоритм, наведений на рисунку 1.
- для доступу до елементів двовимірного масиву необхідно в якості індексних використовувати 2 регістри, наприклад ebx і esi, алгоритм приведений на рисунку 2, приклад коду - нижче:
Рис.2. – Організація доступу до елементів двовимірного масиву 3.1.4. Обробка масиву. - без використання ланцюжкових команд. У даному випадку використовуються всі команди (пересилання, арифметичної, бітові, передачі управління). Приклад 1: знайти індекси максимального і мінімального елементів масиву, що складається з елементів розміром байт. Нумерація елементів масиву з одиниці. Вирішимо цю задачу без використання циклічних команд. Змінні IndMax і IndMin, будемо використовувати для збереження чергового локального елемента. З огляду на, що для елементів розміром у байт діапазон значень дорівнює -128...+127, максимальне значення приймемо рівним -128, а мінімальне +127. Відповідна програма на асемблері приведена нижче.
Приклад 2: знайти входження елементу у двомірний масив. ... - із використанням ланцюжкових команд. Відомо, що ланцюжкові команди дозволяють досить легко бути пристосовані для обробки масивів. При використанні ланцюжкових команд завжди варто пам'ятати про регістри, використовуваних за замовчуванням - edi і esi, - саме з їхньою допомогою й організується програма обчислень. Приклад 2. Знайти елементи масиву менші визначеного числа n замінити їх заданим значенням
Читайте также: G) відповідні права дітей-жертв і свідків відповідно до Конвенції про права дитини та Декларації основних принципів правосуддя для жертв злочинів і зловживання владою. Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|