Funciones En Assembler
Primeros conceptos
De Wikilibros, la colección de libros de texto de contenido libre.
Programación en lenguaje ensamblador/Primeros conceptos
Saltar a: navegación, buscar
Contenido[ocultar] * 1 Registros de la CPU * 2 Sintaxis del lenguaje ensamblador * 2.1 Direccionamientos * 3 El primer programa * 4 Hola mundo * 5 Saltos incondicionalesy condicionales * 5.1 Saltos incondicionales * 5.2 Comparaciones * 5.2.1 Saltos condicionales * 5.2.2 Instrucción genérica para comparar |
[editar] Registros de la CPU
La UCP x86 tiene 14 registros internos y básicos. Algunos son realmente de 32 bits pero por ahora se utilizará el modo real que es compatible con el procesador 8086 (igualmente accesibles a la parte altade éstos registros, inclusive en el modo real). Los registros son los siguientes (estos registros son de 16 bits nombrados de la siguiente manera, a excepción del registro de banderas).
Registros de uso general
* AX: Acumulador (AL:AH)
* BX: Registro base (BL:BH)
* CX: Registro contador (CL:CH)
* DX: Registro de datos (DL:DH)
Registros de segmento (Solo se pueden usar para losusos mencionados a excepción de ES)
* DS: Registro del segmento de datos
* ES: Registro del segmento extra
* SS: Registro del segmento de pila
* CS: Registro del segmento de código
Registros punteros (También pueden tener uso general)
* BP: Registro de apuntadores base
* SI: Registro índice fuente
* DI: Registro ìndice destino
Registros especiales (Solo se pueden usarpara los usos mencionados)
* SP: Registro apuntador de la pila
* IP: Registro apuntador de la siguiente instrucción
* F: Registro de banderas (8 bits)
La parte baja del registro AX se llama AL y la parte alta AH. La parte baja del registro BX se llama BL y la parte alta BH, y también ocurre lo mismo con el registro CX y DX.
Bits del registro de banderas
Overflow
* NV (Apagado):No hay desbordamiento
* OV (Encendido): Si lo hay
Direction
* UP: Hacia adelante
* DN: Hacia atras
Interrupts
* DI: Desactivadas
* EI: Activadas
Sign
* PL: Positivo
* NG: Negativo
Zero
* NZ: No es cero
* ZR: Si lo es
Auxilary carry
* NA: No hay acarreo auxiliar
* AC: Hay acarreo auxiliar
Parity
* PO: Impar
* PE: Paridad par
Carry
* NC:No hay acarreo
* CY: Si lo hay
[editar] Sintaxis del lenguaje ensamblador
La sintaxis es la siguiente
Nombre de la instrucción Operando 1, Operando 2, Operando 3, Operando 4, ...
El nombre de la instrucción está formada por 2 o 3 letras, los operandos pueden ser registros, constantes o direcciones de memoria. La cantidad de operandos dependerá de la instrucción.
Por ejemplo:
MOV AL,[1000]
Esta instrucción indica que se copie el valor de la porción de la memoria que esté en la ubicación 1000 (En hexadecimal) a la parte baja del registro AX (AL). Cuando un operando es un valor de una dirección de memoria, ésta dirección se escribe entre corchetes, recordar que el operando 1 es el destino y el operando 2 es el origen. Y cuando es una constante dependerá del ensamblador, en elcaso del debug (Un programa que sirve para crear y editar aplicaciones que viene con el DOS) se interpretarán como hexadecimales, en los siguientes ejemplos se interpretará que las constantes son números hexadecimales.
También se puede tomar un valor de la memoria apuntado por un registro, por ejemplo:
MOV AL, [DI]
DI está apuntado al valor que está en la memoria que será copiado al registro AL.El nombre MOV viene de la palabra move, que es una palabra del ingles que significa mover. Justamente la instrucción mencionada significa, mover el valor apuntado por DI a AL.
También se puede copiar el valor de un registro a otro
MOV AL, BL
En este caso se copia el valor de BL a AL
Igualmente se puede copiar el valor de la parte baja de un registro a la parte alta de otro registro
MOV CH,...
Regístrate para leer el documento completo.