Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Eom_part1.doc
Скачиваний:
0
Добавлен:
28.08.2019
Размер:
411.65 Кб
Скачать

3.1.Група команд пересилки данних

В с

ОЗП

данних

РЗП

і команди пересилки данних в ОЕОМ виконуються з використанням акку-мулятора (рис.6). Дані можуть пересилатись між аккумулятором і 8-ма робо-чими регістрами кожного банку РЗП з прямою адресацією.

Рпзп Програм і

констант (#d)

MOV

ADD MOV MOV

MOV ADD ADD

MOVP ANL ANL

MOVP3 ORL ORL

MOVD ANL ORL XRL

ANLD ORL XRL XCH

Аккумулятор

Таймер

ССП

ORLD XRL XCH XCHD MOVX

Зовнішні

порти ВВ Зовнішня

(P4-P7) MOV IN MOV пам’ять

OUTL та ПВВ

BB

Порт р1

Порт р2

Порт BUS

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

од: [BRr]

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

од: [20] для R0 та [21] для R1.

Алгоритм (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.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]