Principios De Lenguaje Ensamblador
Enviado por brian117 • 29 de Octubre de 2012 • 2.853 Palabras (12 Páginas) • 956 Visitas
COMO ENTRAR A ENSAMBLADOR
C:\windows\documento> cd..
C:\windows> cd..
C:\ cd.. masm611
C:\>masm611> cd bin
C:\masm611\bin> masm saludo
C:\masm611\bin> link saludo,,;
C:\masm611\bin>saludo
C:\masm611\bin> edit saludo.asm
PAUTAS PARA REALIZAR UN PROGRAMA.
Generalmente las declaraciones de un programa se realizan de la siguiente manera:
La variable que será usada de tipo cadena en el segmento data de fine la cadena hacer desplegada el signo $ al final de la cadena también llamado centinela es requerido para la fusión de visualización de modos
La etiqueta del segmento de código marca el inicio de las instrucciones del programa
La declaración de DW define el espacio para se usada por el estacx del programa
La declaración asume e indica que registros de segmento se asocian con la etiqueta declarada en las definiciones del segmento
Las primeras 2 instrucciones cargan las direcciones de segmentos de datos en el registro DS. Estas instrucciones no son necesarias para los segmentos de código y de estacx, puesto que las direcciones de segmento de código siempre es cargada en CS y la dirección de declaración de estacx es automáticamente cargada en el registro CS.
Las 2 ultimas instrucciones del segmento códec usa la función 4CH del sistema operativo, para regresar el control al sistema operativo.
La directiva end indica el final de cada código fuente y especifica a la etiqueta que se halla puesto que fue un punto de arranque.
Cada programa en lenguaje ensamblador es creado a partir de un archivo de código fuente de lenguaje ensamblador estos son archivos de texto que contienen todas las declaraciones de datos e instrucciones que componen al programa y que se agrupan en secciones en la creación de un programa en ensamblador sin encargo la mayoría de los programas utilizan un segmento de datos, código, uno de pila los cuales pueden ser puesto en cualquier lugar.
DIRECTIVAS:
El ensamblador posee un conjunto de instrucciones que son reconocidas por el ensamblador y específicamente por el MAMS para ser utilizados y facilitar su tarea a dichas instrucciones se les conoce como directivas son usadas para especificar un conjunto de instrucciones que soporta un microprocesador especial.
En la declaración del segmento el nombre es dado por un nombre y debe ser único. Segmentos con el mismo nombre se trata como un mismo segmento.
Relación del lenguaje ensamblador con los componentes internos del procesador
• En la memoria se almacena la información en celdas especiales llamados registros los cuales tienen un nivel alto y un nivel bajo.
• Unidad aritmética y lógica es la responsable de realizar como su nombre lo indica operaciones aritméticas y lógicas.
• Unidad de control Se encarga de coordinar de que los otros componentes ejecuten las operaciones correctamente.
• Bus interno son los canales por donde pasa la información que la máquina va a procesar (bus de entrada) o procesada (bus de salida).
Registros de uso general
AX = Registro acumulador, dividido en AH y AL (8 bits cada uno).- Interviene en las operaciones aritméticas y lógicas, después de la operación arroja un resultado.
BX = Registro base, dividido en BH y BL.- Se utiliza en transferencias de datos entre la memoria y el procesador.
CX = Registro contador, dividido en CH y CL.- Se utiliza como contador en bucles (LOOP), en operaciones con cadenas(REP), y en desplazamientos(CL).
DX = Registro de datos, dividido en DH y DL.- Se utiliza en operaciones de multiplicación y división junto con Ax y en operaciones de entrada y salida de puertos, su mitad inferior DL contiene el número de puertos.
Registros de Estado
Hay nueve indicadores de un bit en este registro de 16 bits. Los cuatro bits más significativos están indefinidos, mientras que hay tres bits con valores determinados: los bits 5 y 3 siempre valen cero y el bit 1 siempre vale uno.
CF (Carry Flag, bit 0): Si vale 1, indica que hubo "arrastre" (en caso de suma) o "préstamo" (en caso de resta). Este indicador es usado por instrucciones que suman o restan números que ocupan varios bytes. Las instrucciones de rotación pueden aislar un bit de la memoria o de un registro poniéndolo en el CF.
PF (Parity Flag, bit 2): Si vale uno, el resultado tiene paridad par, es decir, un número par de bits a 1. Este indicador se puede utilizar para detectar errores en transmisiones.
AF (Auxiliary carry Flag, bit 4): Si vale 1, indica que hubo "arrastre" o "préstamo" del nibble (cuatro bits) menos significativo al nibble más significativo. Este indicador se usa con las instrucciones de ajuste decimal.
ZF (Zero Flag, bit 6): Si este indicador vale 1, el resultado de la operación es cero.
SF (Sign Flag, bit 7): Refleja el bit más significativo del resultado. Como los números negativos se representan en la notación de complemento a dos, este bit representa el signo: 0 si es positivo, 1 si es negativo.
TF (Trap Flag, bit 8): Si vale 1, el procesador está en modo paso a paso. En este modo, la CPU automáticamente genera una interrupción interna después de cada instrucción, permitiendo inspeccionar los resultados del programa a medida que se ejecuta instrucción por instrucción.
IF (Interrupt Flag, bit 9): Si vale 1, la CPU reconoce pedidos de interrupción externas. Si vale 0, no se reconocen tales interrupciones
DF (Direction Flag, bit 10): Si vale 1, las instrucciones con cadenas sufrirán "auto-decremento", esto es, se procesarán las cadenas desde las direcciones más altas de memoria hacia las más bajas. Si vale 0, habrá "auto-incremento", lo que quiere decir que las cadenas se procesarán de "izquierda a derecha".
OF (Overflow flag, bit 11): Si vale 1, hubo un desborde en una operación aritmética con signo, esto es, un dígito significativo se perdió debido a que tamaño del resultado es mayor que el tamaño del destino.
segmet stack
dw 64 dup (¿)
stack end
data segment
saludito db 13,10 “quiobolas”, “$”
data end
segment code
assume cs:segmet code, sd: segment data, ss: segment stack
inicio:
mov ax, data
mov ds, ax
mov dx, offset saludito
mov ah, 09h
int 21
mov ah, 4ch
int 21
end inicio
end code
segmet stack
dw 64 dup (?)
stack end
data segment
yo db “bienvenido adrian tabera rivera a ensamblador” 13,10
...