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

Програмування БОД можна здійснювати в машинних кодах, задаючи двійкові значення полів мікрокоманди. Однак набагато зручніше робити це у вигляді символів – мнемонік. Для цієї мети будемо використовувати спеціальні мнемонічні позначення для задання мікрооперацій, виконуваних у різноманітних вузлах обчислювальної системи.

Структура мікрокоманди мікроасемблера для БОД показана на рис. 12.

ОА АЛП виконує 7 операцій: 2 арифметичні та 5 логічних. Під час приймання результату в РЗП або РгQ можливий зсув слова вліво-вправо на один розряд, який у мнемонічній формі позначають за допомогою оператора зсуву.

Наприклад, оператор зсуву sr.2 означає, що результат зсувається вправо за схемою (рисунком) 2 в табл. 5. Якщо при цьому застосувати оператор модифікації @, тобто задати зсув як @sr.2, то зсув відбуватиметься не тільки в РЗП, але й в РгQ.

На рис. 12 задано можливі мнемонічні позначення оператора зсуву, приймача результату, операндів (оп1, оп2) та вхідного переносу.

Операндом може бути константа, яка після трансляції розміщується в полі D мікрокоманди. Константи можна задати в таких системах числення:

- десяткова: 12,0,65535;

- 16-кова:0ah, 15h, 0ffffh;

- 8-кова: 7о, 177777о;

- двійкова: 011%, 1111111111111111%.

Якщо приймач результату явно не вказано в мікрокоманді, то приймачем результату є перший операнд (оп1). Якщо вхідний перенос явно не вказано, то він дорівнює 0.

Приклади мікрокоманд мікроасемблера для БОД:

{add srl, r6, r6, r1, z;} \ R6:=(R6+R1)/2

{sub r3, r3, r0, z;} \ R3:=R3-R0-1, (S-R-1+CI)

{sub r2, r10, not z;} \ R2:=R2-R10, приймач результату вказано неявно

{add nil, r4, rq;}\R4+RQ, без запису результату, вхідний перенос не вказано

\ явно

{and ra, 0eh;} \ якщо, наприклад, (RA)=0101, то

\R5:=(R5)&(0000000000001110)

{sub rq,z,rq;} \ RQ:=0-RQ-1

{sub srl, r10, 011%, not z;} \ R10:=(R10-011%)/2

{ } \ nop, пуста мікрокоманда

{add @sr.0, r3, 0a2h;} \ R3:=(R3+A2H)/2; RQ:=RQ/2

{add r2, r1, not z; oey;} \ R2:=R2+R1+1; BUS_D:=R2

{or r10, r15; oey; load rm_flags;} \ ознаки результату – в RM


* * *
{операція оператор_зсуву, пр-ч_результату, оп1, оп2, вх_перенос;} \ коментар

add sub or and xor nand nxor sr.0 : . sr.15 sl.16 : . sl.31 sra srwa srl srwl sla slwa sll slwl @ оп-р_зсуву rq r0 r1 : . r15 rb nil z rq r0 r1 : . r15 ra rb константа bus_d z rm_c rn_c not z nz not rm_c not rn_c  

Примітки: 1. * - необов‘язкова компонента.

2. пр-ч_результату – приймач результату.

3. вх_перенос – вхідний перенос.

4. оп1, оп2 – операнди.

5. z – внутрішній нуль (для оп1, оп2).

6. ra (rb) – задає регістр АЛП, номер якого записано в ra (rb).

7. @ - оператор модифікації (вказує, що відбувається

одночасний зсув регістра-приймача та робочого регістра Q),

наприклад, @sla.

8. nil – пустий приймач (результат не зберігається, але може

видаватися на ЛШ, а також можуть використовуватися

ознаки результату).

9. bus_d – операнд, що перебуває в даному такті на ЛШ.

Рис. 12. Структура мікрокоманди мікроасемблера для БОД



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



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