Vous êtes sur la page 1sur 19

Introduccin al ensamblador 80x86

El binario
La informacin en una CPU se representa en binario, usando base 2. Un BIT es el elemento que representa el elemento bsico unidad. 1 nibble = (4 bits). Base del hexadecimal 1 byte = 8 bits o 2 nibbles 1 word = 16 bits o 2 bytes o 4 nibbles. Tamao usado para un registro de 16 bit.

Registros
Almacenan y mantienen la informacin. Tamaos de registros: 8,16 y 32 bit. Se especifican 4 tipos de registros bsicos y registros de control.

Registros de propsito general


Cuatro registros de 16 bits: AX,BX,CX y DX. Se dividen en registros de 8 bits: AH, contiene el byte alto y AL, contiene el byte bajo. A partir del 386 hay registros de 32 bits, tienen el mismo nombre con una E que le precede: EAX.
Ejemplo: AX contiene el nmero 24689 decimal (6071 hexadecimal y 110000001110001 en binario), entonces AH contiene 01100000 y AL contiene 01110001

Registros de pila
Registros de control de pila, BP y SP. Se usan cuando manejamos una pila (stack).

Registros de ndice
Registros punteros de 16 bits. Para el uso de instrucciones que operan con cadenas de caracteres. Formados por el registro de ndice SI (origen) y el registro DI (destino). En versiones del 386 y superiores de Intel existen el ESI y EDI.

Registros de segmento y offset


Son dos registros de 16 bits, uno que contiene el segmento y otro el offset. Registros de segmentos son: CS, SS, DS, ES. Registros para desplazamiento (offset) son: DX, BX, DI, SI, BP, SP.

Otros
Existen otros registros de control. Registro IP (puntero de instruccin). Registro de estado (FLAGS), que contiene la informacin del estado de la CPU.

La pila (stack)
Tambin llamado LIFO (Last In First Out ), el ltimo que entra es el primero que sale. Si entran ms datos de los que puede almacenar se desborda.

Seis registros de propsito general son insuficientes para almacenar todos los valores requeridos para las operaciones en ensamblador. Para mantener dichos valores y recuperarlos se usa la Pila o stack.

Instrucciones. Ensamblador
La mayora de estas instrucciones se indican con tres letras en donde se especifica el tipo de instruccin y lleva asociada una serie de operandos separados por coma.
Ejemplo: para escribir en un registro utilizamos MOV Mov ax,10 ; escribe 10(decimal) en el registro ax Mov bx,20 ; escribe 20(decimal) en el registro bx Mov cx,30 ; escribe 30(decimal) en el registro cx Mov dx,40 ; escribe 40(decimal) en el registro dx

Tipos de operandos ensamblador


Tipo inmediato. Es una constante. Tipo registro. Es cualquier registro de propsito general o registro de ndice. Tipo memoria. Es una variable almacenada en memoria.

Instrucciones bsicas
La ms importante es la instruccin MOV. Mov: mueve un valor de un lugar a otro. MOV destino, origen Ejemplo:
mov ax,10 ; mueve un valor inmediato al registro ax mov bx,cx ; mueve un valor en registro desde cx a bx mov dx,Number ; mueve el valor memoria definido como Number a dx

Instrucciones Push y Pop. Uso del Stack


Instrucciones para escribir datos y recuperarlos: PUSH. Pone el datos de un registro en pila. POP. Recupera el dato de la pila y lo escribe en un registro.
Ejemplo: push cx ; escribe el contenido del registro cx en la pila push ax ; escribe el contenido del registro ax en la pila pop cx ; recupera el valor de la pila en el registro cx pop ax ; recupera el valor de la pila en el registro ax

Llamada a interrupcin
Una interrupcin es una operacin que invoca la ejecucin de una rutina especfica que suspende la ejecucin del programa que la llam.

El programa suspendido vuelve a activarse cuando termina la ejecucin de la interrupcin y son restablecidos los registros salvados.

Razones: Intencionalmente como peticin para la entrada o salida de datos de un dispositivo. Un error serio y no intencional, como un resultado de desbordamiento de la ALU o de divisin por cero. El control de estos servicios se hace a travs de la BIOS o del MS-DOS. Interrupciones software y hardware.

INT. Llama a una funcin del DOS o BIOS a travs de una subrutina para realizar un servicio especial:
Ejemplo: int 21h ; Llama a la interrupcin nmero 21 (hexadecimal) int 10h ; Llama a la interrupcin del Video en la BIOS

Las interrupciones tienen asociadas ms de un servicio, hay que pasarle el nmero de servicio deseado. Se utiliza el registro AH.
Ejemplo: usamos el servicio 9 de la interrupcin 21h que corresponde a la impresin de caracteres en pantalla. Hay que especificar antes lo que se va a escribir, para ello se hace uso de DS:DX que ser el puntero de la direccin fsica en memoria que indica dnde se encuentra la cadena.

Se hace uso de AX para generar la direccin fsica. mov dx, OFFSET Message ; DX contiene el offset de message mov ax,SEG Message ; AX contiene el segmento del message mov ds,ax ; DS:DX apunta a la direccin fsica del mensaje mov ah,9 ; carga el servicio 9 caracteres a pantalla int 21h ; llamada a la interrupcin de DOS

Las directivas OFFSET y SEG indican al compilador que el segmento y el offset de Message se usa para obtener la direccin fsica en memoria la cadena de datos. Message DB "Estructura y Tecnologa de Computadores. Prctica 1$"