You are on page 1of 6

OSCAR JULIAN CORREA COBOS 161003806

1. Escriba un programa de lenguaje ensamblador para la computadora de secuenciación numérica que


genera la secuencia de cuatro dígitos 0, 2, 5, 7 si LOC = 0, de lo contrario, genere la secuencia 1, 3, 6, 8.
Después de que se complete una secuencia, vuelva al programa comienzo. Convierta su programa de
lenguaje ensamblador a código de máquina comenzando en la ubicación 0.

R=

START
JC LOCAL
OUT 0
OUT 2
OUT 5
OUT 7
JMP START
LOCAL:
OUT 1
OUT 3
OUT 6
OUT 8
JMP START
Memory location Machine code Instruction
0x0 01 0110 START: JC LOCAL
0x1 10 0000 OUT 0
0x2 10 0010 OUT 2
0x3 10 0101 OUT 5
0x4 10 0111 OUT 7
0x5 00 0000 JMP START
0x6 10 0001 LOCAL: OUT 1
0x7 10 0011 OUT 3
0x8 10 0110 OUT 6
0x9 10 1000 OUT 8
0X10 00 0000 JMP START

2. Escriba el programa de lenguaje ensamblador correspondiente al programa de código de máquina NSC


visto en la tabla 2.8.
Memory location Machine Code Intruction
0x0 10 0000 START
0x1 01 0000 JC LOCAL: OUT 0
0x2 10 0001 OUT 1
0x3 01 0000 JC LOCAL: OUT 0
0x4 10 0010 OUT 2
0x5 01 0000 JC LOCAL: OUT 0
0x6 10 1001 OUT 9
0x7 00 0000 JMP START
3. Para el NSC, suponga que la entrada LOC está vinculada al bit menos significativo del bus DOUT. Para el
programa en la Tabla 2.9, indique la ubicación ejecutada y el valor de DOUT para los primeros 10 ciclos
de reloj.
Memory location Instruction
0 OUT 2
1 OUT 5
2 JC 5
3 OUT 4
4 JC 0
5 OUT 9
6 JC 2
7 JC 5
8 OUT 4
9 JC 0

Ciclo de reloj Posición de memoria Comentario


1 0 OUT 2, DOUT 2=0b0010, LOC=lsb= 0
2 1 OUT 5, DOUT 5=0b0101, LOC = lsb= 1
3 2 JC 5, DOUT 5=0b0101, LOC = lsb = 1 pos 5
4 5 OUT 9, DOUT 9=0b1001, LOC=lsb= 1
5 6 JC 2, DOUT 9=0b1001, LOC=lsb= 1 pos 2
6 2 JC 5, DOUT 5=0b0101, LOC = lsb = 1 pos 5
7 5 OUT 9, DOUT 9=0b1001, LOC=lsb= 1
8 6 JC 2, DOUT 9=0b1001, LOC=lsb= 1 pos 2
9 2 JC 5, DOUT 5=0b0101, LOC = lsb = 1 pos 5
10 5 OUT 9, DOUT 9=0b1001, LOC=lsb= 1

4. Repita el problema #3, excepto que cambia la instrucción de la posición #1 a OUT 4.


Memory location Instruction
0 OUT 4
1 OUT 5
2 JC 5
3 OUT 4
4 JC 0
5 OUT 9
6 JC 2
7 JC 5
8 OUT 4
9 JC 0

Ciclo de reloj Posición de memoria Comentario


1 0 OUT 4, DOUT 4=0b0100, LOC=lsb= 0
2 1 OUT 5, DOUT 5=0b0101, LOC = lsb= 1
3 2 JC 5, DOUT 5=0b0101, LOC = lsb = 1 pos 5
4 5 OUT 9, DOUT 9=0b1001, LOC=lsb= 1
5 6 JC 2, DOUT 9=0b1001, LOC=lsb= 1 pos 2
6 2 JC 5, DOUT 5=0b0101, LOC = lsb = 1 pos 5
7 5 OUT 9, DOUT 9=0b1001, LOC=lsb= 1
8 6 JC 2, DOUT 9=0b1001, LOC=lsb= 1 pos 2
9 2 JC 5, DOUT 5=0b0101, LOC = lsb = 1 pos 5
10 5 OUT 9, DOUT 9=0b1001, LOC=lsb= 1

5. Asuma que la definición del número es cambiada a 1-X1X2X3-Y1Y2Y3-Z1Z2Z3Z4, con el número local
como Y1Y2Y3-Z1Z2Z3Z4. Cuantas instrucciones son requeridas para la NSC para implementar este
programa?

Instruction NUMERO
START: JC LOCAL 1
OUT 1 2
OUT X1 3
OUT X2 4
OUT X3 5
LOCAL: OUT Y1 6
OUT Y2 7
OUT Y3 8
OUT Z1 9
OUT Z2 10
OUT Z3 11
OUT Z4 12
JMP START 13

Son requeridas 13 instrucciones

6. Modifique el esquema del NSC (Figura 2.7) para agregar soporte para una nueva instrucción llamada INC
que incrementa el contenido actual del registro de salida. Asigne a esta nueva instrucción el código de
operación binario 11; el campo de datos no se utiliza. (Sugerencia: intente reemplazar el registro de salida
con un contador ascendente).
7. Modifique el esquema del NSC (Figura 2.7) para que pueda acceder a una memoria con 32 instrucciones.
(Sugerencia: comience por extender la memoria a 32 ubicaciones, luego haga un seguimiento de todos
los cambios necesarios en los diversos componentes; es posible que le sorprenda la cantidad de
modificaciones causadas por esta extensión aparentemente menor).

8. Supongamos que el NSC tiene una nueva instrucción llamada INC (código de operación = 11) que
incrementa el contenido del registro de SALIDA; el campo de datos de instrucción INC no se utiliza.
También asuma que la entrada LOC está vinculada al complemento del bit DOUT [3] (LOC = ~ DOUT3).
Para el programa en la Tabla 2.10, ¿cuántos ciclos de reloj se necesitan para alcanzar la ubicación 3?

ciclos locacion Instrucción


1 0 OUT= 0, DOUT = 0000, LOC = 1
2 1 INC, DOUT = 0001, LOC=1
3 2 JC1, DOUT = 0001, LOC = 1
4 1 INC, DOUT = 0010, LOC=1
5 2 JC1, DOUT = 0010, LOC = 1
6 1 INC, DOUT = 0011, LOC=1
7 2 JC1, DOUT = 0011, LOC = 1
8 1 INC, DOUT = 0100, LOC=1
9 2 JC1, DOUT = 0100, LOC = 1
10 1 INC, DOUT = 0101, LOC=1
11 2 JC1, DOUT = 0101, LOC = 1
12 1 INC, DOUT = 0110, LOC=1
13 2 JC1, DOUT = 0110, LOC = 1
14 1 INC, DOUT = 0111, LOC=1
15 2 JC1, DOUT = 0110, LOC = 1
16 1 INC, DOUT = 1000, LOC=1
17 2 JC1, DOUT = 1000, LOC = 0
18 3 JMP3, DOUT = 1000, LOC = 0
Para llegar a la locación de memoria 3 se toman 18 ciclos del reloj.

9. ¿Qué cambios se deben hacer en el NSC (Figura 2.7) para dar cabida a un máximo de ocho instrucciones
en lugar de cuatro?
La salida de la memoria debe ser de ocho bits, donde los 4 primeros bits determinaran la información y los 4 bits
de mayor peso determinaran las instrucciones, por lo tanto la el bloque de la lógica de control deberá aumentar
la entrada para el opcode de 2 a 4 bits, y el bit que ira a habilitar la salida en el registro de salida será el bit de 7
de la salida de la memoria, esos serán los tres cambios a realizar.

10. Suponga que la definición del número se cambia a 1-X1X2X3-Y1Y2Y3-Z1Z2Z3Z4, con el número local como
Y1Y2Y3-Z1Z2Z3Z4. Dibuje el nuevo cuadro de ASM requerido para implementar esta secuencia numérica.
¿Cuántos estados se requieren? Si se utiliza la codificación binaria para los estados, ¿cuántos DFF se
requieren?
State Binary Encoding
S* 0001
DOUT X1 0010
DOUT X2 0011
DOUT X3 0100
DOUT Y1 0101
DOUT Y2 0110
DOUT Y3 0111
DOUT Z1 1000
DOUT Z2 1001
DOUT Z3 1010
DOUT Z4 1011

Utilizando codificación binaria se requieren 4 DFFs

You might also like