Está en la página 1de 11

Programacion del 8088

Lenguaje Ensamblador X86

Entorno del lenguaje


ensamblador
Procesos del ambiente en ensmablador:

Crear el archivo fuente (editor de texto).


Ensamblarlo (crear el archivo objeto).
Enlazarlo (crear el programa ejecutable).
Corregirlo y/o depurarlo

Cada proceso es independiente de los otros.


Ensamblador (MASM), enlazador (LINK),
depurador (debugger, DB).

MASM
El MASM genera el archivo intermedio (*.obj)
El comando que utiliza es MASM archivo, seguida de la
tecla enter.
MASM pondr entre corchetes la respuesta correcta.
La opcin Source listing genera archivo que contendr lnea
por lnea el cdigo de mquina y la lnea de su cdigo
fuente.
Cross-reference tiene informacin de cada cdigo de su
fuente.
MASM recibe parametros desde MS-DOS
Para pasar parametros al MASM debe usar 7 seguido de
la inicial del parmetro.
MASM/v/z prueba; indica al ensamblador que introduzca el
programa prueba.
NUL.LST y NUL.CRF indican que no desea dicho listado

ENLAZADOR (LINK)
El MASM traduce ensambla el cdigo fuente a
otro de formato.
El MS-DOS no puede ejecutar este archivo.
*.OBJ debe ser pasado a otro proceso que define
detalles y genera el archivo ejecutable.
Todo el proceso es realizado por el enlazador, que
tiene similitud al MASM.
Link prueba, genera el archivo PRUEBA.EXE.
Siempre se utiliza el enlazador para generar un
programa ejecutable *.exe.

Programa *.exe
Contraccin de la palabra EXEcutable: ejecutable.
Puede contener distitntos segmentos de pila, datos
y cdigo simultneamente.
Usa el PSP (prefijo de segmento de programa).
Al comenzar la ejecucin el segmento CS apunta a
la primera instruccin a ejecutar (IP=0).
El SS apunta al comienzo de la pila (arriba de
DS).
Los programas *.exe pueden ser tan grandes como
lo permita la memoria del programa.

PROGRAMA *.COM
Este tipo de programa es almacenado en el disco
exactamente como ser cargado en la memoria para
su ejecucin.
Estos programas empiezan siempre en el
desplazamiento 100H (ORG 100H).
La totalidad del programa est restringida a 64 kb.
Iniciara su ejecucin a partir del siguiente byte
despues de PSP.
Al final del segmento se usa una palabra de (16 bits)
bits como pila (pero puede ser ms grande).
La longitud del programa *.COM es de 65536 256
2 = 65278 bytes. 256 bytes de PSP y 2 de la pila.

Convertir el programa *.EXE


a *.COM

Para convertir un programa en *.com se


deben seguir los siguientes pasos:
1. Editarlo (editor de texto).
2. Ensamblarlo (MASM).
3. Enlazarlo (LINK), ignorar el mensaje LINK:
warning L4021: no stack segment, no hay
pila en el programa.
4. Use el programa exe2bin.exe bajo el
siguiente formato:
exe2bin nombre(*.exe) nombre.com

Programa de Ejemplo
CODE SEGMENT PUBLIC 'CODE'
ORG 100H
ASSUME CS:CODE, ES:CODE, DS:CODE, SS:CODE

Empieza:

;Etiqueta de comienzo de programa

Jmp

cdigo

Mensaje Db 'Hola, qu tal!$'

Continuacin
Cdigo:
mov Dx, OFFset Mensaje; Direccin mensaje
mov Ah,9
mov 21h

MOV ax, 4c00h

int 21h

; en Dx para poder despegarlo


; a travs de la Int 21 del MS-DOS.

; Regresa a MS-DOS por medio de la

; funcin 4c

CODE ENDS
END Empieza

; Fin del programa

PSP
Es una estructura usada para controlar
ciertos aspectos del programa.
Tiene una longitud de 256 bytes del
segmentos donde se carga el programa.
Desplazamiento

Contenido

00

CD20

02

Memoria total de prrafos

0A

Direccin de salida

0E

Direccin del manejador de CTRL.-C

12

Direccin del manejador de errores crticos

2C

Segmento del bloque de ambiente

50

CD21

5C

Tiene el nombre del primer archivo de la lnea de comando (si existe)

6C

Tiene el nombre del segundo archivo en la lnea de comando (si existe)

80

Tiene la longitud de la lnea de comandos

81

La lnea de comandos

Programa de prueba para el 8088


; TEST.ASM
;
; Programa de prueba para le circuito del 8088
PACO

SEGMENT
; define el
segmento de cdigo
ASSUME CS:PACO, DS:PACO, SS:PACO ; coloca todos los registros en
; la misma localizacin

ORG

7F0H

START:

MOV

AL,00000001b

AGAIN:

OUT
JMP

10H,AL
AGAIN

PACO

ENDS

END START