October 18 2017 02:53:23
Навигация
Авторизация
Логин

Пароль



Вы не зарегистрированы?
Нажмите здесь для регистрации .

Забыли пароль?
Запросите новый здесь.
АРИФМЕТИЧЕСКИЕ КОМАНДЫ
МИКРОКОНТРОЛЛЕРЫ СЕМЕЙСТВА НС08

Данную группу образует 14 команд (Табл. 3.8), выполняющих операции сложения (ADD и ADC), вычитания (SUB и SBC), инкремента и декремента (INC и DEC), однобайтового и двухбайтового сравнения, умножения и деления (MUL и DIV). Команды сложения (ADD и ADC), вычитания (SUB и SBC) и однобайтового сравнения (СМР и СРХ) могут быть использованы с восемью различными способами адресации. Однако сравнение двухбайтового индексного регистра Н:Х может быть выполнено только с двухбайтовой константой, которая задана во втором и третьем байтах команды, или с содержимым двух ячеек памяти, адрес первой из которых равен $00...$FF. Команда умножения MUL выполняет операцию целочисленного беззнакового умножения. Сомножители расположены в регистрах АСС и X, двухбайтовое произведение - в Н:АСС. Время выполнения операции составляет 5 циклов синхронизации. Команда деления DIV выполняет целочисленное беззнаковое деление двухбайтового делимого (Н:АСС) на однобайтовый делитель (X). Целое частное расположено в АСС, остаток - в Н. Делитель X сохраняется без изменения. Время выполнения операции - 7 циклов синхронизации.

Следует обратить внимание на формат представления операнда в командах AIX и AIS. Однобайтовый операнд должен быть представлен в дополнительном коде со знаком:

AIX #$FF     ;Вычесть единицу из содержимого двухбайтового индексного

;регистра Н:Х.

AIX#$80       ;Вычесть 128 из содержимого двухбайтового индексного

;регистра Н:Х.

AIS #$01       ;Увеличить на единицу указатель стека SP.

AIS #$FF      ;Вычесть единицу из указателя стека SP.

Несмотря на то, что инструкции инкремента и декремента над содержимым двухбайтовых регистров центрального процессора в системе команд CPU08 отсутствуют, эти операции могут быть выполнены с использованием команд AIX и AIS.

Фрагмент программы вычисления однобайтовой контрольной суммы таблицы из однобайтовых чисел:

TABLE:       equ $7000            ; Определить начальный адрес таблицы.

                    org $6E00            ; Определить начальный адрес программы.

                    LDHX #511         ; 3адать число элементов таблицы.

                    CLRA                   ; Очистить регистр контрольной суммы.

ADDLOOP: ADD TABLE,x    ; Получить частичную контрольную сумму.

                      AIX #$FF             ; Уменьшить число элементов на 1.

                      CPHX #0              ; Проверка: все элементы перебраны?

                                                    ; Команда AIX не устанавливает признаки,

                                                    ; поэтому  следует  применить  команду

                                                    ; СРНХ.

                      BPL ADDLOOP  ; Продолжить,  если не все элементы

                                                    ;перебраны.

Табл. 3.8. Арифметические команды

Мнемокод Операция Выполняемое Способ Влияние на признаки


действие адресации V Н I N Z C
ADD
ADD #opr
ADD opr
ADD opr
ADD opr,X
ADD opr,X
ADD ,X
ADD opr,SP
ADDopr.SP
Сложить содержимое аккумулятора АСС с байтом данных памяти М (или константой). Результат поместить в АСС
А¬(А)+(М)

IMM
DIR
ЕХТ
IX2
IX1
IX
SP1
SP2



­
¯



­
¯




-



­
¯



­
¯



­
¯
ADC
ADC #opr
ADC opr
ADC opr
ADC opr,X
ADC opr,X
ADC ,X
ADC opr,SP
ADC opr,SP
Сложить содержимое аккумулятора АСС с байтом данных памяти М (или константой) и значением бита переноса С. Результат поместить в АСС
А¬ (А)+(М)+(С)

IMM
DIR
ЕХТ
IX2
IX1
IX
SP1
SP2



­
¯



­
¯




-



­
¯



­
¯



­
¯
SUB
SUB #opr
SUB opr
SUB opr
SUB opr,X
SUB opr,X
SUB ,X
SUB opr,SP
SUB opr,SP
Вычесть байт данных памяти М (или константу) из содержимого аккумулятора АСС. Результат поместить в АСС
А¬(А)(М)

IMM
DIR
ЕХТ
IX2
IX1
IX
SP1
SP2



­
¯




-




-



­
¯



­
¯



­
¯
SBC
SBC #opr
SBC opr
SBC opr
SBC opr,X
SBC opr,X
SBC ,X
SBC opr,SP
SBC opr,SP
Вычесть байт данных памяти М (или константу) и бит переноса С из аккумулятора АСС. Результат поместить в АСС

А¬ (А)(М)(С)

IMM
DIR
ЕХТ
IX2
IX1
IX
SP1
SP2



­
¯




-




-



­
¯



­
¯



­
¯
MUL

Умножить содержимое АСС на содержимое регистра X. Произведение представлено в двухбайтовом формате. Старший байт произведения содержится в регистре X, младший байт - в АСС
Х:А¬(X)´(А)

INH

-

0

-

-

-

0
DIV

Разделить двухбайтовое делимое на однобайтовый делитель. Старший байт делимого находится в регистре Н, младший байт - в АСС. Однобайтовое делимое находится в регистре X. Целое частное помещается в АСС, остаток от деления - в регистр Н.
А¬(Н:А)/(Х)
Н¬ОСТАТОК

INH




-




-




-




-



­
¯



­
¯
CMP
CMP #opr
CMP opr
CMP opr
CMP opr,X
CMP opr,X
CMP ,X
CMP opr,SP
CMP opr,SP
Сравнить содержимое аккумулятора АСС с байтом памяти М (или константой). По результату сравнения установить признаки. Содержимое АСС и ячейки памяти М после операции не изменяется.



(А)(М)

IMM
DIR
ЕХТ
IX2
IX1
IX
SP1
SP2



­
¯




-




-



­
¯



­
¯



­
¯
СРХ
СРХ #opr
СРХ opr
СРХ opr
СРХ ,Х
СРХ opr
СРХ opr
CPX opr,SP
CPX opr,SP
Сравнить содержимое регистра X с байтом памяти М (или константой). По результату сравнения установить признаки. Содержимое регистра X и ячейки памяти М после операции не изменяется
(X)(М)

IMM
DIR
ЕХТ
IX2
IX1
IX
SP1
SP2



­
¯




-




-



­
¯



­
¯



­
¯
СРНХ
СРНХ #opr
СРНХ opr
Сравнить содержимое индексного регистра Н:Х с двухбайтовой константой или содержимым двух ячеек памяти М:М + 1. По результату сравнения установить признаки. Содержимое Н:Х и ячеек памяти после операции не изменяется
(Н:Х)-(М:М+$0001)

IMM
DIR



­
¯




-




-



­
¯



­
¯



­
¯
INC
INC opr
INCA
INCX
INC opr,X
INC ,X
INC opr,SP
Увеличить на 1 содержимое аккумулятора АСС, регистра X, ячейки памяти М
М¬(М)+$01
A¬(A)+$01
X¬(X)+$01
М¬(М)+$01
М¬(М)+$01
М¬(М)+$01

DIR
INH
INH
IX1
IX
SP1



­
¯




-




-



­
¯



­
¯




-
DEC
DEC opr
DECA
DECX
DEC opr,X
DEC ,X
DEC opr,SP
Уменьшить на 1 содержимое аккумулятора АСС, регистра X, ячейки памяти М
М¬(М)+$01
A¬(A)+$01
X¬(X)+$01
М¬(М)+$01
М¬(М)+$01
М¬(М)+$01

DIR
INH
INH
IX1
IX
SP1



­
¯




-




-



­
¯



­
¯




-
DAA

Десятичная коррекция аккумулятора
(А)10

INH


U


-


-

­
¯

­
¯

­
¯
AIX
AIX #opr
Сложить содержимое индексного регистра Н:Х с однобайтовой константой, представленной в дополнительном коде со знаком. Результат поместить в Н:Х
Н:Х¬ (Н:Х)+(16<<М)

IMM


-


-


-


-


-


-
AIS
AIS #opr
Сложить содержимое указателя стека SP с однобайтовой константой, представленной в дополнительном коде со знаком. Результат поместить в SP
SP¬ (SP)+(16<<М)

IMM


-


-


-


-


-


-

3.3.3. ЛОГИЧЕСКИЕ КОМАНДЫ И ОПЕРАЦИИ СДВИГА

Данную группу образует 15 команд, которые выполняют операции логического И, ИЛИ, Исключающего ИЛИ, различные операции сдвига, операции приема обратного и дополнительного кода. Следует обратить внимание на специальные команды установки признаков без изменения содержимого тестируемых регистров и ячеек памяти (TST и BIT). Все логические команды модифицируют флаги в регистре признаков. Типы инструкций данной группы приведены в Табл. 3.9 и 3.10.

Табл. 3.9. Логические команды

Мнемокод

Операция

Выполняемое действие Способ адресации Влияние на признаки
V Н I N Z C
AND
AND #opr
AND opr
AND opr
AND opr,X
AND oprX
AND ,X
AND opr,SP
ANDopr.SP
Поразрядное логическое И над содержимым аккумулятора АСС и байтом данных М. Результат поместить в АСС
А¬(А)&(М)

IMM
DIR
ЕХТ
IX2
IX1
IX
SP1
SP2




0




-




-



­
¯



­
¯




-
ORA
ORA #opr
ORA opr
ORA opr
ORA opr,X
ORA opr,X
ORA ,X
ORA opr,SP
ORA opr,SP
Поразрядное логическое ИЛИ над содержимым аккумулятора АСС и байтом данных М. Результат поместить в АСС
А¬(А)|(М)

IMM
DIR
ЕХТ
IX2
IX1
IX
SP1
SP2




0




-




-



­
¯



­
¯




-
EOR
EOR #opr
EOR opr
EOR opr
EOR opr,X
EOR opr,X
EOR ,X
EOR opr,SP
EOR opr,SP
Поразрядное исключающее ИЛИ над содержимым аккумулятора АСС и байтом данных М. Результат поместить в АСС
А¬(А)Å(М)

IMM
DIR
ЕХТ
IX2
IX1
IX
SP1
SP2




0




-




-



­
¯



­
¯




-
COM
COM opr
COMA
COMX
COM opr,X
COM ,X
COM opr,SP
Инверсия содержимого аккумулятора АСС, или регистра X, или ячейки памяти М


M¬(ØM)=$FF-(M)
A¬(ØA)=$FF-(M)
X¬(ØX)=$FF-(M)
M¬(ØM)=$FF-(M)
M¬(ØM)=$FF-(M)
M¬(ØM)=$FF-(M)

DIR
INH
INH
IX1
IX
SP1




0




-




-



­
¯



­
¯




1
NEG
NEG opr
NEGA
NEGX
NEG opr,X
NEG ,X
NEG opr,SP
Получение дополнитель-ного кода содержимого аккумулятора АСС, или регистра X,  или ячейки памяти М
M¬-(M)=$00-(M)
A¬-(A)=$00-(M)
X¬-(X)=$00-(M)
M¬-(M)=$00-(M)
M¬-(M)=$00-(M)
M¬-(M)=$00-(M)

DIR
INH
INH
IX1
IX
SP1



­
¯




-




-



­
¯



­
¯



­
¯
CLR
CLR opr
CLRA
CLRX
CLRH
CLR opr,X
CLR ,X
CLR opr,SP
Очистить (установить в 0) аккумулятор АСС, или регистр X, или регистр Н, или ячейку памяти М
M¬$00
A¬$00
X¬$00
H¬$00
M¬$00
M¬$00
M¬$00

DIR
INH
INH
INH
IX1
IX
SP1




0




-




-




0




1




-
BIT
BIT #opr
BIT opr
BIT opr
BiT opr,X
BIT opr,X
BIT ,X
BIT opr,SP
BIT opr,SP
Выполняет операцию поразрядного логического И над содержимым аккумулятора АСС и байтом памяти М. Результат операции никуда не записывается. По результату операции устанавливают-ся признаки N и Z.
(А)&(М)

IMM
DIR
ЕХТ
IX2
IX1
IX
SP1
SP2




0




-




-



­
¯



­
¯




-
TST
TST opr
TSTA
TSTX
TST opr,X
TST ,X
TST opr.SP
Устанавлива-ет признаки N и Z по содержимому аккумулятора АСС, или регистра X, или ячейки памяти М. Содержимое последних не изменяется
(А)-$00
(Х)-$00
(М)-$00

DIR
INH
INH
IX1
IX
SP1




0




-




-



­
¯



­
¯




1
NSA Поменять местами тетрады (полубайты) аккумулятора АСС
А¬ (А[3:0]:А[7:4])

INH

-

-

-

-

-

-

Табл. 3.10, Команды сдвигов

Мнемокод Операция
Выполняемое действие
Способ адресации Влияние на признаки
V Н I N Z C
ASL
ASLopr
ASLA
ASLX
ASLopr,X
ASL ,X
ASL opr,SP

Сдвиг влево содержимого аккумулятора АСС, или регистра X, или байта памяти М. В бит b0 загружается 0, бит b7 загружается в бит переноса С
img003

DIR
INH
INH
IX1
IX
SP1



­
¯




-




-



­
¯



­
¯



­
¯
ASR
ASR opr
ASRA
ASRX
ASR opr,X
ASR opr,X
ASR opr,SP

Сдвиг вправо содержимого аккумулятора АСС, или регистра X, или байта памяти М . Бит b7 не изменяется, бит b0 загружается в бит переноса С
img004

DIR
INH
INH
IX1
IX
SP1



­
¯




-




-



­
¯



­
¯



­
¯
LSL
LSL opr
LSLA
LSLX
LSL opr,X
LSL ,X
LSL opr,SP

Сдвиг влево содержимого аккумулятора АСС, или регистра X, или байта памяти М. В бит b0 загружается 0, бит b7 загружается в бит переноса С (аналог ASL)
img005

DIR
INH
INH
IX1
IX
SP1



­
¯




-




-



­
¯



­
¯



­
¯
LSR
LSR opr
LSRA
LSRX
LSR opr,X
LSR.X
LSR opr,SP

Сдвиг вправо содержимого аккумулятора АСС, или регистра X, или байта памяти М. В бит b7 загружается 0, бит b0 загружается в бит переноса С
img006

DIR
INH
INH
IX1
IX
SP1



­
¯




-




-




0



­
¯



­
¯
ROL
ROL opr
ROLA
ROLX
ROL opr,X
ROL ,X
ROL opr.SP

Циклический сдвиг влево содержимого аккумулятора АСС, или регистра X, или байта памяти М через бит переноса С
img007

DIR
INH
INH
IX1
IX
SP1



­
¯




-




-



­
¯



­
¯



­
¯
ROR
RORopr
RORA
RORX
ROR opr,X
ROR ,X
ROR opr.SP

Циклический сдвиг вправо содержимого аккумулятора АСС, или регистра X, или байта памяти М через бит переноса С
img008

DIR
INH
INH
IX1
IX
SP1



­
¯




-




-



­
¯



­
¯



­
¯

Комментарии
Нет комментариев.
Добавить комментарий
Пожалуйста, залогиньтесь для добавления комментария.
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, авторизуйтесьили зарегистрируйтесь для голосования.

Нет данных для оценки.

Время загрузки: 0.03 секунд 2,254,961 уникальных посетителей