Вы находитесь на странице: 1из 81

Lenguaje ensamblador

MSI Juan Carlos Huerta Flores

Reglamento
Art. 37: El alumno deber asistir regular y puntualmente
a sus clases.
Art. 38: Es obligacin de los alumnos:

Abstenerse de interrumpir las clases cuando stas se hayan


iniciado.
Conservar el orden y la limpieza en los salones de clase
Abstenerse de fumar y de introducir alimentos.
Conducirse de manera respetuosa.
Est prohibido se hagan o se reciban llamadas de telfonos
celulares.

Art. 39: Es obligacin del alumno cumplir por lo menos


con el 80% de las asistencias para tener derecho a
examen y no se justificar ninguna falta.

EVALUACIN
40%
50%
10%

Examen parcial
Examen final (80% Terico y 20% prctico)
Evaluacin continua (Prcticas)

Semana 7 examen bimestral


Semana 13 examen final
Semana 14 cierre de firma de actas finales

Prcticas
Cada prctica a entregar (Blackboard) debe
contenerlos siguientes elementos:

Caratula
Objetivo
Diagrama de flujo
Cdigo
Resultados
Conclusiones
Bibliografa

Examen prctico final

El examen final deber de ser entregado (Blackboard) en una


carpeta (ZIP) con la nomenclatura Apellido paterno_Apellido
materno_Nombre(s) y debe contener los siguientes elementos:

Cartula
Objetivo
Diagrama de flujo
Cdigo
Resultados
Conclusiones
Bibliografa
Archivo asm
Archivo .obj
Archivo .exe

Bibliografa
1. Irvine, Kip R.
Lenguaje ensamblador: para computadoras basadas en intel.
Pearson, 2008.
2. Louden, Kenneth C.
Lenguajes de programacin: Principios y Prctica
Thompson, 2004.
3. Tanenbaum, Andrew S.
Organizacin de computadoras: un enfoque estructurado.
Prentice Hall, 2000

OBJETIVOS GENERALES
DESCRIBIR LOS ELEMENTOS, FUNCIONES Y ARQUITECTURA
DE LOS MICROPORCESADORES

PROGRAMAR EN LENGUAJE DE BAJO NIVEL

TEMARIO
1. Conceptos bsicos

1.1 Informacin en las computadoras

1.1.1 Unidades de informacin


1.1.2 Sistemas numricos
1.1.3 Conversin de nmeros binarios a decimales
1.1.4 Conversin de nmeros decimales a binarios
1.1.5 Sistema hexadecimal

1.2 Mtodos de representacin de datos en la computadora


1.2.1 Cdigo ASCII
1.2.2 Mtodo BCD

1.3 Trabajando con el lenguaje ensamblador


1.3.1 Proceso de creacin de un programa
1.3.2 Registro del microprocesador
1.3.3 Modos de direccionamiento
1.3.4 Guardar y cargar los programas
1.3.5 Condiciones, ciclo y bifurcaciones

TEMARIO
2. Programacin en ensamblador

2.1 Requerimientos para la programacin en ensamblador


2.1.1 Software necesario
2.1.2 Utilizacin del masm
2.1.3 Uso del enlazador (Linker)

2.2 Formato de un programa en ensamblador


2.3Proceso de ensamblado
2.3.1 Segmentos
2.3.2 Tabla de smbolos

2.4 Tipos de instrucciones

2.4.1 Movimiento de datos


2.4.2 Operaciones lgicas y aritmticas
2.4.3 Saltos, ciclos y procedimientos

TEMARIO
3. Instrucciones

3.1 Instrucciones

3.1.1 Formato de una instruccin ensamblador


3.1.2 Instrucciones de operacin sobre datos
3.1.3 Instrucciones lgicas y aritmticas
3.1.4 Instrucciones para control de procesos

4. Interrupciones
4.1 Introduccin

4.1.1 Interrupciones internas de hardware


4.1.2 Interrupciones externas de hardware
4.1.3 Interrupciones de software

TEMARIO

5. Introduccin al manejo de archivos


5.1 Conceptos bsicos
5.2 Formas de trabajo con archivos
5.2.1 Mtodo FCB
5.2.2 Operaciones sobre archivos
5.2.2.1 Abrir archivo
5.2.2.2 Crear un archivo nuevo
5.2.2.3 Escritura secuencial
5.2.2.4 Lectura secuencial
5.2.2.5 Lectura y escritura aleatoria
5.2.2.6 Cerrar un archivo

TEMARIO

6. Macros y procedimientos
6.1 Procedimientos

6.1.1 Definicin de procedimiento


6.1.2 Sintaxis de un procedimiento

6.2 Macros

6.2.1 Definicin de una macro


6.2.2 Sintaxis de una macro
6.2.3 Bibliotecas de macros

Antes de comenzar
Bit: Es la unidad ms pequea de informacin
que tiene una computadora (0,1).
Byte: Es el conjunto de ocho bits.
Nmero binarios
Nmeros hexadecimales

Aritmtica Binaria

1.
2.
3.
4.
5.

Ejercicios:

1010+1100=
1111+1111=
10101*10=
1101-100=
1101+0110=

UNIDAD 1. CONCEPTOS
BSICOS

TEMAS

Conceptos bsicos

1.1 Informacin en las computadoras

1.1.1 Unidades de informacin


1.1.2 Sistemas numricos
1.1.3 Conversin de nmeros binarios a decimales
1.1.4 Conversin de nmeros decimales a binarios
1.1.5 Sistema hexadecimal

TEMAS
1.2 Mtodos de representacin de datos en la
computadora
1.2.1 Cdigo ASCII
1.2.2 Mtodo BCD

1.3 Trabajando con el lenguaje ensamblador

1.3.1 Proceso de creacin de un programa


1.3.2 registro del microprocesador
1.3.3 Modos de direccionamiento
1.3.4 Guardar y cargar los programas
1.3.5 Condiciones, ciclo y bifurcaciones

Unidades de informacin

Bit: La unidad ms pequea de


informacin en una computadora se le
llama bit. Con un bit se puede representar
solo un valor de dos posibles valores
diferentes, ejemplo: cero o uno, falso o
verdadero.

Unidades de informacin

Nibble: es una coleccin de 4 bits. Con un


nibble se presenta un nmero BCD y
tambin puede representar un dgito
hexadecimal.

Unidades de informacin
Byte: Consiste de 8 bits. Las referencias hacia cierta
localidad de memoria en todos los microprocesadores
nunca es menor que un byte, por lo tanto, se considera
el dato localizable ms pequeo.
Los bits de un byte normalmente se numeran desde 0
hasta 7. El bit 0 se le llama bit de ms bajo orden o
menos significante, el bit 7 se considera el bit de ms
alto orden o el ms significante.

Unidades de informacin
Un byte consta tambin de 2 nibbles, los bits 0, 1, 2 y 3
forman el llamado nibble de menor orden, y los bits 4, 5,
6 y 7 forman el nibble de mayor orden. Como un byte
est formado de exactamente dos nibbles, es posible
representar
cualquier
valor
con
dos
dgitos
hexadecimales.

Unidades de informacin

Palabra: es un grupo de 16 bits, el bit 0 es el bit de ms bajo orden


y el bit 15 es el de ms alto orden. Una palabra se puede dividir en
2 bytes llamados igualmente de bajo y alto orden. Tambin una
palabra puede considerarse como un grupo de 4 nibbles.

Se considera una palabra doble a un grupo de 32 bits. Un grupo de


mayor nmero de bits simplemente se nombra por su nmero de
bits, ejemplo: palabra de 64 bits, palabra de 128 bits, etc.

Sistemas numricos

Sistema Decimal
Sistema Octal
Sistema Hexadecimal

Sistema Decimal
Es un sistema de numeracin posicional en el
que las cantidades se representan utilizando
como base aritmtica las potencias del nmero
diez. El conjunto de smbolos utilizado se
compone de diez cifras : cero (0) - uno (1) dos (2) - tres (3) - cuatro (4) - cinco (5) - seis (6)
- siete (7) - ocho (8) y nueve (9).

Sistema Octal
Es un sistema numrico en base 8 y utiliza los
dgitos del 0 al 7.
A veces se utiliza la numeracin octal en vez de
la hexadecimal. Ya que tiene la ventaja de que
no requiere utilizar otros smbolos diferentes de
los dgitos.

Conversin de nmeros
binarios a decimales

100100112 =
111100112 =
11001112 =
100111112 =

Conversin de nmeros
decimales a binarios

Sistema Hexadecimal
Es el sistema de numeracin posicional que tiene como
base el 16. Su uso actual est muy vinculado a
la informtica y ciencias de la computacin, pues
las computadoras utilizan el byte u octeto como unidad
bsica de memoria; y, debido a que un byte representa
28 valores posibles, y esto puede representarse como ,
que equivale al nmero en base 16 , dos dgitos
hexadecimales corresponden exactamente a un byte.

Conversin sistema binario a


hexadecimal
La base de nmeros binarios est representada por 2 y
la base de nmeros Hex est representada por 16. A fin
de convertir el binario nmero en su equivalente
hexadecimal, tenemos que dividir el nmero binario en
grupos de 4 bits binarios y, a continuacin, convertimos
cada grupo en su equivalente hexadecimal.

Ejemplos:

Ejemplos:
Convertir el nmero binario 11111101011100112 a su
equivalente hexadecimal:

Ejemplos:

Convertir
un
nmero
hexadecimal
(9DB.A5)16 a su equivalente binario:

Ejercicios

Transformar los siguiente nmeros a la


base indicada:
10210= 2
100111002= H
3710= 2
111101012= H
7110= 2
100011102= H
4310= 2
011010012= H
5710= 2
001000012= H

Mtodos de representacin de
datos en la computadora

Cdigo ASCII
Acrnimo ingls de American Standard Code
for Information Interchange (Cdigo Estndar
Estadounidense para el Intercambio de
Informacin).
Fue creado en 1963 por el Comit
Estadounidense de Estndares como una
evolucin de los conjuntos de cdigos utilizados
entonces en telegrafa.

En 1967, se incluyeron las minsculas, y


se redefinieron algunos cdigos de control
para formar el cdigo conocido como USASCII.
El cdigo ASCII utiliza 7 bits para
representar los caracteres, aunque
inicialmente empleaba un bit adicional (bit
de paridad) que se usaba para detectar
errores en la transmisin.

A menudo se llama incorrectamente ASCII


a otros cdigos de caracteres de 8 bits,
como el estndar ISO-8859-1, que es una
extensin que utiliza 8 bits para
proporcionar
caracteres
adicionales
usados en idiomas distintos al ingls,
como el espaol.

Mtodo BCD

Es un acrnimo de Binary Coded Decimal.


En esta notacin se utilizan grupos de 4
bits para representar cada dgito decimal
del 0 al 9.
Con este mtodo podemos representar
dos dgitos por byte de informacin.

Mtodo BCD
An cuando este mtodo es mucho mas
prctico para representacin de nmeros en la
memoria en comparacin al ASCII, todava se
queda por debajo del binario, ya que con un
byte en el mtodo BCD solo podemos
representar dgitos del 0 al 99, en cambio, en
formato binario podemos representar todos los
dgitos desde 0 hasta 255.

Ejemplos

Ejercicio

Transformar los
decimales a BCD:
73=
142=
25=
41=
33=

siguientes
55=
251=
62=
1328=
99=

nmeros

Trabajando con lenguaje


ensamblador

Proceso de creacin de un
programa

Segmento: Es un rea especial en un


programa que inicia en un lmite de un
prrafo, esto es, en una localidad
regularmente divisible entre 16 o 10 hex.

Segmento de cdigo

CS: contiene las instrucciones de mquina


que son ejecutadas. Por lo comn, la
primera instruccin ejecutable esta en el
inicio del segmento, y el sistema operativo
enlaza a esta localidad para iniciar la
ejecucin del programa.

Segmento de datos

DS: contiene datos, constantes y reas de


trabajo definidos por el programa. El
registro DS direcciona el segmento de
datos.

Segmento de pila

Contiene los datos y direcciones que se


necesitan guardar temporalmente para el
uso de las llamadas a subrutinas. El
segmento SS direcciona al segmento de
pila.

Registros

Los registros del procesador se emplean


para controlar instrucciones en ejecucin,
manejar direccionamiento de memoria y
proporcionar capacidad aritmtica.

Registros de segmento

Tiene 16 bits de longitud y facilita un rea


de memoria para direccionamiento
conocida como el segmento actual.

Registro CS: Esta direccin de segmento,


ms un valor de desplazamiento en el registro
apuntador de instruccin (IP), indica la
direccin de una instruccin que es buscada
para su ejecucin.

Registros de segmento
Registro DS: Esta direccin de segmento, ms un valor
de desplazamiento en una instruccin, indica la
referencia de un byte especifico en el segmento de
datos.
Registro SS: Permite la colocacin en memoria de una
pila, para el almacenamiento temporal de direcciones y
datos. Esta direccin de segmento, ms un valor de
desplazamiento en el registro apuntador de pila (SP),
indica la palabra actual en la pila que esta siendo
direccionada.

Registro apuntador
El registro apuntador de instrucciones (IP) de 16
bits contiene el desplazamiento de direccin de
la siguiente instruccin que se ejecuta.
El registro IP esta asociado con el registro CS
en el sentido de que el IP indica la instruccin
actual dentro del segmento de cdigo que se
esta ejecutando actualmente.

Registro apuntador
En el ejemplo siguiente, el registro CS contiene
25A40H y el IP contiene 412H. Para encontrar la
siguiente instruccin que ser ejecutada el
procesados combina las direcciones en el CS y
el IP as:

Segmento de direccin en el registro CS:


Desplazamiento de direccin en el registro IP:
Direccin de la siguiente instruccin:

25A40H
+
412H
25E52H

Registros de propsito general


Los registros de propsitos generales AX, BX, CX y DX
son
los
caballos
de
batalla
o
las herramientas del sistema.
Son los nicos en el sentido de que se puede
direccionarlos como una palabra o como una parte de
un byte. El ultimo byte de la izquierda es la parte "alta", y
el ultimo byte de la derecha es la parte "baja" por
ejemplo, el registro CX consta de una parte CH (alta) y
una parte CL (baja), y puede referirse a cualquier parte
por su nombre. Las instrucciones siguientes mueven
ceros a los registros CX, CH y CL respectivamente.

Registros de propsito general

Los procesadores 80386 y posteriores


permiten el uso de todos registros de
propsito general, mas versiones de 32
bits;
EAX,
EBX
y
EDCX.

Registros de propsito general


El registro AX, el acumulador principal, es
utilizado para operaciones que implican
entrada/salida y la mayor parte de la aritmtica.
Por ejemplo, las instrucciones para multiplicar,
dividir y traducir suponen el uso del AX.
Tambin, algunas operaciones generan cdigo
ms eficientes si se refiere al AX en lugar de los
otros registros.

Registros de propsito general

Registro BX.
El BX es conocido como el registro base
ya que es el nico registro de propsitos
generales que pueden ser unos ndices
para direccionamiento indexado. Tambin
es comn emplear al BX para clculos.

Registros de propsito general

El CX es conocido como el registro


contador. Puede contener un valor para
controlar el nmero de veces que un ciclo
se repite o un valor para corrimiento de
bits, hacia la derecha o hacia la izquierda.
El CX tambin es usado para muchos
clculos.

Registros de propsito general

Registro DX
El DX es conocido como el registro de
datos.
Algunas
operaciones
de
entrada/salida requieren su uso, y las
operaciones de multiplicacin y divisin
con cifras grandes suponen al DX y al AX
trabajando juntos. Puede usar los
registros de propsitos para suma y resta
de cifras de 8, 16, 32 bits.

Registros de banderas
Los registros de banderas sirven parar indicar el
estado actual de la maquina y el resultado del
procesamiento, Cuando algunas instrucciones piden
comparaciones o clculos aritmticos cambian
el
estado
de
las
banderas.
Las banderas estn en el registro de banderas en las
siguientes posiciones:

Registros de banderas
Las banderas ms comunes son las siguientes:
OF (Over flow flag, desbordamiento). Indica el desbordamiento
de un bit de orden alto (mas a la izquierda) despus de una
operacin aritmtica.
DF (Direction flag, Direccion). Designa la direccin hacia la
izquierda o hacia la derecha para mover o comparar cadenas de
caracteres.
IF (Interruption flag, Interrupcion): Indica que una interrupcin
externa, como la entrada desde el teclado sea procesada o
ignorada.
TF (Trap flag, Trampa). Examina el efecto de una instruccin sobre
los registros y la memoria. Los programas depuradores como
DEBUG, activan esta bandera de manera que pueda avanzar en la
ejecucin de una sola interrupcin a un tiempo.

Modos de direccionamiento
Son las diferentes maneras de especificar un
operando dentro de una instruccin en lenguaje
ensamblador.
Un modo de direccionamiento especifica la
forma de calcular la direccin de memoria
efectiva de un operando mediante el uso de la
informacin contenida en registros y / o
constantes, contenida dentro de una instruccin
de la mquina o en otra parte.

Tipos de
direccionamiento

Implcito
En este modo de direccionamiento no es necesario
poner ninguna direccin de forma explcita, ya que en el
propio cdigo de operacin se conoce la direccin del
(de los) operando(s) al (a los) que se desea acceder o
con el (los) que se quiere operar.
Supongamos una arquitectura de pila, las operaciones
aritmticas no requieren direccionamiento explcito por
lo que se ponen como:
add
sub

Inmediato
En este modo el operando es especificado en la
instruccin misma. En otras palabras, una instruccin de
modo inmediato tiene un campo de operando en vez de
un campo de direccin. El campo del operando contiene
el operando actual que se debe utilizar en conjunto con
la operacin especificada en la instruccin. Las
instrucciones de modo inmediato son tiles para
inicializar los registros en un valor constante.
Ejemplo:
MOV A,17H

Directo

El campo de operando en la
instruccin contiene la direccin
en memoria donde se encuentra
el operando.
En este modo la direccin
efectiva es igual a la parte de
direccin de la instruccin. El
operando reside en la memoria y
su
direccin
es
dada
directamente por el campo de
direccin de la instruccin.

Ejemplo:

MOV AX,[17H]

Indirecto
El
campo
de
operando contiene
una direccin de
memoria, en la que
se
encuentra
la
direccin efectiva del
operando.

De registro

Los datos u operandos se encuentran en


registros.
Transfiere un byte o palabra desde el
registro fuente hasta el registro destino.
Ejemplo:
Mov CX,DX
Mov AX,BX

Condiciones
En programacin, una sentencia condicional es una
instruccin o grupo de instrucciones que se pueden
ejecutar o no en funcin del valor de una condicin.
Los tipos ms conocidos de sentencias condicionales
son el SI..ENTONCES (if..then), el SI..ENTONCES..SI
NO (if..then..else) y el SEGN (case o switch), aunque
tambin podramos mencionar al lanzamiento de errores
como una alternativa ms moderna para evitar el
"anidamiento" de sentencias condicionales.

Las sentencias condicionales constituyen,


junto con los bucles, los pilares de
la programacin estructurada, y su uso es
una
evolucin de una
sentencia
en lenguaje ensamblador que ejecutaba la
siguiente lnea o no en funcin del valor
de una condicin.

Saltos condicionales

JE o JZ: Salta si est prendido el bit cero


del registro de banderas.
Objetivo: Saltar si la ltima comparacin
realizada da igual.

JA o JNBE: Salta si el bit carry (CF) o el


bit cero (ZF)del registro de banderas est
desactivado.
Objetivo: Esto significa que el salto se
realiza solo si la bandera CF esta
desactivada o si la bandera ZF esta
desactivada (que alguna de las dos sea
igual a cero).

JB o JNAE: Salta si CF est activada.


Objetivo: Se efecta el salto si CF esta
activada.

JG o JNLE: Salta si ZF es cero o si OF y


SF son iguales.
Objetivo: Saltar si la ltima comparacin
realizada con nmeros enteros da mayor.

Ciclos

Es una sentencia que se realiza repetidas


veces a un trozo aislado de cdigo, hasta
que la condicin asignada a dicho bucle
deje de cumplirse.
Generalmente, un bucle es utilizado para
hacer una accin repetida sin tener que
escribir varias veces el mismo cdigo, lo
que ahorra tiempo, deja el cdigo ms
claro y facilita su modificacin en el futuro.

Bifurcaciones
Llega un momento en
que necesitamos hacer
una
bifurcacin
condicional: si se cumple
una condicin hacer una
cosa, si no se cumple
hacer otra.
Para ello
colocaremos las llamadas
"bifurcaciones", que las
hay de tres tipos:

Bifurcacin completa
Otro caso es ejecutar
unos comandos en
caso de que se
cumpla una condicin
o otros comandos en
caso contrario. Lo cual
viene expresado por
"diagrama de flujo"
as:

Bifurcacin mltiple
Un tercer caso es el de
ejecutar unos comandos
en caso de que se cumpla
una
condicin(1)
o ejecutar otros en caso
de cumplir una condicin2
... etc. finalmente ejecutar
otros en caso de fallar las
dos (o ms) condiciones
anteriores. Lo cual viene
expresado mediante el
"diagrama de flujo" as:

Experiencia de aprendizaje

1. Que es un bit?
2. Convertir a decimal los siguientes nmeros binarios:
11101011,10101011,100111, 10011011.
3. Cmo se transforma de un nmero binario a hexadecimal y viceversa?
4. Qu es el cdigo ASCII?
5. Que es un segmento?
6. Cuantos y cuales son los segmentos en ensamblador?
7. Qu es un registro?
8. Que es un registro de segmento? Da algunos ejemplos
9. Que es un registro apuntador?
10. Que es un registro de propsito general? Da ejemplos
11. Que son las banderas?
12. Que es el direccionamiento inmediato?
13. Que es el direccionamiento directo?
14. Que es el direccionamiento indirecto?
15. Que es una condicin?
16. Que es un ciclo?
17. Que es una bifurcacin?

Registro

http://vmf.hostei.com/1/isc-lati.html

Dudas

Вам также может понравиться