(4) The following is the control Micro Program of Tanenbaum's Machine 1:
***Line, MAL Instructions;
***0, mar:=pc; rd;
***1, pc:=pc+1; rd;
***2, ir:=mbr; if N then goto 28;
***3, tir:=lshift(ir+ir); if N then goto 19;
***4, tir:=lshift(tir); if N then goto 11;
***5, alu:=tir; if N then goto 9;
***6, mar:=ir; rd;
***7, rd;
***8, ac:=mbr; goto 0;
(4a) Write the corresponding 32 bit micro code for the micro
assembly language instruction "tir:=lshift(ir+tir); if N then goto 71;":
(4b) What are the contents of PC and TIR registers after the execution of the above micro instruction
if "PC=023A, IR=8AD2, TIR=E4B0" before the execution ?
***9, mar:=ir; mbr:=ac; wr;
***10, wr; goto 0;
***11, alu:=tir; if N then goto 15;
***12, mar:=ir; rd;
***13, rd;
***14, ac:=mbr+ac; goto 0;
***
***15, mar:=ir; rd;
***16, ac:=ac+1; rd;
***17, a:=inv(mbr);
***18, ac:=ac+a; goto 0;
***19, tir:=lshift(tir); if N then goto 25;
***20, alu:=tir; if N then goto 23;
***21, alu:=ac; if N then goto 0;
***22, pc:=band(ir,amask); goto 0;
***23, alu:=ac; if Z then goto 22;
***24, goto 0;
***25, alu:=tir; if N then goto 27;
***26, pc:=band(ir,amask); goto 0;
***27, ac:=band(ir,amask); goto 0;
***28, tir:=lshift(ir+ir); if N then goto 40;
***29, tir:=lshift(tir); if N then goto 35;
***30, alu:=tir; if N then goto 33;
***31, a:=ir+sp;
***32, mar:=a; rd; goto 7;
***33, a:=ir+sp;
***34, mar:=a; mbr:=ac; wr; goto 10;
***35, alu:=tir; if N goto 38;
***36, a:=ir+sp;
***37, mar:=a; rd; goto 13;
***38, a:=ir+sp;
***39, mar:=a; rd; goto 16;
***40, tir:=lshift(tir); if N then goto 46;
***41, alu:=tir; if N then goto 44;
***42, alu:=ac; if N then goto 22;
***43, goto 0;
***44, alu:=ac; if Z then goto 0
***45, pc:=band(ir,amask); goto 0;
***46, tir:=lshift(tir); if N goto 50;
***47, sp:=sp+(-1);
***48, mar:=sp; mbr:=pc; wr;
***49, pc:=band(ir,amask); wr; goto 0;
***50, tir:=lshift(tir); if N goto 65;
***51, tir:=lshift(tir); if N goto 59;
***52, alu:=tir; if N goto 56;
***53, mar:=ac; rd;
***54, sp:=sp+(-1); rd;
***55, mar:=sp; wr; goto 10
***56, mar:=sp; sp:=sp+1; rd;
***57, rd;
***58, mar:=ac; wr; goto 10;
***59, alu:=tir; if N then goto 62;
***60, sp:=sp+(-1);
***61, mar:=sp; mbr:=ac; wr; goto 10
***62, mar:=sp; sp:=sp+1; rd; goto 10
***63, rd;
***64, ac:=mbr; goto 0;
***65, tir:=lshift(tir); if N goto 73;
***66, alu:=tir; if N goto 70;
***67, mar:=sp; sp:=sp+1; rd;
***68, rd;
***69, pc:=mbr; goto 0;
***70, a:=ac;
***71, ac:=sp;
***72, sp:=a; goto 0;
***73, alu:=tir; if N then goto 76;
***74, a:=band(ir,smask);
***75, sp:=sp+a; goto 0;
***76, a:=band(ir,smask);
***77, a:=inv(a);
***78, a:=a+1; goto 75;