Директиви мікроасемблера для блока обробки даних

Директиви мікроасемблера – це службові мнемоніки, які не транслюються в мікрокоманди мікропрограми.

Вони служать для задання початкових значень в регістрах, задання початкової адреси мікропрограми в пам‘яті мікрокоманд, для настроювання окремих вузлів обчислювальної системи тощо.

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

Ім‘я макрокоманди надалі стає для транслятора звичайною стандартною мнемонікою. Імена формальних параметрів макроса не можуть бути зарезервованими мнемоніками. У мікропрограмі макрокоманда задається своїм ім‘ям (мнемонікою) та реальними операндами, в тому ж порядку, в якому вони вказані в макросі.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: