2
Ps @= A[3..0] ORLD
Ps, A 100011ss 2
Ps |= A[3..0]
Арифметические команды (таблица 3) немногочисленны и предназначены для обработки восьмибитовых целых двоичных чисел. При сложении операнд-приемник всегда аккумулятор, одресуемый неявно. Для организации вычитания необходимо перевести вычитаемое как отрицательное число в дополнительный код и сложить его с уменьшаемым. Команда сложение с учетом переноса позволяет выполнять суммирование многобайтовых чисел. Команды сдвига в качестве операнда используют только аккумулятор, который адресуется неявно, и позволяют умножить и разделить на 2 в целой степени и позиционировать разряды в нужное положение. Например:
;Прибавление OP1.X += OP2,
;где: X - битовое поле, размещенное в OP1[7..4],
;OP2 - операнд
;Считается, что переполнение поля X невозможно
MOV R0, #OP2 ; R0 = адрес OP2
MOV A, |
@R0 ; A = (OP2) |
|
RL |
A |
; позиционирование копии OP2 против поля X |
RL |
A |
; |
RL |
A |
; |
RL |
A |
; |
MOV R0, |
#OP1 ; R0 = адрес OP1 |
|
ADD A, |
@R0 ;подсуммирование копии OP1 к полю X |
|
При использовании комады перестановки тетрад программа получается короче:
MOV R0, |
#OP2 |
; R0 = адрес OP2 |
MOV A, |
@R0 ; A = (OP2) |
|
SWAP A |
|
; позиционирование копии OP2 против |
поля X |
|
|
MOV R0, |
#OP1 |
; R0 = адрес OP1 |
ADD A, |
@R0 |
;подсуммирование копии OP1 к полю X |
Код
команды
Операнд Машинный код команды Число циклов Действие
INC
A 00010111 1
A += 1 INC Rn
00011nnn
1
Rr += 1 INC @Rr 0001000r
1
D(Rr) += 1 DEC
A 00000111 1
Rr -= 1
DEC
Rn 11001nnn
1
Rr -= 1
ADD A, Rn
01101nnn
1
Rr += Rr ADDC A, Rn 01111nnn
1
Rr += Rr+(C) ADD
A, @Rr 0110000r
1
Rr += D(Rr) ADDC
A, @Rr 0111000r
1
Rr += D(Rr)+C ADD
A, #d 00000011 2
Rr += данные
ADDC A, #d 00010011 2
Rr += данные+(C) DA
A 01010111 1
A[3..0]>9||AC>1) ? C(Rr=Rr + 6; A[3..0]>9 || C>1 ? C (Rr = Rr + 60h RR
A 01110111 1
A = A[0])((A[7..1]) RL
A
11100111
1
Rr =(A[6..0])((A[7]) RRC
A 01100111 1
Rr((C) = (C) ( Rr RLC
A
11110111
1
(C)(Rr= Rr((C) SWAP
A 01000111 1
Rr=A[7..0]# A[15..8]
Изменение естественного порядка следования команд выполняется по специальным командам перехода. К этой группе команд в МК относятся команды безусловного перехода JMP и JMPP, организации цикла DJNZ, обращения к подпрограмме CALL, возврата из подпрограммы RET, возврата с восстановлением PSW RETR, а также большая группа команд ветвления. Все эти команды приведены в таблицах 4 и 5. В большинстве команд прямо указывается адрес перехода, причем в теле команды при этом содержится 8 (ad8) или 11 (ad11) бит адреса перехода.
Команда JMP позволяет передать управление в любое место 2048байтного банка памяти программ. Номер банка памяти программ определяется флагом DBF, значение которого копируется в старший бит счетчика команд (РС11) при выполнении команды JMP или CALL. Для перехода из нулевого банка памяти программ в первый недостаточно только установить флаг DBF, необходимо также выполнить команду перехода JMP, которая и изменит значение старшего бита счетчика команд.
Все остальные команды (кроме команд возврата) содержат только восемь младших бит адреса перехода. При этом оказывается возможным осуществить переход только в пределах одной страницы памяти программ (256 байт). Если команда короткого перехода расположена на границе двух страниц (т.е. первый байт команды на одной странице, а второй - на следующей), то переход будет выполнен в пределах той страницы, где располагается второй байт команды. Для условного перехода с одной страницы на другую можно воспользоваться тандемом из команды условного перехода и длинного безусловного перехода (JMP).
Мнемокод команды Операнд Машинный код
команды Число циклов Действие
JMP ad11
a10a9a810100 2
(PC[10..0]) = ad11 (PC[11]) = (DBF) JMPP
@A
10110011
2
(PC[7..0]) = ((A)) DJNZ
Rn, ad8
11101nnn
2
(Rn) -= (Rn);
(Rn != 0) ? (PC)=ad8 CALL
ad11 a10a9a810100 2
((SP)) = (PC):(PSW[7..4 ]); (SP) ++;
(PC) = ad11; (PC[11]) = (DBF) RET
10000011
2
(SP) -= (SP); (PC) = ((SP)) RETR
10010011
2
(SP) -= (SP); (PC) = ((SP);
(PSW[7..4]) = ((SP))
| 05_Холера |
| 10.4. Исследование регистров |
| 1112 |
| 12 |
| 1568 |
| 1673 |
| 17 |
| 1703 |
| 1885 |
| 2. Генераторы постоянного тока |