
- •Приложение 1. Система команд ассемблера hcs08
- •Команды загрузки и пересылки данных
- •Арифметические команды
- •Логические команды
- •Команды сдвига
- •Команды битового процессора
- •Команды условных и безусловных переходов
- •Команды работы со стеком вызова подпрограмм и обслуживания прерываний
- •Команды перехода к режимам пониженного энергопотребления и в режим отладки
Приложение 1. Система команд ассемблера hcs08
(Руководство разработчика по микроконтроллерам семейства HCS08)
Система команд CPU08 включает 94 команды. Длина кода команды в байтах определяется типом команды и способом адресации. Команды CPU08 могут иметь однобайтный, двухбайтный, трехбайтный и четырехбайтный формат. Однобайтными командами в соответствие с теорией являются команды с неявной адресацией (INH) и с индексной адресацией без смещения (IX). В двухбайтном формате представлены команды с непосредственной (IMM), прямой (DIR) и индексной с однобайтным смещением (IX1) адресацией. Трехбайтный формат имеют команды с прямой расширенной адресацией (EXT), индексной адресацией со смещением на два байта (IX2) и адресацией по указателю стека со смещением на один байт (SP1). Четырехбайтными командами являются только команды с адресацией по указателю стека со смещением в два байта (SP2).
Далее приведен полный перечень команд ассемблера процессорного ядра HCS08. Для каждой команды указан синтаксис записи для каждого из доступных способов адресации. В Ассемблерах от компании Freescale Semiconductor принято шестнадцатеричный код обозначать префиксом $. Поэтому именно это обозначение использовано в колонке «Выполняемое действие». Символ «(» в колонке признаков означает, что данная команда устанавливает отмеченный признак, но значение признака (0 или 1) определяется кодом результата команды.
Команды загрузки и пересылки данных
Мнемокод |
Операция |
Выполняемое действие |
Способ адресации |
Влияние на признаки |
|||||
V |
H |
I |
N |
Z |
C |
||||
LDA LDA #opr LDA opr LDA opr LDA opr,x LDA opr,x LDA ,x LDA opr,SP LDA opr,SP |
Загрузить в АСС константу или содержимое ячейки памяти |
A ( (M) |
IMM DIR EXT IX2 IX1 IX SP1 SP2 |
0 |
— |
— |
( |
( |
— |
LDX LDX #opr LDX opr LDX opr LDX opr,x LDX opr,x LDX ,x LDX opr,SP LDX opr,SP |
Загрузить в регистр Х константу или содержимое ячейки памяти |
X ( (M) |
IMM DIR EXT IX2 IX1 IX SP1 SP2 |
0 |
— |
— |
( |
( |
— |
LDHX LDHX #opr LDHX opr LDНX opr LDНX opr,x LDНX opr,x LDНX ,x LDНX opr,SP |
Загрузить в индексный регистр Н:X двухбайтную константу или содержимое двух ячеек памяти |
H:X ((M:M+$0001) |
IMM DIR EXT IX2 IX1 IX SP1 |
0 |
— |
— |
( |
( |
— |
STA STA opr STA opr STA opr,X STA opr,X STA ,X STA opr,SP STA opr,SP |
Запомнить содержимое аккумулятора АCC в ячейке памяти |
M ( (A) |
DIR EXT IX2 IX1 IX SP1 SP2 |
0 |
— |
— |
( |
( |
— |
STX STX opr STX opr STX opr,X STX opr,X STX ,X STX opr,SP STX opr,SP |
Запомнить содержимое регистра X в ячейке памяти |
M ( (X) |
DIR EXT IX2 IX1 IX SP1 SP2 |
0 |
— |
— |
( |
( |
— |
STHX STHX opr STHX opr STНX opr,SP |
Запомнить содержимое индексного регистра H:X в двух ячейках памяти |
(M:M+$0001) ( (H:X) |
DIR EXT SP1 |
0 |
— |
— |
( |
( |
— |
MOV MOV opr1,opr2 MOV #opr1,opr2 MOV opr1,X+ MOV X+,opr2 |
Переслать данные из одной ячейки памяти в другую |
(M)opr2 ( (M)opr1 H:X ( (H:X)+$0001 в двух последних командах |
DIR и DIR IMD и DIR DIR и IX+ IX+ и DIR |
0 |
— |
— |
( |
( |
— |
TAX |
Переслать содержимое аккумулятора АСС в регистр Х |
X ( (A) |
INH |
— |
— |
— |
— |
— |
— |
TXA |
Переслать содержимое регистра Х в аккумулятор АСС |
A ( (X) |
INH |
— |
— |
— |
— |
— |
— |
TAP |
Переслать содержимое аккумулятора АСС в регистр признаков CCR |
CCR ( (A) |
INH |
( |
( |
( |
( |
( |
( |
TPA |
Переслать содержимое регистра признаков в аккумулятор АСС |
A ( (CCR) |
INH |
— |
— |
— |
— |
— |
— |
TSX |
Переслать увеличенное на 1 содержимое указателя стека SP в индексный регистр H:X |
H:X ( (SP)+$0001 |
INH |
— |
— |
— |
— |
— |
— |
TXS |
Переслать уменьшенное на 1 содержимое индексного регистра H:X в указатель стека SP |
(SP) ( (H:X)–$0001 |
INH |
— |
— |
— |
— |
— |
— |