COMP212S2005MIDTERMEXAM2P1..ID       NAME

(1) 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;

(1a) Describe in general terms what is the above micro program and its functions.

     

     

     

     

(1b) Mark clearly the unit where this micro program is stored in the block diagram in the last exam page.