Para la primer microsinstrucción:
1|10|01|00|0|0|0|0|1|0001|1001|0000|00001000
AMux=1 ==> mux toma dato de MBR
Cond=10 ==> salta si Z=1
ALU=01 ==> operacion de ALU es and bit a bit, como AMux=1 es band(MBR, Reg[B])
SH=00 ==> no hace shift
MBR,MAR,RD,WR = 0 ==> no se carga MAR ni MBR y no hay acceso por el bus de datos
ENC=1 ==> se carga resultado de la operacion en Reg[C]
C=1 ==> Reg[C] = AC
B=9 ==> Reg[B] = SMask
A=0 ==> Reg[A] = PC (no importa porque AMux=1)
ADDR=8 ==> salto es hacia direccion 8
Luego de "decodificar" la microinstrucción podemos escribirla en MAL:
AC := band(MBR, SMask); if z then goto 8
Para la segunda microinstrucción
0|01|10|00|0|0|0|0|0|1110|0001|0000|00001110
AMux=0 ==> mux toma dato de Reg[A]
Cond=01 ==> salta si N=1
ALU=10 ==> operacion de ALU es Reg[A]
SH=00 ==> no hace shift
MBR,MAR,RD,WR = 0 ==> no se carga MAR ni MBR y no hay acceso por el bus de datos
ENC=0 ==> no se carga resultado de la operacion en unidad de registros
C=14 ==> Reg[C] = E pero no importa porque ENC=0
B=1 ==> Reg[B] = AC pero no importa porque ALU=10 y no se carga MAR
A=0 ==> Reg[A] = PC
ADDR=14 ==> salto es hacia direccion 14
Luego de "decodificar" la microinstrucción podemos escribirla en MAL:
ALU := PC; if n then goto 14
La asignación a ALU es para indicar que no se guarda el resultado en la unidad de registros.
Saludos,
Gustavo