Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Новые рефераты » Програми на асемблері

Реферат Програми на асемблері





параметр (тут він відсутній, значить береться значення за замовчуванням 57) і кількість символів у кожному рядку (тут 132, можливо від 60 до 132, по замовчуванням - 80).

Page без параметрів здійснює переклад друку на нову сторінку і збільшення на 1 номера сторінки лістингу. Ці директиви можуть бути відсутні.


. Масиви в Асемблері


Масиви в мові Асемблера описуються директивами визначення даних, можливо з використання конструкції повторення DUP.

Наприклад, x dw 30 dup (?)

Так можна описати масив чисел, що складається з 30 елементів довжиною в слово, але в цьому описі не вказано як нумеруються елементи масиву, тобто це може бути

[0 .. 29] і x [1 .. 30] і x [k .. 29 + k].


Якщо в задачі жорстко не обумовлена ??нумерація елементів, то в Асемблері зручніше рахувати елементи від нуля, тоді адресу будь-якого елемента буде записуватися найбільш просто: адреса (x [i])=x + (type x) * i

У загальному вигляді, коли перший елемент має номер k, для одновимірного масиву буде: адреса (x [i])=x + (type x) * (i - k)

Для двовимірного масиву - A [0 .. n - 1, 0 .. m - 1] адресу (i, j) - го елемента можна обчислити так: адреса (A [i, j]) =A + m * (type A) * i + (type A) * j

З урахуванням цих формул для запису адреси елемента масиву можна використовувати різні способи адресації. Для описаного вище масиву слів, адресу його i-го елемента дорівнює: x + 2 * i=x + type (x) * i,

тобто адреса складається з двох частин: постійної x і змінної 2 * i, залежною від номера елемента масиву. Логічно використовувати адресацію пряму з індексуванням:

x - зміщення, а 2 * i - в регістрі модификаторе SI або DI - x [SI]

Для двовимірного масиву, наприклад:

A DD n DUP (m Dup (?)); A [0 .. n - 1, 0 .. m - 1] отримаємо:

адресу (A [i, j])=A + m * 4 * i + 4 * j,

Тобто маємо в адресі постійну частину А і дві змінних m * 4 * i і 4 * j, які можна зберігати в регістрах. Два модифікатора є в адресації по базі з індексуванням, наприклад: A [BX] [DI].

Запишемо фрагмент програми, в якій в регістр AL записується кількість рядків матриці X DB 10 dup (20 dup (?)), в яких початковий елемент повторюється хоча б один раз.


----------------------------------

mov AL, 0; кількість шуканих рядків

mov CX, 10; кількість повторення зовнішнього циклу

mov BX, 0; початок рядка 20 * i

m1: push CX

mov AH, X [BX]; 1-й елемент рядка в AH

mov CX, 19; кількість повторень внутрішнього циклу

mov DI, 0; номер елемента в рядку (j)

m2: inc DI; j=j + 1AH, X [BX] [DI]; A [i, 0]=A [i, j] m2; перший не повторився? Перехід на m2

jne L; не було в рядку рівних перший? Перехід на L

inc AL; перший повторився, збільшуємо лічильник рядків

L: pop CX; відновлюємо CX для зовнішнього циклу

add BX, 20; в BX початок насту...


Назад | сторінка 22 з 29 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Поняття і елементи масиву
  • Реферат на тему: Розробка на мові асемблера алгоритму контролю на парність масиву даніх
  • Реферат на тему: Проектування програми з аналізу масиву
  • Реферат на тему: Аналіз методів сортування одновимірного масиву
  • Реферат на тему: Обробка одновимірних масивів. Виділення мінімального і максимального елеме ...