Команды загрузки и пересылки данных
Команды этой группы осуществляют перемещение данных между ячейками памяти и регистрами центрального процессора (табл.1.2). Отличительная особенность команд загрузки и пересылки CPU08 – установка признаков нуля Z и знака N в соответствие со значением перемещаемого числа.
Команда MOV выполняет пересылку данных из одной ячейки памяти в другую, минуя регистры центрального процессора. Команда MOV может быть использована в одной из четырех модификаций:
MOV #data,adr | ;загрузить константу в прямоадресуемую ячейку памяти |
MOV adr1,adr2 | ;переслать данные из одной прямоадресуемой ячейки памяти в другую прямоадресуемую |
MOV x+, adr | ;переслать данные из ячейки памяти, адрес которой указан в индексном регистре H:X, в прямоадресуемую ячейку памяти. Содержимое H:X увеличивается на 1 после пересылки. |
MOV adr,x+ | ;переслать данные из прямоадресуемой ячейки памяти в ячейку, адрес которой указан в индексном регистре H:X. Содержимое H:X увеличивается на 1 после пересылки. |
Отметим, что одна из ячеек памяти (источник или приемник операнда) в формате команды обязательно прямоадресуемая, т.е. ее адрес может находиться в пределах от $00 до $FF. Именно это адресное пространство в МК семейства HCS08 занимают регистры специальных функций периферийных модулей.
Табл.1.2. Команды загрузки и пересылки данных.
Мнемокод | Операция | Выполняемое действие | Способ адресации
| Влияние на признаки | |||||||
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 | - | - | b | b | - | ||
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 | - | - | b | b | - | ||
LDHX LDHX #opr LDHXopr LDНXopr 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 | - | - | b | b | - |
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 | - | - | b | b | - |
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 | - | - | b | b | - |
STHX STHX opr STHX opr STНX opr,SP | Запомнить содержимое индексного регистра H:X в двух ячейках памяти | (M:M+$0001) (H:X) | DIR EXT SP1 | 0 | - | - | b | b | - |
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 | - | - | b | b | - |
TAX | Прислать содержимое аккумулятора АСС в регистр Х. | X (A) | INH | - | - | - | - | - | - |
TXA | Переслать содержимое регистра Х в аккумулятор АСС | A (X) | INH | - | - | - | - | - | - |
TAP | Переслать содержимое аккумулятора АСС в регистр признаков CCR | CCR (A) | INH | b | b | b | b | b | b |
TPA | Переслать содержимое регистра признаков в аккумулятор АСС | A (CCR) | INH | - | - | - | - | - | - |
TSX | Переслать увеличенное на 1 содержимое указателя стека SP в индексный регистр H:X | H:X (SP)+$0001 | INH | - | - | - | - | - | - |
TXS | Переслать уменьшенное на 1 содержимое индексного регистра H:X в указатель стека SP | (SP) (H:X)-$0001 | INH | - | - | - | - | - | - |
Арифметическиекоманды
|
|
Данную группу образуют 14 команд (табл.1.3), выполняющие операции сложения (ADD и ADC), вычитания (SUB и SBC), инкремента и декремента (INC и DEC), однобайтового и двухбайтового сравнения, умножения и деления (MUL и DIV). Команды сложения (ADD и ADC), вычитания (SUB и SBC) и однобайтового сравнения (CMP и CPX) могут быть использованы с восемью различными способами адресации. Сравнение двухбайтового индексного регистра H:X может быть выполнено с двухбайтовой константой, которая задана во втором и третьем байтах команды, или с содержимым двух ячеек памяти. Команда умножения MUL выполняет операцию целочисленного беззнакового умножения. Сомножители расположены в регистрах АCC и Х, двухбайтовое произведение в X:ACC. Команда деления DIV выполняет целочисленное беззнаковое деление двухбайтового делимого (H:ACC) на однобайтовый делитель (Х). Целое частное расположено в АCC, остаток - в Н. Делитель Х сохраняется без изменения. Следует обратить внимание на формат представления операнда в командах AIX и AIS. Однобайтовый операнд должен быть представлен в дополнительном коде со знаком:
|
|
AIX #$FF ;Вычесть единицу из содержимого двухбайтового индексного регистра H:X.
AIX #$80 ;Вычесть 128 из содержимого двухбайтового индексного регистра H:X.
AIS #$01 ;Увеличить на единицу указатель стека SP.
AIS #$FF ;Вычесть единицу из указателя стека SP.
Несмотря на то, что инструкции инкремента и декремента над содержимым двухбайтовых регистров центрального процессора в системе команд CPU08 отсутствуют, эти операции могут быть выполнены с использованием команд AIX и AIS.
|
|
Табл.1.3. Арифметические команды.
Мнемокод | Операция | Выполняемое действие | Способ адресации | Влияние на признаки | |||||
V | H | I | N | Z | C | ||||
ADD ADD #opr ADD opr ADD opr ADD opr,X ADD opr,X ADD ,X ADD opr,SP ADD opr,SP | Сложить содержимое аккумулятора АСС с байтом данных памяти М (или константой). Результат поместить в АСС. | A (A) + (M) | IMM DIR EXT IX2 IX1 IX SP1 SP2 | b | b | - | b | b | b |
ADC ADC #opr ADC opr ADC opr ADC opr,X ADC opr,X ADC ,X ADC opr,SP ADC opr,SP | Сложить содержимое аккумулятора АСС с байтом данных памяти М (или константой) и значением бита переноса С. Результат поместить в АСС. | A (A) + (M) + (С) | IMM DIR EXT IX2 IX1 IX SP1 SP2 | b | b | - | b | b | b |
SUB SUB #opr SUB opr SUB opr SUB opr,X SUB opr,X SUB ,X SUB opr,SP SUB opr,SP | Вычесть байт данных памяти М (или константу) из содержимого аккумулятора АСС. Результат поместить в АСС. | A (A) - (M) | IMM DIR EXT IX2 IX1 IX SP1 SP2 | b | - | - | b | b | b |
SBC SBC #opr SBC opr SBC opr SBC opr,X SBC opr,X SBC ,X SBC opr,SP SBC opr,SP | Вычесть байт данных памяти М (или константу) и бит переноса С из аккумулятора АСС. Результат поместить в АСС. | A (A) - (M) – (С) | IMM DIR EXT IX2 IX1 IX SP1 SP2 | b | - | - | b | b | b |
MUL | Умножить содержимое АСС на содержимое регистра Х. Произведение представлено в двухбайтовом формате. Старший байт содержится в регистре Х, младший байт – в АСС. | X:A (X) ´ (A) | INH | - | 0 | - | - | - | 0 |
DIV | Разделить двухбайтовое делимое на однобайтовый делитель. Старший байт делимого находится в регистре Н, младший байт – в АСС. Однобайтовый делитель находится в регистре Х. Целое частное помещается в АСС, остаток от деления в – регистр Н. | A (H:A)/(X) H Остаток | INH | - | - | - | - | b | b |
CMP CMP #opr CMP opr CMP opr CMP opr,X CMP opr,X CMP ,X CMP opr,SP CMP opr,SP | Сравнить содержимое аккумулятора АСС с байтом памяти М (или константой). По результату сравнения установить признаки. Содержимое АСС и ячейки памяти М после операции не изменяется. | (A) – (M) | IMM DIR EXT IX2 IX1 IX SP1 SP2 | b | - | - | b | b | b |
CPX CPX #opr CPXopr CPXopr CPX ,X CPX opr,X CPX opr,X CPX opr,SP CPX opr,SP | Сравнить содержимое регистра Х с байтом памяти М (или константой). По результату сравнения установить признаки. Содержимое регистра Х и ячейки памяти М после операции не изменяется. | (Х) - (М) | IMM DIR EXT IX2 IX1 IX SP1 SP2 | b | - | - | b | b | b |
CPHX CPHX #opr CPHXopr CPHXopr CPНX opr,SP | Сравнить содержимое индексного регистра H:X с двухбайтовой константой или содержимым двух ячеек памяти М:М+1. По результату сравнения установить признаки. Содержимое H:X и ячеек памяти после операции не изменяется. | (H:X) – (M:M+$0001) | IMM DIR EXT SP1 | b | - | - | b | b | b |
INC INC opr INCA INCX INC opr,X INC ,X INC opr,SP | Увеличить на 1 содержимое аккумулятора АСС, регистра Х, ячейки памяти М. | M (M) + $01 A (A) + $01 X (X) + $01 M (M) + $01 M (M) + $01 M (M) + $01 | DIR INH INH IX1 IX SP1 | b | - | - | b | b | - |
DEC DEC opr DECA DECX DEC opr,X DEC ,X DEC opr,SP | Уменьшить на 1 содержимое аккумулятора АСС, регистра Х, ячейки памяти М. | M (M) - $01 A (A) - $01 X (X) - $01 M (M) - $01 M (M) - $01 M (M) - $01 | DIR INH INH IX1 IX SP1 | b | - | - | b | b | - |
DAA | Десятичная коррекция содержимого аккумулятора. | (A)10 | INH | - | - | - | b | b | b |
AIX AIX #opr | Сложить содержимое индексного регистра Н:Х с однобайтовой константой, представленной в дополнительном коде со знаком. Результат поместить в Н:Х | H:X (H:X) + #opr | IMM | - | - | - | - | - | - |
AIS AIS #opr | Сложить содержимое указателя стека SP и однобайтовой константой, представленной в дополнительном коде со знаком. Результат поместить в SP. | SP (SP) + #opr | IMM | - | - | - | - | - | - |
Дата добавления: 2018-04-04; просмотров: 390; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!