Пятница, Сентябрь 18, 2020

Ассемблер

Рабочие регистры - аккумулятор А,В и D.

У 6811 есть два 8-ми битных регистра-называются они аккумулятор А и аккумулятор В(в PIC это WREG). Вместе они образуют один 16-ти битный аккумулятор D. Есть инструкции которые обращаются только к А,а есть инструкции которые работают с В или D. Шестнадцатитеричное число обазночается знаком $. Загрузить число в аккумулятор А можно инструкцией LDAA  - LoaD Accumulator A. Сохранить число находящееся в аккумуляторе А можно инструкцией STAA - STore Accumulator A.

 REGISTORS

Способы адресации.

Это способы как инструкции обращаются к памяти. Существует шесть способов адресации:

  1. Immediate - Непосредственная. Копирует данные расположенные после инструкции в место указанное инструкцией. Например LDAA #$3F - загружаем в аккумулятор А непосредственно шестнадцатитеричное число $3F. Инструкция LDAA определяет куда скопируются данные.
  2. Direct - Прямая. Этот способ использует первые 256 байт RAM. Эти адреса имеют диапозон от $0000 до $00FF. Например STAA $1C. Этот пример сохранял бы число, которое находится в аккумуляторе А по адресу $001C. $00 часть адреса подразумевается.
  3. Extended - Расширенный. Этим способом можно обратиться к любому адресу в диапазоне от $0000 до $FFFF. Например LDAA $DE00. Эта инструкция загружает в аккумулятор А байт находящийся по адресу $DE00.

  4. Indexed - Индексированный. Этот способ адресации использует индексные регистры X или Y , в которых сохраняется адрес или указатель на данные в памяти. #LDX #START - это указатель на адрес в памяти с меткой START. STAA $01,X - эта инструкция сохраняет данные находящиеся в аккумуляторе А по адресу в X(START) плюс 1. Например, если адрес START равен $CD00, тогда данные в A сохранятся по адресу $CD01.
  5. Relative - Относительный. Используется в ветвлении программы в пределах +127 и -126 байт. Например BNE START, где START должен иметь адрес в пределах +127 и -126 байт

  6. Inherent - Врожденный. Врожденный способ обращения используется инструкциями, которые хранят адрес в пределах инструкции. Например инструкция возврата из подпрограммы RTS. Программисту не нужно знать по какому адресу вызывалась подпрограмма. Этот адрес врожден в инструкцию RTS, она знает куда вернуться из подпрограммы.

 

Загрузка, сохранение и перемещение аккумуляторов.

Пример загрузки и сохранения данных в аккумуляторе:

 

          LDAA #$39
          STAA $1008


В этом примере число 9 в ASCII($39) загружается в аккумулятор А. Затем данные ($39) сохраняются по адресу $1008. В 6811 по этому адресу находится порт D. Данные, которые хранятся в аккумуляторе могут быть перемещены в другой аккумулятор. Это можно выполнить с помощью команд TAB(перемещает А в В) и TBA(перемещает В в А).


Сложение, вычитание, сравнение, инкрементирование и декрементирование А и В.



COMMANDS1COMMANDS2COMMANDS3COMMANDS4COMMANDS5COMMANDS6COMMANDS7COMMANDS8COMMANDS9COMMANDS10COMMANDS11

Back to Top