Está en la página 1de 14

1

INGENIERIA DE SISTEMAS

PLATAFORMAS TECNOLOGICAS

PRESENTADO POR

CARLOS DANIEL ALVAREZ QUINTERO

MATEO DAVID IMBRETH MARTINEZ

NUMERO DE CURSO GRUPO A

UNIVERSIDAD DE PAMPLONA

PAMPLONA

OCTUBRE

2023
2

1. Revisar el tutorial del el Simulador ensamblador simple de 16 bits en Javascript.

2. Ingresar a https://cpulator.01xz.net/?sys=arm-de1soc
3

3. Revisar el kit de instrucciones del lenguaje assembler de 16 bits

4. Ejecutar paso a paso el programa de ejemplo


4

5. Describir el cambio de los registros por la ejecución de cada instrucción

Paso a paso

1. Definimos con .equ una constante que contenga la dirección de memoria de la terminal

y tambien fefinimos un símbolo externo .global _start al que podemos acceder desde otro

programa, el lugar donde escribamos la etiqueta _start marca el inicio del programa.

2. Iniciamos el programa
5

3. Con ldr (load register) cargamos en r0 la dirección de memoria de la terminal

JTAG_UART, luego con mov hacemos que r1 comience en 0 y por ultimo cargamos en r2 la

dirección de memoria de un arreglo que llamamos hello y que está definido al final con la

directriz .asciz, la cual se encarga de mostrar cadenas de caracteres en memoria y agregar un 0 al

final.

4. Si compilamos y observamos la memoria donde está "hello world", observamos que la

cadena comienza en la dirección 0x24 y después de la 'd' hay un punto cuyo valor es 0.

5. Creamos la etiqueta carácter que ejecutará la secuencia necesaria para imprimir hello

world.

6. Con ldrb (load register byte) podemos leer datos de un arreglo byte por byte con un

índice. Es como si leyéramos un arreglo en lenguaje C. En esta instrucción se le asigna a r3 el

contenido de r2 según el índice r1.


6

7. Usando str (Store Register) como el carácter queda almacenado en r3 lo enviamos a la

terminal.

8. Con la instrucción add incrementamos r1 en uno.

9. Usando cmp (Compare) comparamos el estado de r3 con el número 0.

10. Con la instrucción bne (Branch if not equal) verificamos que si no son iguales

(haciendo alusión al paso 9) se repite todo a partir de la etiqueta caracter, en caso contrario el

desvío no ocurre y sigue la ejecución del programa hacia su fin.

11. Con Fin finaliza el programa.


7

Comportamiento (Paso a paso)

1. Inicio del programa


8

2. Inicio del bucle


9

El bucle se repite hasta que r3 sea igual a 0


10

3. Final del programa

6. Realice un programa que compare dos números y muestre por pantalla el mayor.

Repita las actividades 3 y 4, Guiarse por el kit de instrucciones.


11

Comportamiento (paso a paso)


12
13

7. Realice un glosario de los términos relacionados con sistemas operativos

utilizados en el simulador.

.equ: La instrucción .equ se utiliza para definir un símbolo con un valor constante. Este

símbolo se puede utilizar en lugar del valor numérico real en el código ensamblador, lo que

puede hacer que el código sea más legible y fácil de mantener.

.global _start: La instrucción .global _start se utiliza para declarar que la etiqueta _start

es global y puede ser accedida desde otros archivos de ensamblador o módulos de código. La
14

etiqueta _start es comúnmente utilizada como el punto de entrada de un programa en lenguaje

ensamblador para sistemas basados en UNIX y sistemas operativos similares.

Ldr: Se utiliza para cargar un dato desde la memoria a un registro.

Cmp: La instrucción cmp se utiliza para realizar una comparación entre dos operandos.

Aunque la instrucción cmp no almacena el resultado de la comparación en un registro, establece

los flags (banderas) del estado del procesador en función de la relación entre los operandos.

Bge: La instrucción bge es un mnemónico que se utiliza para realizar un salto

condicional. La abreviatura "bge" significa "branch if greater than or equal" (saltar si es mayor o

igual).

Str: La instrucción str es utilizada para almacenar (escribir) el contenido de un registro

en la memoria.

JTAG UART: JTAG (Joint Test Action Group) UART (Universal Asynchronous

Receiver/Transmitter) se refiere a la utilización de la interfaz JTAG para implementar una

comunicación UART en sistemas embebidos, como los que incluyen procesadores ARM.

Bne: La instrucción bne es un mnemónico que se utiliza para realizar un salto

condicional. La abreviatura "bne" significa "branch if not equal" (saltar si no es igual).

.asciz: La directiva .asciz se utiliza para definir una cadena de caracteres en el código

fuente.

También podría gustarte