Amiga. Вычислительная техника
Меню сайта
Главная
Amiga
Amiga Corporation
Модельный ряд
История развития
Аппаратная платформа
Операционные системы
Эмуляция
AMIGA # 1
Программирование на Ассемблере
Организация процессоров
Методы защиты информации
Компьютерные новеллы
Боятся ли компьютеры адского пламени?
Виртуальная реальность
Корпоративные сети
Телекоммуникационные сети
Архитектура ЭВМ
ЕС ЭВМ
Рождение ЭВМ
Компьютер
Гарвардская архитектура
Современные высокопроизводительные компьютеры
Дорога в будущее
Vista
Инфоpматика
ЭВМ
Операционные системы
Linux
Windows
Освой компьютер
Макинтош
Набор текста
Поколения
Компьютерная грамотность
Устройство компьютера
Железо
Графика
Звук
Ремонт
Сети
Программирование
Информационные технологии
Криптография
Микроэлектроника
Истории
 
 

Программирование на Ассемблере



В этом разделе мы рассмотрим некоторые базовые алгоритмы, которые,
несомненно, помогут Вам на практике. Хотя все примеры из этого раздела
написаны для ассемблера AssemPro, они без труда переносятся на другие
системы (см. предыдущий раздел).
Все приводимые ниже алгоритмы оформлены как подпрограммы, так что их можно
практически без измениний использовать в других программах. Однако мы
все же рекомендуем Вам \"поиграть\" с этими подпрограммами в отладчике, чтобы
лучше понять идеи алгоритмов (в системе SEKA Вы можете использовать команду
\"j Program_Name\" для запуска подпрограммы; результаты обычно возвращаются
на регистрах или в памяти).
Начнем с самого простого примера: сложение чисел в таблице.
4.1. Суммирование таблиц (массивов).
Предположим, что Вам нужно получить сумму чисел, записанных в памяти. Пусть
у нас имеется пять 16-битных чисел, сумму которых требуется поместить в D0.
Вот самый простой способ это сделать:
;(4.1A)
adding1: clr.l D0 ;обнуление D0 (на всякий случай)

move table,D0 ;первый элемент - в D0

add table+2,D0 ;прибавить второй элемент

add table+4,D0 ;прибавить третий элемент

add table+6,D0 ;прибавить четвертый элемент

add table+8,D0 ;прибавить пятый элемент

rts ;возврат
table: dc.w 2,4,6,8,10

end
Войдите в отладчик, запустите эту программу (если Вы используете ассемблер
SEKA, наберите \"j adding1\") и убедитесь, что в D0 действительно окажется
сумма чисел таблицы table.
Приведенный пример работает только с фиксированными адресами. Но вспоминая
различные методы адресации процессора мы сможем написать более компактный
алгоритм, который к тому же будет способен суммировать разные таблицы.
Для этого мы поместим адрес таблицы в один из адресных регистров (например,
в A0) с помощью команды move.l. Тогда, используя этот регистр как базовый
указатель, мы сможем применять косвенную адресацию со смещением для доступа
к элементам таблицы:
;(4.1B)
adding1: clr.l D0 ;обнуляем D0

move.l #table,A0 ;адрес таблицы - в A0

move (A0),D0 ;первый элемент - в D0

add 2(A0),D0 ;прибавляем второй элемент

add 4(A0),D0 ;прибавляем третий элемент

add 6(A0),D0 ;прибавляем четвертый элемент

add 8(A0),D0 ;прибавляем пятый элемент

rts ;возврат из подпрограммы
table: dc.w 2,4,6,8,10
end
Оттранслируйте эту программу и войдите в отладчик.

 

 

Фэшн-студия Purity, стилист в Киеве, не будь гусеницей
© 2010 Amigo. All Rights Reserved
Создание сайтов ЕкатеринбургШаблоны сайтовПоиск товаров - справочник цен, каталог магазинов, прайс-листыБесплатные шаблоны дизайна компьютерных сайтов
Hosted by uCoz