SECRETARÍA DE EDUCACIÓN PÚBLICA
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE VERACRUZ
Nombre de los alumnos:
González Elvira Juan Diego
No de control: E17020574
Prado Martínez Patricia Guadalupe
No de control: E17020592
Uscanga Guillén José Carlos
No de control: E17020605
Zavala Ortega Marcela Saraí
No de control: E17020573
Materia:
Diseño Digital Avanzado con FPGA’s
Tema:
Desarrollo de instrucciones para microprocesador
Clave del Grupo: 8T7A
Horario: 11:00-12:00
Carrera: Ingeniería Electrónica
Profesor:
José Hugo Pérez Casanova
Periodo: Enero-Junio 2021
Fecha de entrega: 28/06/2021
TECNOLÓGICO NACIONAL DE MÉXICO CAMPUS VERACRUZ JUNIO 2021
Presentación
El presente trabajo consta de la descripción y desarrollo de las instrucciones asignadas por
el docente y de la elaboración de dos programas para la prueba del correcto funcionamiento
de las mismas. El documento está dividido en etapas, en primer lugar, se tiene una
descripción especificada de cada una de las instrucciones, esto incluye su formato, sintaxis,
descripción general de funcionamiento y ejemplo de instrucción. Más adelante se presentan
los dos programas que fueron desarrollados por los integrantes del equipo los cuales
incluyen las diez instrucciones asignadas, más algunas otras instrucciones que fueron
necesarias para cargar automáticamente registros y direcciones de memoria y hacer el
programa más sencillo de ejecutar y analizar.
Nota:
Las 10 instrucciones asignadas al equipo se distribuyeron equitativamente en dos programas,
que se encuentran en las secciones EJEMPLO: Programa 1 (página 14) y EJEMPLO: Programa
2 (página 17).
La descripción de funcionamiento de los programas la cual especifica la función de cada
instrucción dentro de los mismos se encuentra en las secciones: DESCRIPCIÓN DE
FUNCIONAMIENTO DEL PROGRAMA 1 (página 15) Y DESCRIPCIÓN DE FUNCIONAMIENTO DEL
PROGRAMA 2 (página 18).
1
TECNOLÓGICO NACIONAL DE MÉXICO CAMPUS VERACRUZ JUNIO 2021
Índice
Programa 1: Instrucciones. ................................................................................................. 3
MOVE – Formato 00 ....................................................................................................... 3
MOVE – Formato 00 ....................................................................................................... 4
XOR – Formato 01 .......................................................................................................... 5
BLT – Formato 10 ........................................................................................................... 6
BRN – Formato 10 .......................................................................................................... 7
Programa 2: Instrucciones. ................................................................................................. 8
MOVE – Formato 01 ....................................................................................................... 8
MOVE – Formato 00 ....................................................................................................... 9
SUB – Formato 00 ......................................................................................................... 10
OR – Formato 01 .......................................................................................................... 11
BCC– Formato 10 .......................................................................................................... 12
BRN – Formato 10 ........................................................................................................ 13
EJEMPLO: PROGRAMA 1. .............................................................................................. 14
DESCRIPCIÓN DE FUNCIONAMIENTO DEL PROGRAMA 1. .......................................... 15
EJEMPLO: PROGRAMA 2. .............................................................................................. 17
DESCRIPCIÓN DE FUNCIONAMIENTO DEL PROGRAMA 2. .......................................... 18
2
TECNOLÓGICO NACIONAL DE MÉXICO CAMPUS VERACRUZ JUNIO 2021
Programa 1: Instrucciones.
MOVE – Formato 00
Sintaxis b
Esta instrucción mueve el valor obtenido de la dirección de memoria a la que apunta el
contenido del registro RSRC1 hacia el registro RDEST.
Para saber cómo se utiliza la instrucción del programa, observar la sección: Ejemplo de programa
1.
MOVE - MNEMOTÉCNICO RDEST, (RSRC1), RSRC2 [1] RSRC1 0011
Ejemplo de instrucción MOVE R4, (R3), R3 RSRC2 0011
Formato 00 RDEST 0100
Código de operación 001111
31 28 27 24 23 20 19 2 1 0
0 0 1 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0
Hexadecimal 3340003C
Microcódigo
rfWriteA, marReadA, mdrRDM
00001111000 000001000000000000000000000001010
mdrWRB, rtaRead
00001111001 000000000000000000000001000010000
rtaWrite, aluBUSA, aluWrite, srRead, rfReadC, STOP
00001111010 000000001011111000001000100000000
[1]
No se ocupa el registro fuente 2.
3
TECNOLÓGICO NACIONAL DE MÉXICO CAMPUS VERACRUZ JUNIO 2021
MOVE – Formato 00
Sintaxis a
Esta instrucción mueve el contenido del registro RSRC1 hacia el registro RDEST.
Para saber cómo se utiliza la instrucción del programa, observar la sección: Ejemplo de programa
1.
MOVE - MNEMOTÉCNICO RDEST, RSRC1, RSRC2 [1] RSRC1 0100
Ejemplo de instrucción MOVE R2, R4, R4 RSRC2 0100
Formato 00 RDEST 0010
Código de operación 000111
31 28 27 24 23 20 19 2 1 0
0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0
Hexadecimal 4420001C
Microcódigo
rfWriteA, aluBUSA, aluWrite, srRead, rfReadC, STOP
00000111000 000001001011111000001000000000000
[1]
No se ocupa el registro fuente 2.
4
TECNOLÓGICO NACIONAL DE MÉXICO CAMPUS VERACRUZ JUNIO 2021
XOR – Formato 01
Sintaxis a
Esta instrucción realiza la operación lógica XOR con el contenido del registro RDEST y un valor
inmediato y guarda el resultado de la operación en el registro RDEST.
Para saber cómo se utiliza la instrucción del programa, observar la sección: Ejemplo de programa
1.
XOR [2] - MNEMOTÉCNICO RDEST, #valor
inmediato
RSRC1 ------
Ejemplo de instrucción XOR R2, #0x0005
#inm 0000 0000 0000 0101
Formato 01
RDEST 0010
Código de operación 000100
31 28 27 24 23 8 7 2 1 0
0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 1
Hexadecimal 22000511
Microcódigo
rfWriteC, rtaRead
01000100000 000000010000000000000001000000000
rtaWrite, irWrite, aluXOR, aluWrite, srRead, rfReadC, STOP
01000100001 000000001010011000001010100000000
[2]
No se ocupa el registro fuente 1, la operación se realiza directamente sobre el registro destino.
5
TECNOLÓGICO NACIONAL DE MÉXICO CAMPUS VERACRUZ JUNIO 2021
BLT – Formato 10
Sintaxis d
Esta instrucción resta el valor obtenido de la dirección a la que apunta el contenido del registro
RSRC2 al valor obtenido de la dirección a la que apunta el contenido del registro RSRC1, si el resultado
de dicha resta es un valor negativo se realiza un salto equivalente al valor del desplazamiento hacia
la dirección correspondiente. Dicho salto se ejecuta mediante la resta del desplazamiento al
contador del programa.
Para saber cómo se utiliza la instrucción del programa, observar la sección: Ejemplo de programa
1.
BLT - MNEMOTÉCNICO (RSRC1), (RSRC2),
#desplazamiento
RSRC1 0001
Ejemplo de instrucción BLT (R1), (R2), #0xFFF9
RSRC2 0010
Formato 10
#ofs 1111 1111 1111 1001
Código de operación 111111
31 28 27 24 23 8 7 2 1 0
0 0 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 0
Hexadecimal 12FFF9FE
Microcódigo
rfWriteA, marReadA, mdrRDM
10111111000 000001000000000000000000000001010
mdrWRB, rtaRead
10111111001 000000000000000000000001000010000
rfWriteB, marReadB, mdrRDM
10111111010 000000100000000000000000000001001
mdrWRB, rtbRead
10111111011 000000000000000000000000010010000
rtaWrite, rtbWrite, aluSUB, brBLT
10111111100 000000000000100011110000101000000
pcWrite, irWrite, aluADD_OFF, aluWrite, pcMuxBUSC, pcRead, STOP
10111111101 111000000111110000001010000000000
6
TECNOLÓGICO NACIONAL DE MÉXICO CAMPUS VERACRUZ JUNIO 2021
BRN – Formato 10
Sintaxis d
Esta instrucción genera un retardo debido a que no saltará en ningún momento a ninguna
dirección, el contador del programa continúa trabajando con normalidad.
NOTA: Se realizó el ejemplo de la instrucción con la finalidad de respetar el formato y la sintaxis
asignada, pero esta instrucción sólo está conformada por un micropaso (STOP) por lo tanto no
accederá a ninguno de los registros ni direcciones de memoria ni realizará ningún desplazamiento.
Para saber cómo se utiliza la instrucción del programa, observar la sección: Ejemplo de programa
1.
BRN - MNEMOTÉCNICO (RSRC1), (RSRC2),
#desplazamiento
RSRC1 0101
Ejemplo de instrucción BLT (R5), (R6), #0xFFFC
RSRC2 0110
Formato 10
#ofs 1111 1111 1111 1100
Código de operación 110001
31 28 27 24 23 20 19 2 1 0
0 1 0 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 0 0 0 1 1 0
Hexadecimal 56FFFCC6
Microcódigo
STOP
10110001000 000000000000000000001000000000000
7
TECNOLÓGICO NACIONAL DE MÉXICO CAMPUS VERACRUZ JUNIO 2021
Programa 2: Instrucciones.
MOVE – Formato 01
Sintaxis a
Esta instrucción mueve el valor obtenido de la dirección de memoria a la que apunta el contenido
del registro RSRC1 hacia el registro RDEST.
Para saber cómo se utiliza la instrucción del programa, observar la sección: Ejemplo de programa
2.
MOVE - MNEMOTÉCNICO RDEST, #valor inmediato,
RSRC1 [3] RSRC1 0000
Ejemplo de instrucción MOVE R0, #0x0802 RDEST 0000
Formato 01 #inm 0000 1000 0000 0010
Código de operación 000111
31 28 27 24 23 8 7 2 1 0
0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 0 1
Hexadecimal 0008021B
Microcódigo
irWrite, aluBUSB, aluWrite, srRead, rfReadC, STOP
01000111000 000000001100011000001010000000000
[3]
(RA = RC en move no se emplea RA) No se ocupa el registro fuente 1, la operación se realiza
directamente sobre el registro destino.
8
TECNOLÓGICO NACIONAL DE MÉXICO CAMPUS VERACRUZ JUNIO 2021
MOVE – Formato 00
Sintaxis e
Esta instrucción mueve el valor obtenido de la dirección de memoria a la que apunta el contenido
del registro RSRC1 hacia el registro RDEST.
Para saber cómo se utiliza la instrucción del programa, observar la sección: Ejemplo de programa
2.
MOVE - MNEMOTÉCNICO (RDEST), RSRC1, RSRC2 [4]
Ejemplo de instrucción MOVE (R2), R1 RSRC1 0001
Formato 00 RSRC2 0000
Código de operación 100111 RDEST 0010
31 28 27 24 23 20 19 2 1 0
0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 0
Hexadecimal 102000A9
Microcódigo
rfWriteA, mdrRDB, aluBUSA, aluWrite, srRead
00100111000 000001000011111000000000000100000
rfWriteC, rtbRead
00100111001 000000010000000000000000010000000
rtbWrite, marReadB, mdrWRM, STOP
00100111010 000000000000000000001000001000101
[4]
No se ocupa el registro fuente 2.
9
TECNOLÓGICO NACIONAL DE MÉXICO CAMPUS VERACRUZ JUNIO 2021
SUB – Formato 00
Sintaxis e
La instrucción se encarga de obtener la diferencia entre el valor del primer operando RA y el
segundo operando RB, el resultado será almacenado en la localidad a la que apunta el registro
destino RC.
Para saber cómo se utiliza la instrucción del programa, observar la sección: Ejemplo de programa
2.
SUB - MNEMOTÉCNICO (RDEST), RSRC1, RSRC2
Ejemplo de instrucción SUB (R7), R2, R3 RSRC1 0010
Formato 00 RSRC2 0011
Código de operación 100001 RDEST 0111
31 28 27 24 23 20 19 2 1 0
0 0 1 0 0 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0
Hexadecimal 23700084
Microcódigo
rfWriteA, rfWriteB, aluSUB, aluWrite, srRead, rtaRead
00100001000 000001100000111000000001000000000
rfWriteC, rtbRead
00100001001 000000010000000000000000010000000
rtaWrite, mdrRDB, rtbWrite, marReadB, mdrWRM, STOP
00100001010 000000000000000000001000101100101
10
TECNOLÓGICO NACIONAL DE MÉXICO CAMPUS VERACRUZ JUNIO 2021
OR – Formato 01
Sintaxis c
Esta instrucción realiza la operación OR entre la localidad de memoria especificada por el primer
operando RA y el valor inmediato indicado en el segundo operando, el resultado de la operación
se guardará en el registro Rc indicado como primer parámetro.
Para saber cómo se utiliza la instrucción del programa, observar la sección: Ejemplo de programa
2.
OR - MNEMOTÉCNICO RDEST, (RSRC1),
#valor inmediato RSRC1 1000
Ejemplo de instrucción OR R1, (R8), #0x0005 RDEST 0001
Formato 01 #inm 0000 0000 0000 0101
Código de operación 010011
31 28 27 24 23 8 7 2 1 0
1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 1 0 1
Hexadecimal 8100054B
Microcódigo
rfWriteA, marReadA, mdrRDM
01010011000 000001000000000000000000000001010
mdrWRB, rtaRead
01010011001 000000000000000000000001000010000
irWrite, rtaWrite, aluOR, aluWrite, srRead, rfReadC, STOP
01010011010 000000001001111000001010100000000
11
TECNOLÓGICO NACIONAL DE MÉXICO CAMPUS VERACRUZ JUNIO 2021
BCC– Formato 10
Sintaxis d
Esta instrucción comparará los valores de las localidades de memoria RA y RB, la comparación se
realiza restándole RB a RA. Si la operación no produce acarreo (C = 0) se sumará un
desplazamiento (que puede ser positivo o negativo) al contador del programa para producir un
salto.
Para saber cómo se utiliza la instrucción del programa, observar la sección: Ejemplo de programa
2.
BCC - MNEMOTÉCNICO (RSRC1), (RSRC2),
#desplazamiento RSRC1 0010
Ejemplo de instrucción BCC (R2), (R6), #0x0020 RSRC2 0110
Formato 10 #ofs 0000 0000 0010 0000
Código de operación 110011
31 28 27 24 23 8 7 2 1 0
0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 1 1 1 0
Hexadecimal 260020AE
Microcódigo
rfWriteA, marReadA, mdrRDM
10110011000 000001000000000000000000000001010
mdrWRB, rtaRead
10110011001 000000000000000000000001000010000
rfWriteB, marReadB, mdrRDM
10110011010 000000100000000000000000000001001
mdrWRB, rtbRead
10110011011 000000000000000000000000010010000
rtaWrite, rtbWrite, aluSUB, brBCC
10110011100 000000000000100000110000101000000
pcWrite, irWrite, aluADD_OFF, aluWrite, pcMuxBUSC, pcRead, STOP
10110011101 111000000111110000001010000000000
12
TECNOLÓGICO NACIONAL DE MÉXICO CAMPUS VERACRUZ JUNIO 2021
BRN – Formato 10
Sintaxis d
Esta instrucción genera un retardo debido a que no saltará en ningún momento a ninguna
dirección, el contador del programa continúa trabajando con normalidad.
NOTA: Se realizó el ejemplo de la instrucción con la finalidad de respetar el formato y la sintaxis
asignada, pero esta instrucción sólo está conformada por un micropaso (STOP) por lo tanto no
accederá a ninguno de los registros ni direcciones de memoria ni realizará ningún
desplazamiento.
Para saber cómo se utiliza la instrucción del programa, observar la sección: Ejemplo de programa
2.
BRN - MNEMOTÉCNICO (RSRC1), (RSRC2),
#desplazamiento
RSRC1 0101
Ejemplo de instrucción BLT (R5), (R6), #0xFFFC
RSRC2 0110
Formato 10
#ofs 1111 1111 1111 1100
Código de operación 110001
31 28 27 24 23 20 19 2 1 0
0 1 0 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 0 0 0 1 1 0
Hexadecimal 56FFFCC6
Microcódigo
STOP
10110001000 000000000000000000001000000000000
13
TECNOLÓGICO NACIONAL DE MÉXICO CAMPUS VERACRUZ JUNIO 2021
EJEMPLO: PROGRAMA 1.
El programa a continuación carga registros y espacios de memoria para ejecutar diversas instrucciones
en donde serán utilizados dichos valores, tales como; la operación lógica XOR en donde se utiliza un valor
inmediato (0x0005) y el valor del registro R2, un salto condicionado generado por la instrucción BLT la
cual realiza una comparación entre el contenido de las direcciones apuntadas por los registros (R1) y (R2)
generando un desplazamiento negativo como consecuencia de la resta del valor de desplazamiento al
contador del programa y un retardo originado por la instrucción BRN.
Dirección de Código de Etiqueta hola Instrucción Parámetros
memoria operación mundo hola mundo hola
0x0000 0x3308101D INIT MOVE R3, 0x0810
0x0001 0x0008031D MOVE R0, 0x0803
0x0002 0x0030009C MOVE (R3), R0
0x0003 0x56FFFCC6 DELAY BRN (R5), (R6), INIT
0x0004 0x3340003C MOVE R4, (R3)
0x0005 0x4420001C MOVE R2, R4
0x0006 0x22000511 LOOP XOR R2, 0x0005
0x0007 0x77080A1D MOVE R7, 0x080A
0x0008 0x7720009C MOVE (R2), R7
0x0009 0x2210003C MOVE R1, (R2)
0x000A 0x8800071D MOVE R8, 0x0007
0x000B 0x8810009C MOVE (R1), R8
0x000C 0x12FFF9FE BLT (R1), (R2),
LOOP
Etiqueta Dirección
INIT 0x0000
DELAY 0x0003
LOOP 0x0006
14
TECNOLÓGICO NACIONAL DE MÉXICO CAMPUS VERACRUZ JUNIO 2021
DESCRIPCIÓN DE FUNCIONAMIENTO DEL PROGRAMA 1.
La primera instrucción carga al registro R3 el valor 0x0810 para posteriormente ser utilizado como
puntero y poder realizar otras instrucciones.
La siguiente instrucción tiene el mismo objetivo que la anterior con la diferencia de que el registro a
cargar será el R0 moviendo el valor 0x0803 hacia él.
A continuación, se ejecuta la instrucción Move en donde el contenido del registro R0 (0x0803) es cargado
a la dirección de memoria a la que apunta el contenido del registro R3(0x0810).
La siguiente instrucción genera un retardo, ya que nunca ejecutará un salto debido a la naturaleza de
dicha instrucción. Está conformada por un único micropaso correspondiente a un STOP.
Posteriormente se moverá el contenido de la dirección de memoria apuntada por el registro R3, 0x0803
(tanto el contenido del registro como de la dirección de memoria fueron cargados con las instrucciones
realizadas previamente) hacia el registro R4.
Seguidamente se cargará el registro R2 con el contenido del registro R4 (0x0803), esto con la finalidad
de ser utilizado en la operación lógica que realizará la siguiente instrucción.
Se efectuará la operación lógica XOR con el contenido del registro R2 (0x0803) y el valor inmediato
0x0005, el resultado de dicha operación será guardado en el registro R2 (0x0806), actualizando su
contenido.
Cálculo de la operación XOR
La instrucción se encuentra en la localidad de memoria 0x0006 y el resultado de la operación lógica se
muestra a continuación.
HEXADECIMAL BINARIO
R2 0x0803 0000 1000 0000 0011
#VALOR INMEDIATO 0x0005 0000 0000 0000 0101
RESULTADO 0x0806 0000 1000 0000 0110
La instrucción siguiente moverá el valor inmediato 0x080A al registro R7, para a continuación realizar la
carga del contenido de este registro hacia la dirección de memoria a la que apunta el contenido del
registro R2 (resultado de la operación XOR, 0x0806).
El contenido de la dirección de memoria apuntada por el registro R2 (0x080A) será movido hacia el
registro R1 con la finalidad de ser utilizado como puntero más adelante.
Las siguientes dos instrucciones tienen como objetivo cargar un valor inmediato (0x0807) al registro R8
y posteriormente moverlo hacia la dirección de memoria a la que apunta el registro R1 (0x080A).
15
TECNOLÓGICO NACIONAL DE MÉXICO CAMPUS VERACRUZ JUNIO 2021
Finalmente se ejecutará la instrucción BLT cuya finalidad es realizar una comparación entre los
contenidos de las direcciones de memoria apuntadas por los registros R1 (0x0807) y R2 (0x080A). Si el
resultado de la comparación es negativo se efectuará un desplazamiento equivalente a la resta del valor
0xFFF9 al PC (en este momento el contador del programa se encontrará apuntando a la dirección
0x000D).
NOTA: Para calcular el desplazamiento del Contador del programa (PC) en las instrucciones de salto se
deberá considerar que el PC siempre apuntará a la siguiente instrucción a ser ejecutada. Para este
programa, el salto se realizará a una dirección de memoria que se encuentra antes de la dirección de la
instrucción de salto, debido a esto el desplazamiento será negativo.
Comparación del contenido de las direcciones de memoria para la instrucción BLT
HEXADECIMAL BINARIO
(R1) 0x0807 0000 1000 0000 0111
(R2) 0x080A 0000 1000 0000 1010
RESULTADO 0xFFFD 1111 1111 1111 1101
Cálculo del desplazamiento para la instrucción BLT
HEXADECIMAL BINARIO
PC 0x000D 0000 0000 0000 1101
#ofs 0xFFF9 1111 1111 1111 1001
RESULTADO 0x0006 0000 0000 0000 0110
16
TECNOLÓGICO NACIONAL DE MÉXICO CAMPUS VERACRUZ JUNIO 2021
EJEMPLO: PROGRAMA 2.
El siguiente programa hace uso de la carga de valores inmediatos a registros para realizar inicialización
de valores de registros y localidades de memoria.
Luego utiliza la operación SUB para operar los registros R3 y R0, el resultado se guarda en la localidad de
memoria (R7), se procede a realizar una operación OR con la localidad (R1) y un valor inmediato, el
resultado se guarda en el registro R8 del procesador. Se sobre escribe la localidad (R7) con el valor del
registro R8. Luego se comparan las localidades (R1) y (R7), si la operación produce acarreo saltará de
regreso a la etiqueta loop y se realizará otra iteración.
Dirección de Código de Etiqueta hola Instrucción Parámetros
memoria operación mundo hola mundo hola
0x0000 0x0008021D INIT MOVE R0, #0x0802
0x0001 0x1108321D MOVE R1, #0x0832
0x0002 0x0010009C MOVE (R1), R0
0x0003 0x3308091D MOVE R3, #0x0809
0x0004 0x7708011D MOVE R7, #0x0801
0x0005 0x30700084 LOOP SUB (R7), R3, R0
0x0006 0x1808104D OR R8, (R1), #0810
0x0007 0x8870009C MOVE (R7), R8
0x0008 0x12FFFBC6 BRN (R1), (R2), LOOP
0x0009 0x17FFFBCE BCC (R1), (R7), LOOP
Etiqueta Dirección
INIT 0x0000000
LOOP 0xFFFFFFFB
17
TECNOLÓGICO NACIONAL DE MÉXICO CAMPUS VERACRUZ JUNIO 2021
DESCRIPCIÓN DE FUNCIONAMIENTO DEL PROGRAMA 2.
En la 1er. línea estamos moviendo el valor inmediato #0x0802 al registro 0 del procesador. En la 2da. Línea
movemos el valor inmediato #0x0832 al registro 1 del procesador.
En la 3er. línea movemos el valor del Registro R0 a la localidad de memoria 0x0832.
En la 4ta. línea movemos el valor inmediato #0x0809 al registro 3 del procesador.
En la 5ta. Línea movemos el valor inmediato #0x0801 al registro 7 del procesador.
En la 6ta. Línea realizamos la operación SUB entre el valor del registro 3 (#0x0809) y el registro 0 (#0x0802), el
resultado será 0x0007 que se guardará en la localidad de memoria 0x0801.
En la 7ma. Línea realizaremos una operación OR entre el valor de la localidad de memoria 0x0832 que
corresponde al valor 0x0802 y el valor inmediato #0x0810, dando como resultado 0x0812 que se guardará en el
registro 8 del procesador.
En la 8va. Línea moveremos el valor del registro 8 del procesador que corresponde a 0x0812 a la localidad 0x0801
de la memoria.
En la 9na. Línea se compararán los valores de las localidades de memoria R1 y R2, no importa que valores tomen
las banderas de la ALU, no saltaremos.
En la 10ma. Línea compararemos los valores de las localidades 0x0832 y 0x0801, que tienen por valores 0x0802
y 0x0812, respectivamente. El resultado produce acarreo, por lo tanto, no saltaremos de regreso a loop.
NOTA: Para calcular el desplazamiento del Contador del programa (PC) en las instrucciones de salto se
deberá considerar que el PC siempre apuntará a la siguiente instrucción a ser ejecutada. Para este
programa, el salto se realizará a una dirección de memoria que se encuentra antes de la dirección de la
instrucción de salto, debido a esto el desplazamiento será negativo.
Comparación del contenido de las direcciones de memoria para la instrucción BCC
HEXADECIMAL BINARIO
(R1) 0x0802 0000 1000 0000 0010
(R7) 0x0812 0000 1000 0001 0010
RESULTADO 0xFFF0 1111 1111 1111 0000
Cálculo del desplazamiento para la instrucción BCC
HEXADECIMAL BINARIO
PC 0x000A 0000 0000 0000 1100
#ofs 0xFFFB 1111 1111 1111 1011
RESULTADO 0x0005 0000 0000 0000 0101
18