Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Laboratorio 2
Sistemas Electrónicos Digitales – SED 0 1
Facultad de Ingeniería
Objetivo:
Objetivos específicos:
Describir el funcionamiento de lenguaje ensamblador.
Una computadora como máquina electrónica sólo entiende señales eléctricas, lo que
en electrónica digital se corresponde con apagado y encendido. Por lo tanto, el alfabeto
capaz de ser comprendido por un computador se corresponde con dos dígitos: el 0 y el 1
(alfabeto binario).
Las órdenes que queramos proporcionar al computador serán un conjunto de 0s y 1s
con un significado conocido de antemano, que el computador podrá decodificar para
realizar su funcionalidad. El nombre para una orden individual es instrucción.
Programar un computador a base
de 0s y 1s (lenguaje máquina) es un
trabajo muy laborioso y poco
gratificante. Por lo que se ha inventado
un lenguaje simbólico (lenguaje
ensamblador) formado por órdenes
sencillas que se pueden traducir de
manera directa al lenguaje de 0s y 1s
que entiende el computador.
El lenguaje ensamblador requiere que
el programador escriba una línea para
cada instrucción que desee que la
máquina ejecute, es un lenguaje que
fuerza al programador a pensar como la máquina.
Si se puede escribir un programa que traduzca órdenes sencillas (lenguaje
ensamblador) a ceros y unos (lenguaje máquina), ¿qué impide escribir un programa que
traduzca de una notación de alto nivel a lenguaje ensamblador? Nada. De hecho,
actualmente la mayoría de los programadores escriben sus programas en un lenguaje,
que podíamos denominar más natural (lenguaje de alto nivel: C, pascal, FORTRAN…). El
lenguaje de alto nivel es más sencillo de aprender e independiente de la arquitectura
hardware sobre la que se va a terminar ejecutando. Estas dos razones hacen que
desarrollar cualquier algoritmo utilizando la programación de alto nivel sea mucho más
rápido que utilizando lenguaje ensamblador. Los programadores de hoy en día deben su
productividad a la existencia de un programa que traduce el lenguaje de alto nivel a
lenguaje ensamblador, a ese programa se le denomina compilador.
Ingeniería en Electrónica y Comunicaciones
Laboratorio 2
Sistemas Electrónicos Digitales – SED 0 2
Facultad de Ingeniería
Los procesadores de la familia ARM tienen una arquitectura RISC de 32 bits, ideal
para realizar sistemas empotrados de elevado rendimiento y reducido consumo, como
teléfonos móviles, PDAs, consolas de juegos portátiles, etc. Tienen las características
principales de cualquier RISC:
- Un banco de registros.
- Arquitectura load/store, es decir, las instrucciones aritméticas operan sólo sobre
registros, no directamente sobre memoria.
- Modos de direccionamiento simples. Las direcciones de acceso a memoria
(load/store) se determinan sólo en función del contenido de algún registro y el
valor de algún campo de la instrucción (valor inmediato).
- Formato de instrucciones uniforme. Todas las instrucciones ocupan 32 bits con
campos del mismo tamaño en instrucciones similares.
Donde :
Instrucción: alguno de los mnemotécnicos de la tabla 1.3
S: si se incluye este campo la instrucción modifica los indicadores (flags) de condición
de CPSR.
Rd: registro destino (donde se almacena el resultado)
Rn: registro fuente (primer operando). Todas las instrucciones menos MOV.
Rn2 ó N: segundo operando, denominado shifter_operand. Es muy versátil, pero de
momento nos conformaremos con dos posibles modos de direccionamiento: un registro o un
inmediato.
Ingeniería en Electrónica y Comunicaciones
Laboratorio 2
Sistemas Electrónicos Digitales – SED 0 4
Facultad de Ingeniería
La Tabla 1.3 ejemplifica las instrucciones aritmético-lógicas más comunes. La mayor parte
son instrucciones de dos operandos en registro que escriben su resultado en un tercer
registro. Algunas como MOV tienen sólo un operando. Otras, como CMP, no escriben el
resultado en registro, sólo modifican los bits del CPSR
Herramientas> Ver símbolos Abre una ventana que muestra todos los Shortcut+Alt+Y
símbolos definidos
2.3.1 Temas
Puede elegir entre dos temas en el panel Configuración. El valor predeterminado es un
tema Oscuro, pero también está disponible un tema de Luz .
Valores de registro
Se pueden visualizar los valores de registro
individuales para los registros R0-R15 . Al hacer
clic en los botones Dec , Bin , Hex cambia el
formato de visualización para los valores de
registro individuales. El formato se puede cambiar
universalmente con el panel Configuración . Si se
Ingeniería en Electrónica y Comunicaciones
Laboratorio 2
Sistemas Electrónicos Digitales – SED 0 9
Facultad de Ingeniería
Modos de registro
Se admiten tres modos de registro, como se describe a continuación.
Todas
En este modo, se registra el estado del emulador después de cada línea de código
ejecutada. Esto no incluye líneas que son puramente comentarios o directivas
preprocesador como EQU y DCD .
Terminación
En este modo, el estado del emulador se registra sólo una vez: cuando se alcanza el final
del archivo, o se encuentra un código de operación STOP .
EJERCICIO 1
;Ejemplos con operadors inmediatos
ADD R0, R1, #4000 ; R0= R1 +4000
SUB R0, R0, #4080 ; R0= R0-4080 y los indicadores según resultado
AND R0, R0, #0x1F ; R0= 0 en [5...31]
ORR R0, R0, #0xFF0000 ; R=1 en [24..31]
BIC R0, R0, #0x1F ; R0=0 en [0..4]
Conclusión: Los operadores realizan su función, se ingresaron una por una las
instrucciones y se verificó en los resultados y si realizan sus operaciones
independientemente si se cambian o no los valores.
Ingeniería en Electrónica y Comunicaciones
Laboratorio 2
Sistemas Electrónicos Digitales – SED 0 1
Facultad de Ingeniería
EJERCICIO 2
Conclusión: En este ejercicio se puede observar que los operadores de registros si funcionan
y que el programa se genera una ventana donde se muestran los indicadores y registros en
forma de bits.
EJERCICIO 3
MOV R2, #0B11110000 ; /* R2 <- 11110000 */
MOV R3, #0B10101010 ; /* R3 <- 10101010 */
AND R0, R2, R3 ; /* R0 <- R2 AND R3 */
ORR R1, R2, R3 ; /* R1 <- R2 OR R3 */
MVN R4, R0 ; /* R4 <- NOT R0 */
MOV R0, #0X80000000
Ingeniería en Electrónica y Comunicaciones
Laboratorio 2
Sistemas Electrónicos Digitales – SED 0 1
Facultad de Ingeniería
EJERCICIO 4
MOV r2, #0xFB
MVN r1, r2
ADD r2,r1,r3
SUB r8,r6,#240 ; sets the flags on the result
RSB r4,r4,#1280 ; subtracts contents of r4 from 1280
ADC r5, r4,r2
TST R0,#&20 ;Test case of character in R0
end
Ingeniería en Electrónica y Comunicaciones
Laboratorio 2
Sistemas Electrónicos Digitales – SED 0 1
Facultad de Ingeniería
Para este caso la sintaxis tenia errores en las líneas 3 y 4, en la 3 existía una , de
más y en la 4 hacía falta un operador en la ROR.
EJERCICIO 6 – Verifique con los ejemplos anteriores y corrija el programa para se pueda
ejecutar.
ADD R0, R1, #1 @ R0 = R1 + 1
ADD R0, R1, R2 @ R0 = R1 + R2
BIC R4, #0x05 @ Borra los bits 0 y 2 de R4
MOV R11,#0 @ Escribe cero en R11
SUB R3, R2, R1 @ R3 = R2 - R1
SUBS R3, R2, R1 @ R3 = R2 - R1. Modifica los flags del registro
@ estado en función del resultado
ADDeq R7, R1, R2 @ Si el bit Z de CPSR está activo R7 = R1 + R2
CODIGO CORREGIDO:
EJERCICIO 7 – ejemplo de función practica. Este ejemplo es para que usted compruebe el
funcionamiento de un programa completo , escrito en lenguaje ensamblador y con un
objetivo claro. El programa de función matemática, realiza la sucesión de Fibonacci, que es
la siguiente sucesión infinita de números naturales:
;Ejemplo de encontrar el numero de fibbonac
;La sucesión comienza con los números 0 y 1,2 y a partir de estos,
;«cada término es la suma de los dos anteriores», es la relación
;de recurrencia que la define.
;A los elementos de esta sucesión se les llama números
;de Fibonacci.
;En matemáticas, la sucesión de Fibonacci (a veces llamada
erróneamente serie de Fibonacci)
;es la siguiente sucesión infinita de números
naturales:
Num EQU 223