- •Шина керування (Control bus)
- •1.Організація однокристальних еом
- •1.3 Організація вводу/виводу інформації
- •1.4. Блок керування
- •1.5. Логічна схема умовних переходів
- •1.6.Режим преривання
- •1.7.Таймер/лічильник
- •2.Повноекраний налагоджувач ассемблерних програм для однокристальних еом кр1816ве48
- •2.2.Команди налагоджувача.
- •2.3.Повноекранне редагування.
- •2.4.Режим Ассемблера.
- •2.5. Робота з точками преривання.
- •3.Система команд оеом кр1816
- •3.1.Група команд пересилки данних
- •Рпзп Програм і
- •Порт р1
- •Порт р2
- •3.2.Група команд арифметичних та логічних операцій
- •3.3.Група команд вводу-виводу інформації.
- •3.4.Група команд передачі керування.
- •3.5.Група команд операцій з таймером
- •3.6.Група команд керування режимом роботи оеом
- •4.Приклади написання програм для оеом кр1816 ве48
- •4.1. Приклади використання команд передачі данних
- •4.2. Приклади використання команд арифметичних операцій.
- •4.3. Приклади використання команд логічних операцій
- •4.4. Приклади використання команд передачі керування і команд керування режимом оеом
3.1.Група команд пересилки данних
В
с
ОЗП данних
РЗП
констант
(#d)Рпзп Програм і
MOV
ADD MOV MOV
MOV ADD ADD
MOVP ANL ANL
MOVP3 ORL ORL
MOVD ANL ORL XRL
ANLD ORL XRL XCH
Аккумулятор
Таймер
ССП
Зовнішні
порти ВВ Зовнішня
(P4-P7) MOV IN MOV пам’ять
OUTL та ПВВ
BB
Порт
BUSПорт р1
Порт р2
ANL
ORL
Рис.6.
Обмін з внутрішнім ОЗП проводиться з використанням побічних адресів, що знаходяться в регістрах RO або R1 активного банка РЗП. Крім того, регістри RO, R1 являються регістрами побічних адресів при роботі з зовнішньою пам’ят-тю. Команди пересилки данних всередині ОЕОМ виконуються за один машин-ний цикл, а обмін з зовнішньою пам’яттю виконується за два машинних цикли.
Табл.1.
Rr |
MOV A,R |
MOV R,A |
XCH A,R |
MOV R,#d |
INC R |
DEC R |
DJNZ R |
ADD A,R |
ADDC A,R |
ANL A,R |
ORL A,R |
XRL A,R |
RO R1 R2 R3 R4 R5 R6 R7 |
F8 F9 FA FB FC FD FE FF |
A8 A9 AA AB AC AD AE AF |
28 29 2A 2B 2C 2D 2E 2F |
B8 B9 BA BB BC BD BE BF
|
18 19 1A 1B 1C 1D 1E 1F |
C8 C9 CA CB CC CD CE CF
|
E8 E9 EA EB EC ED EE EF |
68 69 6A 6B 6C 6D 6E 6F |
78 79 7A 7B 7C 7D 7E 7F |
58 59 5A 5B 5C 5D 5E 5F |
48 49 4A 4B 4C 4D 4E 4F |
D8 D9 DA DB DC DD DE DF |
Описання машинних команд.
Описання кожної машиної команди складається з формату, коду, алгоритма і часу її виконання.
В частині “формат” приводиться вміст полів “Мнемокод “ та ”Аргументи” машинної команди при її записі в форматі продовження мови Ассемблера.
В частині “Код” приводиться двійковий код машиної команди.
В чстині “Алгоритм” приводиться символічние описання операції, виконуєме машинною командою.
В частині “Час” приводиться кількістьциклів ОЕОМ, необхідних для виконання машинної команди. Час циклу вихначається по слідуючій формулі:
Tcy=15/fBQ1,
де tcy-час циклу, мкс; fBQ1 –частота сигналів тактового генератора.
Команди:
MOV A, Rr.
По цій команді вміст робочого регістра Rr пересилається в аккумулятор А.
Формат:MOV A, <Rr> .Rr-ім’я робочого регістру R0-R7.
Код:[FRr]
1
1 1 1 1 r
r r r
Алгоритм: <A><Rr>
Час:1 цикл.
MOV @Rr,A
Передати вміст аккумулятора в пам’ять данних з побічною адресацією.
По цій команді вміст аккумулятора передається в елемент внутрішньої пам’яті по адресі, що задаєтся розрядами 0-5 регістра Rr. Вміст регістра при цьому не змінюється.
Код:[A0] для R0 i [A1] для R1.
1
0 1 0 0 0 0 r
Значення молодшого розряду кода r=0 для регістра побічних адресів R0 і r=1 для R1.
Алгоритм: ((Rr))(A).
Час:1 цикл.
MOV A,#d
Безпосередній операнд передається в аккумулятор.
Код: [23]
0 0 1 0 0 0 1 1
d0
– d7
Алгоритм (A) d.
Час: 2 цикла.
MOV Rr,#d
Безпосередні данні передаються в регістр.
К
1
0 1 1 1 r
r r
d0
-d7
Алгоритм: (Rr)d.
MOV Rr,A
Вміст аккумулятора передаєтьсяв регістр.
Код:[Arr]
1
0 1 0 1 r
r r
Алгоритм: (Rr)(A)
Час:1цикл.
MOV A,@Rr
Завантажити в аккумулятор вміст елемента памяті з побічною адресацією. По цій команді вміст елемнта внутрішньої памяті данних, адресуємої розрядами 0-5 регістра Rr, передається в аккумулятор. Вміст регістра Rr не змінюється.
Код:[80] для R0 i [81] для R1.
Д
1
1 1 1 0 0 0 r
r=0 для R0 і r=1 для R1.
Алгоритм (A)((Rr)).
Час:1 цикл.
MOV @Rr,#d
Передати безпосередній операнд в память. Безпосередні данні d пересилаються в внутрішній елемент памяті данних, що адресується вмістом робочого регістру Rr.
Код:[B0] для R0 i [81] для R1.
1
0 1 1 0 0 0 r
d0
–d7
Алгоритм: ((Rr))d.
Приклад: необхідно записати в внутрішнє ОЗП шістнадчятирічне число 1С3F в елементи з адресами 41 і 42.
LOADM: MOV R0,#41 ; завантаження в R0 числа 41
MOV @R0,#1CH ; загрузка 1С велемент 41
INC R0 ; (R0)(R0)+1
MOV @R0,#3FH ; завантаження 3F в елемент 42
MOV A,PSW
Передати вміст слова стану програми в аккумулятор А.
Код: [C7]
1 1 0 0 0 1 1 1
Алгоритм: (A)(PSW), або (A[0-2])(SP); A[3]) 1; (A[4](BS); (A[5]) (FO); (A[6]) (AC); (A[7]) C.
Приклад: передат керування по мітці LL , якщо перемикач банку РЗП (біт 4 ССП) встановлюється в 1.
JBRSET: MOV A,PSW ; передати ССП в аккумулятор
JB4 LL ; перейти, якщо А4=1
MOV PSW,A
Передати вміст аккумулятора в регістр ССП. По цій команді змінюється вміст регістру признаків (ССП). Команда використовується як засіб відновлення стану після преривання або підпрограми і для активізації показника стеку.
Код:[D7]
1 1 0 1 0 1 1 1
Алгоритм (PSW) (A). Порозрядна передача зворотня попередній команді.
MOV A,T
Передається вміст лічильника в аккумулятор.
Код: [42]
0 1 0 0 0 0 1 0
Алгоритм:(А)(Т)
Приклад:передати керування по мітці LABEL , якщо лічильник подій досягне стану 64.
TESIT: MOV A,T ; передати вміст лічильника в аккумулятор
JB6 LABEL ; перейти по мітці, якщо А6 =1.
MOV T,A
Передати вміст аккумулятора в лічильник.
Код:[62]
0 1 1 0 0 0 1 0
Алгоритм: (Т)(А).
Приклад: активізувати та запустити лічильник подій.
INTT: CLR A ; очистити аккумулятор
MOV T,A ; встановити вихідне значення лічильника
STRT CNT ; включити лічильник подій
MOV A,PD
Вміст допоміжного 4-х розрядного порту пересилається в 0-3 розряди аккумулятора А. Розряди 4-7 аккумулятора встановлюються в стан “0”
Код:
0 0 0 0 1 1 p p
Алгоритм: (А[0-3]) (PD); (A[4-7]) 0.
MOV PD,A
Вміст аккумулятора А пересилається в допоміжний 4-х розрядний порт PD.
Код:
0 0 1 1 1 1 р р
Алгоритм: (PD) (A[0-3]).
MOVP A,@A
Передати в аккумулятор данні з поточної сторінки пам’яті програм. По цій команді аккуумулятор адресує елемент РПЗП через розряди 0-7 лічильника команд, тобто в межах однієї сторінки (256 байт). Після одержання аккуму-лятором адресованого байта данних вміст лічильника команд відновлюється. Хотя це і однобайтна команда, але вона виконується за два машинних цикли. В тому випадку, якщо ця команда находиться в елементі з адресою 255 поточної сторінки, побічниа адреса @A адресує елемент на слідуючій сторінці пам’яті програм.
Код:[A3]
1 0 1 0 0 0 1 1
Алгоритм:(PC0-7) (A): (А) (PC).
MOVP3 A,@A
Передати данні з сторінки 3 в аккумулятор.
По цій команді, виконуємій за два машинних цикли, байт данних з третьої сторінки пам’яті програм з елемента, адресуємого аккумулятором, через лічильник команд передається в аккумулятор. По закінченні операції вміст лічильника команд відновлюється.
Код:[E3]
1 1 1 0 0 0 1 1
Алгоритм: (PC0-7) (A); (PC8-11) 0011; (A) ((PC)).
Приклад: необхідно найти ASC11-еквівалент шістнадцятирічного коду по таблиці, що розміщена на початку сторінки 3.
ABL: MOV A,#0B8H ; завантажити в аккумулятор В816 (10111000)
ANL A,#7FH ; замаскувати старший біт (00111000), так як ASC11
символи представляються 7-бітним кодом.
MOVP3 A,@A ;передати вміст елемента 3816 сторінки 3 в акку-
мулятор (8 в коді ASC11)
MOVX A,@Rr
Передати вміст зовнішньої памяті в аккумулятор з побічною адресацією.
Код:[80] для R0 та [81] для R1.
1 0 0 0 0 0 0 r
Алгоритм: (A)((Rr)); r=0,1.
MOVX @Rr<A
Передати в зовнішню пам’ять вміст аккумулятора з побічною адресацією.
Код: [90] для R0 i [91] для R1.
1 0 0 1 0 0 0 r
Алгоритм: ((Rr))(A); r=0-1.
XCH A,Rr
Обміняти вміст аккумулятора й регістра.
Код:[2R]
0 0 1 0 0 r r r
Алгоритм: (A)(Rr) r=0-7.
Приклад: переслати поточне значення таймера в регістр 5 без пропажі вмісту аккумулятора.
XTHTR: XCH A,R5 ; обміняти вміст R5 і аккумулятора
MOV A,T ; передати вміст лічильника в А
XCH A,R5 ; обміняти вміст R5 і аккумулятора.
XCH A,@Rr
Обміняти вміст аккумулятора та елемента пам’яті.
Вміст аккумулятора і елемента пам’яті ( внутрішнього ОЗП), адресуєме розрядами 0-5 регістра R міняються містами. Вміст регістра R не змінюється.
К
0 0 1 0 0 0 r r
Алгоритм (A)((Rr)); r= 0-1
Приклад: підвищит на 1 вміст елемента 40
INC40: MOV R0,#40 ; завантажити регістр побічної адреси
XCH A,@R0 ; обміняти вміст А та елемента 40
INC A ; (A)(A)+1
XCH A,@40 ; обміняти ще раз
XCHD A,@Rr
Обміняти молодші тетради аккумулятора та елемента памяті.
По команді виконується взаємний обмін бітами 0-3. Вміст регістра R, розряди 4-7 аккумулятора та елемента пам’яті залишаються незмінними. Команда вико-ристовується при обробці десятичних чисел.
Код:[30]для R0 та [31] для R1
0
0 1 1 0 0 0 r
Алгоритм: (A0-3) ((Rr0-3)); r=0-1.