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

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


Тогда доступ к
последнему элементу может осуществляться одной командой, как показано в
следующем примере:
...
CLR.L D0 ;очистка D0

MOVE.L #RECORD,A0 ;адрес массива - в A0

MOVE.B (A0),D0 ;число элементов-1 - в D0

MOVE.B 1(A0,D0),D1 ;последний элемент - в D1
...
Здесь последняя команда извлекает элемент, расположенный по адресу 1+A0+D0,
или, другими словами, по адресу начала структуры плюс один (здесь начинается
массив) и плюс смещение, заданное в D0 (в нашем случае 2).
Этот метод доступа к данным используется очень часто, он прекрасно подходит
для работы с таблицами и списками. Если смещение не требуется, можно
написать так: MOVE 0(A0,D0),D1 (а некоторые ассемблеры подставляют нулевое
смещение по умолчанию, так что его можно явно не указывать).
Последние два метода имеют еще одну разновидность, в которой используется
смещение относительно содержимого программного счетчика (PC). Используя
косвенный регистровый метод со смещением относительно PC можно писать
перемещаемые программы. Следующие две команды эквивалентны (при условии,
что смещение от адреса второй команды до адреса MARKER может быть
закодировано 16-ю битами):
MOVE MARKER,D1
и

MOVE MARKER(PC),D1
Если в первой команде задается абсолютный адрес переменной MARKER, то во
второй - смещение от самой команды до метки MARKER (это смещение
вычисляется ассемблером и автоматически подставляется в код).
Рассмотрим подробнее разницу между этими двумя командами. Несмотря на то,
что действия их эквивалентны, машинное представление у них разное.
Пусть команда MOVE расположена с адреса $1000, а переменная MARKER - с
адреса $1100. Тогда машинный код, сгенерированный ассемблером, будет
выглядеть примерно так:
$001000 30 39 00 00 11 00 MOVE MARKER,D1
и второй вариант:
$001000 30 3A 00 FE MOVE MARKER(PC),D1
Отсюда видно, что второй вариант кода на два байта короче первого.

 

 

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