Система программирования микропроцессора серии КР580

На основе МП серии К580 построены малоразрядные микроЭВМ СМ1800, программируемые контроллеры для логического (циклического) управления и программируемые регуляторы для ди­намического и технологического управления в СЧПУ, которые ис­пользуются для управления автономными объектами и в качестве фрагментов систем управления ГПС.

Изучив систему программирования МП серии К580, можно лег­ко освоить и программирование других МП и микроЭВМ, так как ба­зовые принципы программирования для всех МП устройств одинако­вы.

 

 

Способы адресации

Для МП К580 различают четыре вида адресации: непосредст­венную, прямую, регистровую и косвенную.

При непосредственной адресации необходимые данные содер­жит сама команда во втором и третьем (если он есть) байтах коман­ды, поэтому она является самой экономичной по объему занимаемой памяти и скорости выполнения операций (рисунок 10).

 

1 байт 2 байт 3 байт
КО Данные Данные
<В1> <В2> <ВЗ>

Рисунок 10 – Непосредственная адресация

 

 

При прямой адресации (рисунок 11) данные содержатся в ячейке ОЗУ, а во втором и третьем байтах команды указывается ее шестна­дцатиразрядный адрес (в байте В2 - младшие 8 разрядов адреса, в байте ВЗ - старшие 8 разрядов адреса).

 

1 байт 2 байт 3 байт  
КО Данные Данные  
<В1> <В2> <ВЗ>  
  ОЗУ
   
  Данные
   
         

Рисунок 11 – Прямая адресация

При регистровой адресации данные хранятся в РОН, а в коман­де указываются коды этих регистров (разряды 0-2 и 3-5 для пары регистров). В разрядах 6,7 указывается код операции КО. Команда однобайтовая (рис. 12).

КО Коды РОН

       
   


           

 
 


РОН
Данные Данные
   

Рисунок 12 – Регистровая адресация

При косвенной адресации данные содержатся в ячейках ОЗУ, шестнадцатиразрядные адреса этих ячеек – в паре РОН, а их коды – в команде. Старший бит адреса памяти записан в первом РОН пары, младший – во втором регистре пары РОН. Обычно используется пара регистров HL, иногда ВС и DE. Команда однобайтовая (рис. 13).

 

КО Коды РОН

       
   


           

 
 


РОН
В С
В Е
Адрес Адрес
H L

ОЗУ
 
Данные
 

Рисунок 13 – Косвенная адресация

Таблица 6- Данные косвенной адресации

Регистр Код Пара регистров Код
А ВС
В DE
С HL
D SP (стек)
Е 01l    
Н    
L    
М (ОЗУ)    

Система команд

По функциональному признаку все команды могут быть разби­ты на пять групп: команды пересылки данных, логические команды, арифметические команды, команды переходов, команды работы со стеком, ввода-вывода и управления МП.

Список основных команд приведен в таблице 7. Полный список команд можно найти в специальной литературе.

 

Таблица 7 – Список основных команд

Группа команд Мнемокод команд Восьмеричный код команды Содержание команды Число байт Признаки результата операций
Z S P C AC
Команды пересылки MOV D,S 1DS (D)(S) - - - - -
MVI D,d 0D6 (D1)d - - - - -
LXI rp, d 0D11 (D1)D - - - - -
LDA a (A) (a) - - - - -
STA a (a) (A) - - - - -
LHLD a L(a), H(a+1) - - - - -
SHLD a (a)L, (a+1) (H) - - - - -
LDAX rp 0D22 A(rp) - - - - -
STAX rp 0D23 ((rp))A - - - - -
XCHG (H)<->(D), (L)<->(E) - - - - -
Арифметические команды ADD S 20S (A) (A)+(S) + + + + +
ADI d (A) (A)+d + + + + +
ADC S 21S (A) (A)+(S)+(C) + + + + +
ACI d (A) (A)+d+(C) + + + + +
DAD rp 0D41 (HL) (HL)+(rp) - - - + -
SUB S 22S (A) (A)-(S) + + + + +
SUI d (A) (A)-d + + + + +
SBB S 23S (A) (A)-(S)-(C) + + + + +
SBI d (A) (A)-d-(C) + + + + +
INR D 0S4 (D) (D)+1 + + + + +
INX rp 0D53 (rp) (rp)+1 - - - - -
DRC D 0D5 (D) (D)-1 + + + - +
DRC rp 0D25 (rp) (rp)-1 - - - - -
DAA Десятичная коррекция + + + + +

 

Продолжение таблицы 7

Группа команд Мнемокод команд Восьмеричный код команды Содержание команды Число байт Признаки результата операций
Z S P C AC
Логические команды ANA S 24S (A)(A)^(S) + + + +
ANI d (A)(A)^d + + + +
XRA S 25S (A)(A)Å(S) + + +
XRI d (A)(A) Åd + + +
ORA S 26S (A)(A)V(S) + + +
ORI d (A)(A)Vd + + +
CMP s 27S (A)-(S) + + + + +
CMI d (A)-d + + + + +
RLC (An+1) (An), (A0) (A7), (C) (A7) - - - + -
RRC (An+1) (An), (AT) (A0) - - - + -
RAL (An) (An+1), (C) (A7), (A0) (C), - - - + -
RAR (An+1) (An), (C) (A0), (A7) (C), - - - + -
STC (C) 1 - - - -
CMC (C) (OC) - - - + -
CMA (A) (OA) - - - - -
Команды переходов JMP a (PC) a - - - - -
Jc a (PC) a, если условие ССС в поле С истинно - - - - -
CALL a (РС) а - - - - -
Cc a (РС) а, если условие ССС в поле С истинно - - - - -
RET Возврат из подпрограммы - - - - -
Rc Возврат из одпрограммы, если условие ССС в поле С истинно - - - - -
PCHL (PC) (H,L) - - - - -
RST n 3n7 Команда повторного старта - - - - -
Команды ввода-вывода IN P (A) (P) - - - - -
OUT P (P) (A) - - - - -
PUSH rp 3D65 ((SP)) (rp) - - - - -
PUSH PSW ((SP)) (A) u (Z,S,P,C,AC) - - - - -
POP rp 3D61 (rp) ((SP)) - - - - -
POP PSW (Z,S,P,C,AC) u (A) ((SP)) + + + + +
XTHL (HL)<->((SP)) - - - - -
SPHL (SP)<->(HL) - - - - -
E1 Разрешение прерывания - - - - -
D1 Запрещение прерывания - - - - -
HLT Остановка - - - - -
NOP Нет операции - - - - -

В таблице 7 приняты следующие обозначения:

rp – регистровая пара;

S – регистр-источник (source);

D – регистр-приемник (destination). Если на позиции S или D стоит 0,1,2,3,4, 5,6,7, то регистрами являются РОН В, С, D, Е, Н, L и М, А соответственно, где М – регистр в памяти (memory), A – аккуму­лятор;

d – (data) - восьми или шестнадцатибитное данное;

а – (address) - шестнадцатибитный адрес памяти;

(...) – содержимое ячейки памяти РОН МП;

(SP) – содержимое указателя стековой памяти;

((SP)) – содержимое ячейки стековой памяти;

D1 = 0, 2, 4, 6 для соответственных регистров РОН В, D, Н, SP;

D2 = 1, 3 для пар регистров ВС, DE;

D3 = 0, 2 для пар регистров ВС, DE;

D4 = 1, 3, 5, 7 для пар регистров ВС, DE, HL, SP;

D5 = 0, 2, 4, 6 для регистров В, D, Н, HL;

D6 = 0, 2, 4 для пар регистров ВС, DE, HL;

n – номер команды повторного старта, n равно от 0 до 7;

р – (port) - 8-битный адрес ПУ;

С – (condition) - условие;

ССС – трехбитный код признака, используемого в командах передачи (табл.8). Цифры в графе 3, записанные в восьмеричном коде, в программе должны представляться в двоичном коде, т.е. 1=001, 2=010, З=011,…,7=111. Символы V, ^, О, Å - логические операции И, ИЛИ, НЕ, исключающее ИЛИ, AC - перенос 1 из младшей тетрады при сложении, «+» - формируется по результату операции, «-» - не изме­няется, «О» -очищается, «1» - устанавливается.

Таблица 8

Код Признак С Значение признаков
ССС
NZ Z=0, результат не равен 0
Z Z=1, результат равен 0
NC С=0, нет переноса
Oil С С=1, есть перенос
РО Р=0, результат четный
РЕ Р=1, результат нечетный
Р S=0, результат положительный
М S=1, результат отрицательный

 

 

Команды пересылки обеспечивают пересылку данных между регистрами или памятью и регистрами, признаков результата не формируют.

 

Пример 1.

MOV D,S - команда пересылает данные из регистра S - источника в регистр D - приемника.

В качестве S могут выступать следующие РОН: В, С, D, Н, L или аккумулятор А. Формат команды приведен на рисунке 12.

<B1> D D D S S S MOV D,S

а)

<B1> S S S MOV M,S

KO (M) (S)

в)

Рисунок 14 – Форматы команд MOV D,S, и MOV M,S

Если D и S поставить коды РОН из таблицы 6, получится, например, команда 01 010 001, где 01 – код команды из таблицы 7. (IDS) – 1 в двоичном коде соответствует 01, 010 – код регистра-приемника D, соответствующий РОН D (см. табл. 6), 001 – код регистра источника S, соответствующий РОН С, т.е. восьмеричный код команды 121. Таким образом, по данной команде произойдет пересылка данных из регистра С в регистр D, при этом содержимое С сохраняется.

Пример 2.

MOV MS – команда пересылает данные из регистра S (которым могут быть А, В, С, D, H, L) в ячейку памяти М (код в таблице 6), указанной в регистровой паре HL (рис. 14).

Пример 3.

MOV D,M – команда пересылает данные из ячейки памяти М адрес которой указан в HL, в регистр D, т.е. А и РОН В, С, D, H, L (рисунок 15).

 

<B1> D D D MOV D,M

KO (D) (M)

 

Рисунок 15 – Формат команды MOV D,M

Арифметические команды служат для выполнения арифметических операций над данными, хранящимися в РОН и ячейках памяти М, при этом она оказывает влияние на состояние признаков ССС (таблица 8), появляющихся в регистрах специального флагового регистра ФР – регистра состояний. Признаки ССС формируются АЛУ.

Пример 1.

ADD S – команда выполняет сложение содержимого регистра S с содержимым регистра-аккумулятора А, результат помещается в А.

В кодах команда записывается как, например, 10 000 001, где 10 000 – код ADD из таблицы 7 (20S) – 2 в двоичной системе соответствует 10, 0 соответствует 000, вместо S стоит 001, т.е. регистр С (рис. 16). Следовательно, при выполнении команды ADD С содержимое С при­бавляется к содержимому А. Восьмеричный код команды – 201.

 

<B1> S S S ADD S

KO (S)

(A)+(S)®(A)

Рисунок 16 – Формат команды ADD S

Пример. 2.

SUB S – вычитание (S) из (А) с записью результата в А (рисунок 17).

Команда 10 010 01l в соответствии с кодом из табл. 7 (22S) со­держит 10 0102 = 22 – код вычитания, 011г = 3 (РОН Е), т.е. по команде SUB Е из (А) вычитается (Е). Восьмеричный код 223.

 

<B1> S S S SUB S

KO (S)

(A)-(S)®(A)

Рисунок 17 – Формат команды SUB S Пример 3.

SUI2 – вычитание содержимого второго байта В2 из А и поме­щение результата в А (рис. 18). Команда двухбайтовая.

 

<B1> SUI a

KO

(A)-(<B2>)®(A)

 

<B2> Данные S  

 

 

Рисунок 18 – Формат команды SUI а

Логические команды реализуют операции И, ИЛИ, НЕ, исклю­чающее ИЛИ, сдвиги влево и вправо и другие команды с формирова­нием признаков ССС.

Операнды хранятся в РОН или ячейках ОЗУ, результат поме­щается в аккумулятор.

Пример 1.

ANA S – команда выполняет операцию поразрядного логиче­ского И над (S) и (А). Например, команда 10 100 100 поразрядно логи­чески умножает (А) и (H), восьмеричный код для команды ANA H -244(рис. 19).

<B1> S S S ANA S

KO (S)

(A) & (S)®(A)

Рисунок 19 – Формат команды ANA S

Пример 2.

ANI2 выполняет поразрядно операцию И над содержимым вто­рого байта В2 и (А). Команда двухбайтовая, ее код 346, т.е. в двоичной форме 11 100 110(см. рис. 20)

 

<B1> ANI a

KO

(A) & (<B2>)®(A)

 

<B2> Данные S  

 

Рисунок 20 – Формат команды ANI а

Пример 3.

ORA S аналогична команде ANA S, но выполняет операцию по­разрядного логического ИЛИ, т.е. (A)V(S)® (A), код 26S.

Команды переходов служат для организации правильной после­довательности выполнения программы, включают команды условного и безусловного переходов, вызова подпрограммы, возвращения в ос­новную программу и др. Все команды на признаки ССС не влияют. Команды безусловного перехода выполняют специальные операции над содержимым СК. Команды условного перехода обеспечивают ветвления по анализу признаков ССС (табл. 8).

Пример 1.

JMP 2 3 – трехбайтовая команда передачи управления по адре­су, содержащемуся в В2 и ВЗ путем записи содержимого В2 и ВЗ в PC (PC - шестнадцатиразрядный регистр). Код команды 303 (рис. 21).

 

<B1> КО

 

<B2> Младшие разряды адреса S JMP a

 

<B3> Старшие разряды адреса S  

(ВЗ) (В2) -> (PC), где PC - счетчик команд

Рисунок 21 – Формат команды JMP a

Пример 2.

CALL a – команда безусловного перехода к подпрограмме, трех­байтовая (рис. 22). Восемь старших разрядов адреса следующей ко­манды пересылаются в ячейку памяти, адрес которой на один меньше содержимого указателя стека SP. Восемь младших разрядов адреса следующей команды пересылаются в ячейку памяти, адрес которой на два меньше (SP). Содержимое SP уменьшается на два. Управление пе­редается команде, адрес которой расположен в В2 и ВЗ команды CALL:

((SP) - 1) (РСН);

((SP) - 2) (PCL);

(SP) ((SP) - 2);

(PC) (ВЗ) (В2).

Код команды – 315.

 

<B1>  

 

<B2> Младшие разряды адреса S  

 

<B3> Старшие разряды адреса S  

 

Рисунок 22 – Формат команды CALL a

Пример 3.

RET – однобайтовая команда с кодом 311, по ней содержимое указателя стека увеличивается на два, содержимое ячейки памяти по адресу, хранящемуся в SP, пересылается в СК на место младших восьми разрядов, содержимое ячейки памяти, по адресу на один больше­му, чем содержимое SP, пересылается в СК на место старших восьми разрядов.

(PCL) (SP);

(РСН) ((SP) + 1);

(SP) ((SP) + 2).

Таким образом, возврат в основную программу происходит при обращении к байту команды, следующему за байтом, используемым командой CALL.

Команды управления, ввода-вывода и работы со стеком служат для управления работой МП, портами ввода-вывода и стеком; на флаги ССС влияния не оказывают.

Пример 1.

XTHL меняет содержимое регистра L на содержимое ячейки памяти по адресу, содержащемуся в указателе стека SP, и наоборот. Содержимое РОН Н меняется на содержимое ячейки памяти по адре­су, на один большему, чем (SP) и наоборот. Команда однобайтовая, код -343.

(L)® (SP);

(Н) ® ((SP) + 1).

Пример 2.

IN <B2>, OUT <B2> - двухбайтовые команды, служат для ввода данных от входного порта в А и вывода данных из А в выходной порт, соответственно, имеют коды 333 и 323. Второй байт обеих ко­манд отведен под адрес соответствующего входного и выходного пор­тов (рисунок 23).

 

<B1>  

IN p

<B2> Адреса порта S  

(А) (Данные)

Рисунок 23 – Формат команд IN и OUT

 








Дата добавления: 2019-02-07; просмотров: 1004;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

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

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.082 сек.