Команды загрузки и пересылки данных



Команды этой группы осуществляют перемещение данных между ячейками памяти и регистрами центрального процессора (табл.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; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!