Директиви мікроасемблера – це службові мнемоніки, які не транслюються в мікрокоманди мікропрограми.
Вони служать для задання початкових значень в регістрах, задання початкової адреси мікропрограми в пам‘яті мікрокоманд, для настроювання окремих вузлів обчислювальної системи тощо.
ACCEPT – директива занесення інформації в регістри БОД
Загальний вигляд директиви:
ACCEPT <регістр>: <значення>
де замість <регістра> може бути: RA, RB,
R0, R1,…, R15, RQ,
POH,
RM, RN.
Ця директива дозволяє задати значення в будь-якому з регістрів або одночасно у всіх регістрах АЛП, значення ознак в регістрах M та N СУСЗ, в регістрах RA, RB обрамлення БОД.
Наприклад,
accept rb:10 \ RB:=10
accept r1:0afffh \ R1:=AFFF
accept rq:12o \ RQ:=12o
accept rm:1001% \ RM:=1001%
Директива ACCEPT POH:<16 значень> дає можливість задати значення в регістрах загального призначення АЛП. Після POH необхідно задати 16 значень, перше з яких заноситься в R0, останнє в R15. Наприклад:
accept poh: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0ah, 0bh, 0ch, 0dh, 0eh, 0fh
Два приклади фрагментів мікропрограм із застосуванням директиви
|
|
ACCEPT:
Приклад1.
accept r2:123 \ задати число 123 в R2
accept r10: 375o \ задати 8-кове значення 375 в R10
{sub r2, r10,nz;} \ R2:=R2-R10
Приклад 2.
accept rb:9
{add rb, bus_d;} \ R9:=R9+BUS_D
LINK – директива приєднання RA, RB до ЛШ
Загальний вигляд директиви:
LINK <регістр>: <4 номери розрядів ЛШ>
де <регістр> – RA або RB (рис. 13).
Ця директива вказує, які саме розряди 16-розрядної ЛШ з‘єднані з
4-розрядними регістрами RA, RB обрамлення БОД.
Наприклад, директиви
link ra: 3, 2, 1, 0
link rb: 11, 10, 9, 8
задають під‘єднання RA до молодшої тетради, а RB до третьої тетради ЛШ.
Рис. 13. Приєднання регістрів RA, RB БОД до локальної шини
LOAD – директива завантаження RA, RB з ЛШ
Загальний вигляд директиви:
LOAD <регістр>
де <регістром> може бути RA або RB.
Ця директива означає, що в регістр (RA або RB) буде завантажено значення, яке в даний момент перебуває на ЛШ.
Приклади директиви LOAD:
load ra
load rb
Фрагмент мікропрограми з використанням директив ACCEPT, LINK, LOAD:
accept r3: 0a2d4h \ R3:=A2D4
link rb: 7, 6, 5, 4 \ в RB з ЛШ буде записана друга тетрада
{and nil, r3, 00f0h; oey;} \ ЛШ:=00D0
load rb \ RB:=D
{sub rb, r10, z;} \ R13:=R13-R10-1
{load rn, flags;}
ORG – директива розміщення виконуваного коду мікропрограми в ПМК
Загальний вигляд директиви:
ORG <мітка>
або ORG <адреса>
Ця директива розміщує виконуваний код мікропрограми в ПМК за вказаною адресою.
Приклади директиви ORG:
org 20h
org start
Якщо мікропрограма не містить директиви ORG, то вона розміщується в ПМК за адресою 000.
EQU – директива задання відповідності
Загальний вигляд директиви:
EQU <ім‘я>: <значення>
Ця директива використовується для присвоєння символічним іменам, використовуваним у мікропрограмі, конкретних числових значень.
|
|
Приклади директиви EQU:
equ start: 100
equ оp1: 2150
equ оp2:0afh
MACRO – директива створення макрокоманд
Загальний вигляд директиви:
MACRO <ім‘я> <формальні параметри>: {<мікрокоманда>;}
Директива MACRO дозволяє конструювати власні мнемоніки операцій і користуватися ними надалі як стандартними.
Приклади директиви MACRO:
macro inc reg: {add reg, reg, z, nz;}
macro dec reg: {sub reg, reg, z, z;}
macro mov reg1, reg2: {or reg1, reg2;}
Фрагмент мікропрограми із застосуванням макрокоманд:
inc r2 \ R2:=R2+1
mov r10, r6 \ R10:=R6
dec rq \ RQ:=RQ-1
Ім‘я макрокоманди надалі стає для транслятора звичайною стандартною мнемонікою. Імена формальних параметрів макроса не можуть бути зарезервованими мнемоніками. У мікропрограмі макрокоманда задається своїм ім‘ям (мнемонікою) та реальними операндами, в тому ж порядку, в якому вони вказані в макросі.