Программирование на Ассемблере
Например, операнд в команде
MOVE ([10,A0],D0,20),D1 берется из ячейки с адресом
< содержимое ячейки (10+<содержимое A0>) > + < содержимое D0 > + 20.
- косвенная через память с прединдексированием. Например, команда
MOVE ([10,A0,D0],20),D1 берет свой первый операнд из ячейки с адресом
< содержимое ячейки (10+<содержимое A0>+<содержимое D0>) > + 20.
- косвенная относительно PC с 32-битным базовым смещением и
индексированием;
- косвенная относительно PC через память с постиндексированием;
- косвенная относительно PC через память с прединдексированием. Последние три метода аналогичны первым трем, только вместо адресного
регистра используется PC. В методах адресации MC68020, использующих индексирование, рассматривается,
так называемый, индексный операнд, который имеет вид Dn*SCALE. Здесь
параметр SCALE задает масштаб регистра Dn (то есть число, на которое будет
умножаться содержимое Dn перед его использованием) и может принимать
значения 1,2,4 и 8. Например, для доступа к пятому элементу таблицы,
содержащей длинные слова, можно использовать команду MOVE.L (A0,D0*4),D1,
при условии, что A0 содержит адрес начала таблицы, а D0 - номер элемента
(в нашем случае 5).
В командах MC68000 параметр SCALE всегда должен быть равен 1. Подробную информацию о методах адресации процессора MC68020 можно найти в
соответствующей документации. 2.3 Режимы процессора. В пункте 2.1 мы описывали регистр статуса SR. Теперь подробно остановимся
на старшем (системном) байте этого регистра и рассмотрим его влияние на
работу процессора. 2.3.1 Режимы пользователя и супервизора. Вам может показаться странным, что процессор подразделяет программы на
обычные - \'пользовательские\' и специальные - \'супервизорские\', давая
некоторые привелегии командам в режиме супервизора. Однако это не повод для
беспокойства - операционная система позволяет в случае необходимости
переключаться в режим супервизора.
Режим процессора задается битом 13 регистра статуса.
|