24
Instituto Tecnológico de Culiacán Introducción al Lenguaje Ensamblador (I) MC Jaredt Gpe. Torres Lopes Culiacán, Sin. Febrero de 2015.

1.-Introduccion Al Lenguaje Ensamblador

Embed Size (px)

DESCRIPTION

kkñ

Citation preview

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

Referencias

Peter Abel. Lenguaje Ensamblador y Programación Lenguaje Ensamblador y Programación para PC-IBM y Compatiblespara PC-IBM y Compatibles. Pearson Education. Tercera Edición.