Laboratorio 1 - Introduccion A Ensamblador 18.SEP.180

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 3

Laboratorio 1.

1. Abrir el Proyecto que se encuentra en Moodle en Tema 1 y asegurese que en el compilador el código está en
modo de simulación

2. Compilar el código

3. Cargar en la tarjeta

4. Correr el programa hasta que la función main en el primer corchete esté seleccionada.

¿Cuáles son los valores del SP (Stack Pointer o R13), LR (Link Register o R14) y PC (Program Counter o R15)?

R13= 0X20000408

R14= 0X00000449

R15= 0X00000500ara mi tarjeta F411RE… SP = 0x2000_1918, LR = 0x0800_0223, PC = 0x0800_08E8

5. Abrir la ventana de desensamblador. ¿A qué instrucciones apunta la fleche amarilla y cual es la dirección?
¿Cómo esta dirección se relaciona con el valor del PC?

Apunta a la dirección R15 =0x00000500 ya que apunta a la dirección y subrutina de PCta a la instrucción “SUB SP,
SP,#0x28” y la dirección es 0x0800_08E8 y se relaciona a la siguiente dirección a ejecutar.

6. Ejecute una instrucción de máquina con la Tecla F10 mientras la ventana de desensamblador está seleccionada.
¿Qué dos registros han cambiado (PISTA: Deben haberse marcados en la ventana de registros) y como se
relacionan en relación a la instrucción justamente ejecutada?
Cambiaron R13= 0x200003E0 Y R15= 0x00000502 de la ventana de registros se le asigno una nueva dirección a
R15(PC)

El SP y el PC. El SP se desplazó 0x28 (40 10) posiciones menos lo que arroja el resultado de 0x200018F0, el PC
apunta a 0x0800_08EA que es la siguiente instrucción a ejecutar.

7. Observe la ventana de desensamblador. ¿Ve ud alguna instrucción de 4 bytes de largo? Si es así, ¿cuales son
las primeras cuatro?

Sí. STRD, STRD, BL.W (my_strcpy), BL.W (my_capitalize)

8. Ejecute hasta la instrucción BL.W (F11). Tome los valores de SP, LR y PC.

SP= 0X200003E0

LR=0X00000449

PC=0X00000504ES: SP = 0x200018F0, PC = 0x080008FA, LR = 0x08000223

9. ¿Cuáles son los valores del SP, PC y LR? ¿Porque cambiaron de esta manera? ¿El valor del PC está de acuerdo
con el que muestra la ventana de desensamblador?

SP= 0X200003E0

LR=0X00000449

PC=0X00000504 no esta deacuerdo con la ventana de registro

Sí. PC ha cambiado pues debe cambiar a la instrucción a ejecutar, en este caso la cabeza de la función o la
dirección inicial de la subrutina.

10. ¿Qué registros guardan los argumentos de my_strcpy (src y dst) y cuales son sus contenidos

Src hello world

Dst longitud de palabra de 20

11. Observe en la ventana de memoria (View – Memory Window – Memory 1) las direcciones de arriba
mencionadas, observe a que apunta R0 y que el otro registro R1 a donde apunta.

Nada.

12. ¿Cuáles son los contenidos de la memoria apuntados por src?

Hello World!

13. ¿Cual es el contenido de memoria apuntado por dst?

Una cadena vacía

14. Ejecute paso a paso y observe como es copiado los caracteres. ¿Qué registro mantiene los caracteres?

R2
15. ¿Cuáles son los valores del valor copiado, punter src y punter dst, link register (R14) y el program counter (R15)
cuando el código llega a la instrucción de retorno de subrutina BX LR?

16. Ejecute la instrucción BX LR. ¿Cual es el valor actual del PC?

17. ¿Cuál es la relación entre el valor del PC actual luego y el LR anterior luego de ejecutar la instrucción BX LR.
Explique.

PC = LR – 1. El procesador resume en la dirección anterior debido a que el ultimo bit de LR esta a 1 indicando
“Thumb mode”. Esto es debido a que el primer bit del PC siempre está se debe ajustar a “0”, así las instrucciones
están siempre alineadas a la palabra o media palabra.

También podría gustarte