Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MSP430_НВВ.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.67 Mб
Скачать

1.4.1 Регистровая адресация

В регистровой адресации операндом-источником и/или операндом-приемником является регистр регистрового файла. Признаком регистровой адресации является имя регистра, записанное в качестве операнда.

Пример:

mov R5, R10 - содержимое регистра R5 (как слово) пересылается в регистр R10.

mov.b SP, R5 - содержимое младшего байта указателя стека пересылается в регистр R5.

mov PC, R7 - в регистре R7 запоминается текущее состояние программного счетчика.

1.4.2. Индексная адресация

С помощью индексной адресации производится обращение к ячейке памяти, адрес которой вычисляется как сумма содержимого регистра и постоянного смещения. Признаком индексной адресации является использование одного из операндов в виде X(Rn), где n – индекс используемого регистра (n=0..15), а X – произвольное целое число, записанное в десятичной или шестнадцатеричной форме, и находящееся в диапазоне 0..65535 (0..FFFFh).

Пример:

mov 12(R5), 100h(R8) - содержимое ячейки памяти (как слово), адрес которой равен сумме содержимого регистра R5 и константы 12 (десятичное) переслать в ячейку памяти, адрес, которой равен сумме содержимого регистра R8 и константы 100h (шестнадцатеричное).

Рассмотрим этот пример более подробно. Пусть на момент выполнения этой команды содержимое R5 = 200h, а содержимое R8 = 456h.

Тогда адрес источника равен 200h+12 = 200h+0Ch = 20Ch

Адрес приемника равен 456h+100h = 556h

Таким образом, при данных начальных условиях, исполнение этой команды приведет к пересылке содержимого слова по адресу 20Ch в ячейку памяти с адресом 556h.

В одной команде можно комбинировать регистровый и индексный способы адресации.

Например

mov.b 8(R10), R5 - содержимое байта по адресу, равному сумме содержимого R10 и константы 8, записывается в регистр R5.

mov.w R12, 0(R14) - содержимое регистра R12 записывается в ячейку памяти (слово), адрес которой содержится в R14.

1.4.3 Символьная адресация

Признаком символьной адресации является упоминание символьного имени ячейки памяти как операнда-приемника и/или операнда-источника. В качестве символьного имени ячейки памяти используется метка, описанная в сегменте кода или данных при написании программы.

Пример:

mov Lab1, R5

. . .

Lab1: dw 10

Содержимое ячейки памяти, помеченной как Lab1, пересылается в регистр R5. Адрес Lab1 зарезервирован с помощью директивы компилятора dw (define word). В данном случае по адресу, соответствующему метке Lab1, располагается константа 10.

Символьная адресация является частным случаем индексной адресации, где в качестве базового регистра используется PC, а постоянное смещение рассчитывается ассемблером на этапе трансляции как разность адресов ячейки памяти Lab1 и текущего адреса команды, которая использует символьную адресацию.

Предположим, что данная команда занимает ячейки памяти программ, начиная с адреса 1234h, а метка Lab1 соответствует адресу 23AEh. Тогда смещение относительно PC можно рассчитать как 23AEh – 1234h = 117Ah, и данная команда будет оттранслирована как

mov 117Ah(PC), R5

Таким образом, после исполнения команды в регистр R5 будет записано значение 10.

Использовать символьный режим адресации имеет смысл тогда, когда необходимо получить перемещаемый, т.е. адресно-независимый программный код. Этот прием применяется, например, в случае, если программе необходимо перепрограммировать часть собственной Flash памяти. В этом случае управляющая подпрограмма должна выполняться не из Flash памяти, а из ОЗУ. Для этого необходимо, чтобы подпрограмма программирования сначала располагалась во Flash, после чего ее тело необходимо скопировать в ОЗУ, и передать ей управление. Находясь в ОЗУ, подпрограмма может очистить Flash, возможно включая ту область, откуда она была скопирована. Таким образом, перемещаемый программный модуль, работающий относительно PC, может быть транслирован в привязке к одним адресам, а исполняться из другой области памяти.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]