COMP212S2005FINALEXAMP5..ID       NAME

(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;
***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;

(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 ?