Post on 19-Dec-2015
description
Instituto Tecnológico de Culiacán
Introducción al Lenguaje Ensamblador (I)
MC Jaredt Gpe. Torres Lopes
Culiacán, Sin. Febrero de 2015.
Introducción
Los lenguajes de alto nivel como: C++, C#, Visual Basic, Turbo Pascal, etc. tienen portabilidad.
La portabilidadportabilidad permite utilizar ese lenguaje de programación sin importar el tipo de computadora (marca o velocidad del microprocesador, marca de la PC, etc).
Un programa en lenguaje ensamblador escrito para un micro de Motorola® no funcionara para otro micro de Atmel® o Microchip®.
Introducción
Para escribir un programa en lenguaje ensamblador se requiere conocer el hardwarehardware (arquitectura) de la computadora, su conjunto de instruccionesinstrucciones y sus reglasreglas de uso.
Los bloques fundamentales de información de una computadora son los bits y los bytes.
Estos proporcionan los medios por los cuales la computadora puede representar datos e instrucciones en la memoria.
Elementos del Hardware
Los elementos principales de hardware interno de la computadora son:– Microprocesador – Memoria– Registros.
Los elementos de hardware externo son dispositivos de entrada / salida como:– Teclado– Monitor – Disco duro, etc.
Elementos de Software
El software consta de diversos programas y archivos de datos (incluyendo al sistema operativo) almacenados en el disco.
El microprocesador ejecuta las instrucciones del programa, y los registros manejan la aritmética, movimiento de datos y el direccionamiento.
Un programa en lenguaje ensamblador consiste en uno o más segmentos para definir datos y almacenar instrucciones de máquina y un segmento llamado stack (pila) que contiene direcciones almacenadas.
Bits y Bytes
La unidad más pequeña de información en la computadora es el bit.
Un bit puede tomar el valor de cero (apagado) o uno (encendido).
A un grupo de ocho bits se le denomina byte.
Un byte puede representar localidades de almacenamiento (memoria interna, discos duros, etc.).
Bits y Bytes
Los ocho bits de datos pueden representar valores numéricos, símbolos y/o caracteres.
Ocho bits permiten 256 combinaciones diferentes de condiciones de encendido / apagado.
Bytes relacionados
Un programa puede conjuntar un grupo de uno o más bytes que definen un valor particular a los que se les denomina campocampo.
La computadora define ciertos tamaños:– Palabra: Campo formado por 2 bytes (16 bits).– Palabra doble: Campo formado por 4 bytes (32 bits).– Palabra cuádruple: Campo formado por 8 bytes (64 bits).– Párrafo: Un campo de 16 bytes (128 bits).– Kilobyte (kB): 210 bytes o 1024 bits, forman un kilobyte (kB).– Megabyte (MB): 220 es igual 1,048,576.
Números binarios
La computadora únicamente puede trabajar con números binarios (base 2).
Una colección de bits puede representar cualquier valor numérico.
El valor de un número binario depende de las posiciones relativas de cero a uno de los bits.
Números Binarios
En el siguiente número de ocho bits, todos los bits se toman como uno (encendido):
El valor final será de 255.
Posición 7 6 5 4 3 2 1 0
Valor del bit
1 1 1 1 1 1 1 1
Valor de la posición
128 64 32 16 8 4 2 1
Aritmética binaria
Los números binarios positivos tienen en su último bit un cero.
Los números binarios negativos tienen un uno en su último bit.
Realizar la suma de dos números positivos no están complicada. Por ejemplo: sumar 60 y 53.
Aritmética binaria
Decimal
60
+ 53
113
Binario
00111100
+00110101
01110001
Suma de números positivos
Aritmética binaria
Un valor negativo se expresa en notación de notación de complemento a doscomplemento a dos.
Para representar un número en binario se sigue la siguiente regla:– Invierta los números y sume 1
Por ejemplo: para representar al número –65 se tendría: 10111111.
Aritmética binaria
Decimal
65
-42
23
Binario
01000001
+11010110
(1)00010111
Suma de números negativos
El resultado es 23, ya que el bit de acarreo se pierde.
Representación Hexadecimal
El lenguaje ensamblador hace uso considerable del formato hexadecimal.
DecimalDecimal HexadecimalHexadecimal DecimalDecimal HexadecimalHexadecimal
0 0 8 8
1 1 9 9
2 2 10 A
3 3 11 B
4 4 12 C
5 5 13 D
6 6 14 E
7 7 15 F
Memoria Interna
Las computadores tienen dos tipos de memoria:– Memoria de acceso aleatorio (RAM) – Memoria de sólo lectura (ROM).
Los bytes de memoria se enumeran en forma consecutiva, iniciando con 00.
Cada localidad tiene un número de dirección único.
Memoria Interna
64k sistema base de ROM
192k área de expansión de memoria (ROM)
128k área de despliegue de video (RAM)
640k memoria (RAM)
Inicio Dirección Dec
1024k
960k
768k
640k
cero
Hex
F0000
F0000
C0000
A0000
00000
Memoria
superior
Memoria
convencional
ROM
Los datos e instrucciones grabados en un chip ROM no pueden ser alterados.
El BIOS (Sistema Básico de Entrada/Salida) de ROM que inicia en la dirección 768k, maneja los dispositivos de entrada y salida.
La ROM que inicia en 960k controla funciones básicas de la computadora.
RAM
Dispone de una “hoja de trabajo” para almacenamiento temporal y ejecución de programas.
También es llamada memoria de lectura – escritura.
Se pierde cuando se apaga la computadora.
Direccionamiento de localidades de memoria
Un procesador, de acuerdo a su modelo, puede accesar uno o más bytes de memoria a la vez.
El sistema almacena los bytes mediante una secuencia inversa.
En el siguiente ejemplo se desea almacenar el número decimal 1025 (0401H), el cual ocupa dos bytes (una palabra) en memoria.
Direccionamiento de localidades de memoria
Suponiendo que el microcontrolador transfiere 0401H de un registro a las localidades de memoria 5612 y 5613.
04 01
01 04
RegistroRegistro
MemoriaMemoria
Localidad 5612
Byte menos significativo
Localidad 5613
Byte mas significativo
Direccionamiento de localidades de memoria
En el lenguaje ensamblador se tiene que distinguir entre la dirección y los contenidos de memoria.
En este ejemplo, el contenido de la localidad 5612 es 01 y el contenido de la localidad 5613 es 04.
01 04MemoriaMemoria
Localidad 5612
Byte menos significativo
Localidad 5613
Byte mas significativo