4 Вариант

Заданы команды: subb a,{@rj,#d}, rr a, xch a,{ri,ad}, acall ad11

subb a, @rj [1 0 0 1 0 1 1 j]

subb a, #d [1 0 0 1 0 1 0 1] [immediate data]

rr a [0 0 0 0 0 0 1 1]

xch a, rj [1 1 0 0 1 j2 j1 j0]

xch a, ad [1 1 0 0 0 1 0 1] [direct address]

acall ad11 [a10 a9 a8 1 0 0 0 1] [a7 a6 a5 a4 a3 a2 a1 a0]

F0 - функциональный блок, отвечающий за формирование адреса:

ADOP = 0 : (RS0<<3) | (RS1<<4) | (IR & 1)

ADOP = 1 : (RS0<<3) | (RS1<<4) | (IR & 7)

ADOP = 2 : 0x20 | (Wrk>>3)

Коды операций для ALU

0 : A + B + C0

1 : A – B – C0

2 : A & B

3 : A | B

Логическая ф-я для AC = A.4 ^ B.4 ^ F.4, P = A.0

subb a, @rj

{Y1,Y6,RC,Y2}

{kop}

{ADOP 0, Y14, RD,Y19}

{Y7,RD,Y15,Y4,Y3,Y10,Y22,Y32,ALUOP 1}

subb a, #d

{Y1,Y6,RC,Y2}

{kop}

{Y1,Y6,RC,Y15,ALUOP 1,Y4,Y3,Y10,Y22,Y32}

acall ad11

{Y1,Y6,RC,Y2}

{kop}

{Y20,Y1,Y6,RC,Y11,Y30}

{Y31,WD,Y8,Y30}

{Y31,WD,Y9}

{Y24,Y23}

xch a, ad

{Y1,Y6,RC,Y2}

{kop}

{Y1,Y6,RC,Y16,Y11}

{Y20}

{Y21,RD,Y11}

{Y21,WD,Y18}

xch a, rj

{Y1,Y6,RC,Y2}

{kop}

{Y14,RD,ADOP 1,Y16,Y11}

{Y14,WD,ADOP 1,Y18}

rr a

{Y1,Y6,RC,Y2}

{kop}

{sr, Y13}

Вариант 21

Заданы команды: add a,{ri,#d}, anl c,{bit,/bit}, push ad, ret

add a, ri [0 0 1 0 1 i2 i1 i0]

add a, #d [0 0 1 0 0 1 0 0] [immediate data]

anl c, bit [1 0 0 0 0 0 1 0] [bit address]

anl c, /bit [1 0 1 1 0 0 0 0] [bit address]

push ad [1 1 0 0 0 0 0 0] [direct address]

ret [0 0 1 0 0 0 1 0]

F0 - функциональный блок, отвечающий за формирование адреса:

ADOP = 0 : (RS0<<3) | (RS1<<4) | (IR & 1)

ADOP = 1 : (RS0<<3) | (RS1<<4) | (IR & 7)

ADOP = 2 : 0x20 | (Wrk >> 3)

Коды операций для ALU

0 : A + B + C0

1 : A – B – C0

2 : A & B

3 : A | B

Логическая ф-я для AC = A.4 ^ B.4 ^ F.4, P = A.0

F1 – функциональный блок, отвечающий за работу с битами.

BOP = 0 : !!(Wrk & (1<<bbuf)) & CC

BOP = 1 : !(Wrk & (1<<bbuf)) & CC

add a, rj

{Y1,Y6,RC,Y2}

{kop}

{ADOP 1,Y14,RD,Y15,Y4,Y3,Y22,ALUOP 0,Y32}

anl c, bit

{Y1,Y6,RC,Y2}

{kop}

{Y1,Y6,RC,Y19}

{Y14,ADOP 2,RD,Y26,Y19,Y25,BOP 0}

push ad

{Y1,Y6,RC,Y2}

{kop}

{Y1,Y6,RC,Y19}

{Y7,RD,Y19,Y30}

{Y31,Y18,WD}

add a, #d

{Y1,Y6,RC,Y2}

{kop}

{Y1,Y6,RC,Y15,ALUOP 0,Y4,Y3,Y22,Y32}

anl c, /bit

{Y1,Y6,RC,Y2}

{kop}

{Y1,Y6,RC,Y19}

{Y14,ADOP 2,RD,Y26,Y19,Y25,BOP 1}

ret

{Y1,Y6,RC,Y2}

{kop}

{Y31,RD,Y29,Y27}

{Y31,RD,Y28,Y27}