Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LAB2_W95.DOC
Скачиваний:
19
Добавлен:
16.04.2013
Размер:
172.03 Кб
Скачать

2.1.4. Команды пересылки данных.

· Загрузить аккумулятор или индексный регистр содержимым ячейки памяти (LDA-load Accumulator/LDX-LoaD indeX register).

Команда пересылает содержимое ячейки памяти в аккумулятор или в индексный регистр . В соответствии с записываемыми в регистры данными устанавливаются биты в регистре признаков.

Бит N в CCR устанавливается, если установлен старший бит аккумулятора A7, в противном случае бит N сбрасывается. Бит Z в CCR устанавливается, если в аккумуляторе $00, иначе бит Z сбрасывается.

К данным командам применимы все методы адресации, кроме относительного.

· Записать содержимое аккумулятора или индексного регистра в ячейку памяти (STA-STore Accumulator/STX-STore indeX register).

Команды STx перемещают содержимое аккумулятора или индексного регистра в ячейку памяти, адресуемую операндом. Содержимое аккумулятора или регистра остается неизменным. Биты N и Z в CCR устанавливаются так же, как и при использовании команд LDA/LDX. С этими командами можно использовать все методы адресации, кроме относительного.

· Обменять содержимое аккумулятора и индексного регистра (TAX/TXA).

Команда TAX (Transfer Accumulator to indeX register) пересылает содержимое аккумулятора в индексный регистр, действие TXA (Transfer indeX register to Accumulator) прямо противоположно. Воздействие на регистр признаков аналогично командам LDA/LDX и STA/STX. Заметим, что эти команды используют неявную адресацию.

· Обнулить (команды типа CLR - CLeaR).

Команды типа CLR сбрасывают в нуль содержимое операнда, при этом в CCR знаковый бит N очищается, а флаг нуля Z устанавливается в единицу. К команде CLR применимы прямая, индексная без базы и индексная с восьмиразрядной базой режимы адресации. Команды CLRA (CLeaR Accumulator) и CLRX (CLeaR indeX register) используют неяную адресацию операнда (аккумулятор и индексный регистр).

· Проинициализировать указатель стека (RSP - Reset Stack Pointer).

В регистр указателя стека SP пересылается значение $00FF, тем самым он устанавливается на вершину стека, регистр признаков при этом не изменяется. Данная команда использует неявную адресацию.

2.1.5. Команды передачи управления.

· Команда перехода по условию ?1=1, которое выполняется всегда (BRA - BRanch Always).

Команда осуществляет переход по адресу, вычисляемому по приведенной ниже формуле, где Rel-относительное смещение, которое содержится в последнем байте кода команды.

PC ¬(PC)+$0002+Rel.

В исходном тексте адрес перехода задается абсолютным значением, символом или выражением, которое может быть вычислено ассемблером (заметим, что правила записи меток или выражений для вычисления адреса перехода могут различаться при использовании разных ассемблеров). Ассемблер вычисляет смещение Rel из абсолютного адреса перехода и текущего значения программного счетчика PC. Регистр признаков не изменяется.

· Переход по условию ?1=0, которое не выполняется никогда (BRN - BRanch Never).

Команда используется как двухбайтовый аналог команды NOP (нет операции) при отладке программ, когда нужно отменить действие команды перехода, и выполняется за 3 цикла. Действие этой команды противоположно действию команды BRA. Регистр признаков не изменяется.

· Переход, если бит n ячейки памяти М равен 0 (BRCLR - BRanch if bit CLeaR).

PC ¬ (PC)+$0003+Rel, если бит n ячейки M равен нулю.

Команда проверяет бит n ячейки памяти M на равенство нулю. Переход осуществляется, если проверяемый бит равен нулю. M может быть в адресном пространстве RAM или регистров ввода/вывода в пределах от $0000 до $00FF (т.е. используется прямая адресация). Бит C регистра признаков устанавливается в состояние тестируемого бита.

· Переход, если бит n ячейки памяти М равен 1 (BRSET - BRanch if bit SET).

PC ¬(PC)+$0003+Rel, если бит n ячейки M равен единице.

Команда проверяет бит n ячейки памяти M на равенство единице. Переход осуществляется, если проверяемый бит равен единице. M может быть в адресном пространстве RAM или регистров ввода/вывода в пределах от $0000 до $00FF (т.е. используется прямая адресация). Бит C регистра признаков устанавливается в состояние тестируемого бита.

· Переход, если больше (BHI - Branch if HIgher).

PC¬(PC)+$0002+Rel, если (C)+(Z)=0, т.е. если (A)>(M) (беззнаковые двоичные числа)

Возникает переход, если оба бита C и Z регистра признаков сброшены в ноль. Когда команда BHI используется сразу после выполнения команд CMP или SUB, возникает переход, если беззнаковое число, содержащееся в аккумуляторе, больше, чем беззнаковое число в ячейке памяти M. Регистр признаков не изменяется.

· Переход , если меньше или равно (BLS - Branch if Lower or Same).

PC¬(PC)+$0002+Rel, если (C)+(Z)=1, т.е. если (A)£(M) (беззнаковые двоичные числа)

Возникает переход, если бит C или Z регистра признаков установлен в единицу. Когда команда BLS используется сразу после выполнения команд CMP или SUB, возникает переход, если беззнаковое число, содержащееся в аккумуляторе, меньше или равно беззнакового числа в ячейке памяти M. Регистр признаков не изменяется.

· Переход, если сброшен флаг переноса/если больше или равно (BCC/BHS - Branch if Carry bit Clear/Branch if Higher or Same).

PC¬(PC)+$0002+Rel, если (C)=0

Проверяется состояние бита C регистра признаков. Переход возникает, если бит С сброшен. Мнемонику BHS принято использовать после команд CMP и SUB. Переход в данном случае возникает, если беззнаковое число в аккумуляторе больше или равно беззнакового числа, содержащегося в ячейке памяти M. Регистр признаков не изменяется.

· Переход, если установлен флаг переноса/если меньше (BCS/BLO - Branch if Carry Set/Branch if LOwer).

PC¬(PC)+$0002+Rel, если (C)=1

Тестируется состояние бита C регистра признаков. Если бит C установлен в единицу, то возникает переход. Если команда BCS/BLO выполняется сразу после выполнения команд CMP или SUB, переход возникает, если беззнаковое число, содержащееся в аккумуляторе, меньше беззнакового числа, содержащегося в ячейке памяти M. Регистр условий не изменяется.

· Переход, если не равно (BNE - Branch if Not Equal to zero).

PC¬(PC)+$0002+Rel, если (Z)=0

Тестируется состояние бита Z регистра условий. Возникает переход, если бит Z сброшен. Следуя после сравнения или вычитания, BNE вызовет переход, если аргументы не равны. Регистр условий не изменяется.

· Переход, если равно (BEQ - Branch if EQual).

PC¬(PC)+$0002+Rel, если (Z)=1

Тестируется состояние бита Z регистра условий. Возникает переход, если бит Z установлен. Следуя после сравнения или вычитания, BEQ вызовет переход, если аргументы равны. Регистр условий не изменяется.

· Переход, если сброшен флаг переноса из младшей тетрады (BHCC - Branch if Half Carry Clear).

PC¬(PC)+$0002+Rel, если (H)=0

Тестируется состояние бита H регистра условий. Возникает переход, если бит H сброшен. Команда используется при работе с числами в BCD формате. Регистр условий не изменяется.

· Переход, если установлен флаг переноса из младшей тетрады (BHCS - Branch if Half Carry Set).

PC¬(PC)+$0002+Rel, если (H)=1

Тестируется состояние бита H регистра условий. Возникает переход, если бит H установлен. Команда используется при работе с числами в BCD формате. Регистр условий не изменяется.

· Переход, если плюс (BPL - Branch if PLus).

PC¬(PC)+$0002+Rel, если (N)=0

Тестируется состояние бита N регистра условий. Возникает переход, если бит N сброшен. Регистр условий не изменяется.

· Переход, если минус (BMI - Branch if MInus).

PC¬(PC)+$0002+Rel, если (N)=1

Тестируется состояние бита N регистра условий. Возникает переход, если бит N установлен. Регистр условий не изменяется.

· Переход, если бит маскирования прерываний сброшен (BMC - Branch if interrupt Mask Clear).

PC¬(PC)+$0002+Rel, если (I)=0

Тестируется состояние бита I регистра условий. Возникает переход, если бит I сброшен (то есть прерывания разрешены). Регистр условий не изменяется.

· Переход, если бит маскирования прерываний установлен (BMS - Branch if interrupt Mask Set).

PC¬(PC)+$0002+Rel, если (I)=1

Тестируется состояние бита I регистра условий. Возникает переход, если бит I установлен (то есть прерывания запрещены). Регистр условий не изменяется.

· Переход, если на входе запроса прерывания -лог. 0 (BIL - Branch if IRQ pin Lower).

PC¬(PC)+$0002+Rel, eсли IRQ\=0

Тестируется состояние входa запроса внешнего прерывания. Возникает переход, если на входе - нулевой логический уровень. Регистр условий не изменяется.

· Переход, если на входе запроса прерывания -лог. 1 (BIH - Branch if IRQ pin Higher).

PC¬(PC)+$0002+Rel, eсли IRQ\=1

Тестируется состояние входa запроса внешнего прерывания. Возникает переход, если на входе - единичный логический уровень. Регистр условий не изменяется.

· Переход на подпрограмму (BSR - Branch to SubRoutine).

PC¬(PC)+$0002 в PC заносится адрес возврата

ß(PCL); SP¬(SP)-$0001 в стеке сохраняется младший байт адреса возврата

ß(PCH); SP¬(SP)-$0001 в стеке сохраняется старший байт адреса возврата

PC¬(PC)+Rel в PC загружается адрес подпрограммы

Программный счетчик увеличивается на 2 относительно адреса кода операции BSR, таким образом в PC оказывается адрес следующей за BSR команды, который является адресом возврата из подпрограммы. Младший байт программного счетчика помещается в стек. Указатель стека уменьшается на 1. Затем старший байт программного счетчика помещается в стек, указатель стека уменьшается на 1. Производится переход по адресу, определяемому смещением. Регистр условий не изменяется.

· Длинный безусловный переход (JMP - JuMP).

PC¬Эффективный адрес

Осуществляется переход по эффективному адресу. Эффективный адрес вычисляется в соответствии с правилами для расширенного, прямого и индексного режимов адресации. Регистр условий не изменяется.

· Длинный вызов подпрограммы (JSR - Jump to SubRoutine).

PC¬(PC)+n n=1,2,3 в зависимости от режима адресации

ß(PCL); SP¬ SP-$0001 Младший байт адреса возврата в стек

ß(PCH); SP¬ SP-$0001 Старший байт адреса возврата в стек

PC¬Эффективный адрес Загрузить в PC адрес подпрограммы

Программный счетчик увеличивается на n, т.е. до адреса следующей за JSR команды. Затем PC сохраняется в стеке. Указатель стека указывает на следующую свободную ячейку памяти. Осуществляется переход по эффективному адресу. Эффективный адрес вычисляется в соответствии с правилами для расширенного, прямого и индексного режимов адресации. Регистр условий не изменяется.

· Возврат из подпрограммы (RTS - ReTurn from Subroutine).

SP¬(SP)+$0001 PCH PCH из стека

SP¬(SP)+$0001 PCL PCL из стека

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

2.2. Практическая часть1.

Соседние файлы в предмете Отладка микроконтроллеров ЭВМ