Monografias.com > Computación > Programación
Descargar Imprimir Comentar Ver trabajos relacionados

Programación en ensamblador




Enviado por Pablo Turmero



    Monografias.com
    CONTENIDO: I. INTRODUCCION 1.1. Importancia del lenguaje
    ensamblador 1.2. Descripción y características del
    lenguaje ensamblador 1.3. Modelos de arquitectura de computadoras
    1.4. Características de los microprocesadores de la
    familia x86 II. EL MICROPROCESADOR Y SU ARQUITECTURA 2.1.
    Descripción de la unidad procesadora de una
    microprocesador de la familia x86 2.2. Registros del
    microprocesador 2.3. Modo Real y Modo Protegido del
    Microprocesador 2.4 Segmentación 2.5. Modos de
    direccionamiento de datos III. PROGRAMACION EN ENSAMBLADOR 3.1.
    Requerimientos para la programación en ensamblador 3.2.
    Formato de un programa en ensamblador 3.3. Software TASM y MASM
    3.4. Creación de un programa en ensamblador

    Monografias.com
    CONTENIDO: IV. CONJUNTO DE INSTRUCCIONES EN ENSAMBLADOR 4.1.
    Instrucciones para movimiento de datos 4.2. Instrucciones
    aritméticas y lógicas 4.3. Instrucciones de
    entrada/salida 4.4. Instrucciones control de programa V. MACROS Y
    PROCEDIMIENTOS 5.1. Definición de procedimiento 5.2.
    Sintaxis de un procedimient0 5.3. Definición de una macro
    5.4. Sintaxis de una macro 5.5. Bibliotecas de macros 6.
    INTERRUPCIONES 6.1. Definición de interrupción 6.2.
    Clasificación 6.3. Funcionamiento del mecanismo de
    interrupciones 6.4. Interrupciones más comunes

    Monografias.com
    CONTENIDO: VII. MANEJO DE ARCHIVOS 7.1. Manejando archivos con el
    método FCB 7.2. Manejando archivos con canales de
    comunicación VIII. PROGRAMACION DE PERIFERICOS 8.1. Puerto
    Paralelo 8.2. Puerto Serial 8.3. TIMER 8.4. Controlador de
    Interrupciones 8.5. Coprocesador matemático 8.6. Modo
    gráfico y ratón IX. PROGRAMACION AVANZADA 9.1.
    Interfaz del lenguaje “C” con ensamblador 9.2.
    Programación de ensamblador en Windows

    Monografias.com
    I. INTRODUCCION : 1.1. Importancia del lenguaje ensamblador 1.2.
    Descripción y características del lenguaje
    ensamblador 1.3. Modelos de arquitectura de computadoras 1.4.
    Características de los microproc. de la familia x86

    Monografias.com
    1.1, 1.2 El ensamblador Existen varias razones que justifican el
    uso del ensamblador en lugar de otros lenguajes: El ensamblador
    brinda la oportunidad de conocer más a fondo la
    operación de su PC. Se conserva el control total las
    tareas que realiza la PC, siempre y cuando ésta sea
    físicamente capaz de hacerlo. Los programas en ensamblador
    son más rápidos, más compactos y tienen
    mayor capacidad que los creados en otros lenguajes. Permite
    optimizar al máximo los programas.

    Monografias.com
    1.3 Arquitecturas de computadoras RISC vs. CISC RISC. CISC.
    Hardvard vs. Princeton (Von Neuman): Hardvard. Von Neuman. Otras
    clasificación, (Flynn): MIMD, MISD, SIMD y SISD.

    Monografias.com
    1.3 Arquitecturas de computadoras La arquitectura Harvard, separa
    la memoria de datos y la memoria de programa, y se accede a ellas
    mediante buses distintos. La arquitectura Von Neuman trata de la
    misma forma los datos que las instrucciones.

    Monografias.com
    1.4 Características micros x86

    Monografias.com
    1.4 Características micros x86

    Monografias.com
    II. EL MICROPROCESADOR Y SU ARQUITECTURA 2.1. Descripción
    de la unidad procesadora de una microprocesador de la familia x86
    2.2. Registros del microprocesador 2.3. Modo Real y Modo
    Protegido del Microprocesador 2.4. Segmentación 2.5 Modos
    de direccionamiento de datos

    Monografias.com
    2.1. El Microp. 80X86 y su Arquitectura (Gp:) CPU 80X86 (Gp:)
    Memoria RAM (Gp:) Puertos E/S (Gp:) Bus de Direcciones (Gp:) Bus
    de Datos (Gp:) Bus de Control

    Monografias.com
    2.2 Registros (Gp:) -Registros: Propósito general,
    propósito específico y de segmento. -Los registros
    sombredos existen despues del 80386. -FS y GS no tienen nombres
    asociados.

    Monografias.com
    2.2 Registros Registro: Conjunto de flip-flops capaz de
    almacenar, y en algunos casos modificar, información
    binaria. Dentro de todo CPU existe un conjunto de registros.
    Algunos tienen un uso específico, otros son de uso
    general. Los registros de uso general normalmente se utilizan
    para guardar datos y resultados intermedios.

    Monografias.com
    2.2 Registros Desde el punto de vista del programador, es muy
    importante conocer el conjunto de registros internos de un
    procesador y su uso, cuando se programa en bajo nivel. Esto se
    debe a que muchas de las instrucciones de lenguaje máquina
    suponen que los datos están en alguno de los registros o
    almacenan el resultado en alguno de los registros internos.

    Monografias.com
    2.2 Registros de los procesadores 80X86 Registros de Uso General:
    EAX: Acumulador EBX: Base ECX: Contador EDX: Datos. Estos
    registros pueden guardar datos de 32, 16 u 8 bits. (Gp:) 32 bits
    (Gp:) 16 bits (Gp:) EAX (Gp:) AX (Gp:) AH (Gp:) AL

    Monografias.com
    2.2 Registros de los procesadores 80X86 ESP: Stack Pointer
    (Apuntador de Pila) EBP: Base Pointer (Apuntador Base) ESI:
    Source Index (Indice Fuente u Origen) EDI: Destination Index
    (Indice Destino) Estos registros pueden almacenar datos de 32 o
    16 bits. (Gp:) 32 bits (Gp:) 16 bits (Gp:) ESP (Gp:) SP

    Monografias.com
    2.2 Registro de Banderas Conjunto de bits que nos dan
    información sobre el estado del procesador y sobre el
    resultado de la última operación efectuada. Es el
    único registro accesible a nivel de bits. Algunos de estos
    bits son: CF: Carry flag – ZF: Zero flag SF: Sign flag – OF:
    Overflow flag IF: Interrupt flag – DF: Direction flag (Gp:) . . .
    . . . . . OF DF IF SF ZF CF

    Monografias.com
    2.2 Registros de los procesadores Registros de Segmento CS: Code
    Segment (Segmento de Código) DS: Data Segment (Segmento de
    Datos) SS: Stack Segment (Segmento de Pila) ES: Extra Segment
    (Segmento Extra) FS: Extra Segment (Segmento Extra) GS: Extra
    Segment (Segmento Extra) Son registros de 16 bits. Se utilizan
    para generar las direcciones que el procesador envía por
    el bus de direcciones.

    Monografias.com
    2.3 Modo real y protegido Los microprocesadores 80286 y
    posteriores operan tanto en modo real como en modo protegido.
    Sólo el 8086 y 8088 operan en modo real. La
    operación en modo real permite direccionar a segmentos de
    64 KB de memoria . En el modo real de operación, el
    direccionamiento a memoria se hace en forma segmentada. Una
    dirección segmentada tiene 2 partes: Segmento :
    Desplazamiento El registro CS trabaja en conjunto con el registro
    IP (Apuntador de Instrucción) para generar las direcciones
    hacia el programa.

    Monografias.com
    2.4 Segmentación Técnica utilizada en los
    procesadores Intel 8086/8088 para generar direcciones de 20 bits
    usando registros de 16 bits. Para ilustrar esta técnica,
    suponga que se desea ubicar la posición de una persona a
    partir de un punto de referencia, pero utilizando solamente
    números de 2 dígitos decimales. (Gp:) 100 (Gp:) 200
    (Gp:) 300 (Gp:) 400 (Gp:) 500 (Gp:) mts

    Monografias.com
    2.4 Segmentación Esto se puede realizar si se hace lo
    siguiente: Se divide la recta en bloques de 100 metros cada uno.
    Se utilizan dos números: Uno para indicar en cuál
    bloque está la persona Otro para especificar su
    posición dentro del bloque. Posición =
    Bloque:Posición (Gp:) 100 (Gp:) 200 (Gp:) 300 (Gp:) 400
    (Gp:) 500 (Gp:) mts 0:50 3:45

    Monografias.com
    2.4 Segmentación Para obtener la ubicación real
    debe realizarse la siguiente operación: Ubicación =
    Bloque*100 + Posición Posición1 = 0*100 + 50 = 50
    Posición2 = 3*100 + 45 = 345 (Gp:) 100 (Gp:) 200 (Gp:) 300
    (Gp:) 400 (Gp:) 500 (Gp:) mts (Gp:) 0:50 (Gp:) 3:45 (Gp:)
    Posición 1 (Gp:) Posición 2

    Monografias.com
    2.4 Segmentación En el caso de los procesadores 80X86, los
    bloques se llaman SEGMENTOS y la posición se llama
    DESPLAZAMIENTO En modo real, cada una se describe con un
    número de 16 bits. Operando en modo real Dirección
    Real = Segmento*16 + Desplazamiento. La Dirección Real ya
    es una cantidad de 20 bits. Esto significa que toda
    dirección tiene 2 partes: Un Segmento y un
    desplazamiento.

    Monografias.com
    2.4 Segmentación en Modo Protegido Es importante recalcar
    que cuando los procesadores 80386 o posteriores operan en modo
    protegido, la segmentación funciona de manera muy
    diferente. Cada segmento puede ser de hasta 4 Gbytes. Maneja
    memoria virtual, lo que implica un esquema de paginación.
    Maneja también multitarea y un esquema de
    protección de memoria.

    Monografias.com
    2.5 Modos de direccionamientos Modos de direccionamiento de datos
    Direccionamiento de registro Direccionamiento inmediato
    Direccionamiento directo Direccionamiento indirecto por registro
    Direccionamiento base-más-índice Direccionamiento
    relativo al registro Direccionamiento relativo a
    base-más-índice Direccionamiento índice
    escalado (x386 ..) Modos de direccionamiento de memoria del
    programa Direccionamiento relativo al programa Direccionamiento
    directo Direccionamiento indirecto Observe la gran cantidad de
    modos de direccionamiento de datos.

    Monografias.com
    2.5 Modos de direccionamientos No se permite la
    instrucción MOV de segmento a segmento. No se permite que
    el registro destino sea el segmento de código CS. No son
    peremidos tamaños mezclados de registros.

    Monografias.com
    2.5.1 Direccionamiento de registro Transfiere una copia de un
    byte o palabra desde el registro o localidad de memoria fuente
    hacia el registro o localidad de memoria destino. Ejemplo: MOV
    AX,BX Copia el contenido del reg. DX al reg. CX. MOV AX,BX Reg.
    BX Reg. AX Generación de la dirección Fuente
    Destino En los 386 y posteriores es posible transferir una
    palabra doble

    Monografias.com
    2.5.1 Direccionamiento de registro Ejemplos: MOV AL,BL Copia BL
    en AL. MOV AX,CX Copia CX en AX. MOV SI,DI Copia DI en SI. MOV
    BX,ES Copia ES en BX MOV ES,DS No es permitido MOV BL,DX No es
    permitido MOV CS,AX No es permitido

    Monografias.com
    2.5.2 Direccionamiento inmediato Transfiere el dato (byte o
    palabra) inmediatamente al registro o localidad de memoria
    destino. Ejemplo: MOV CH,3AH Copia el contenido del reg. DX al
    reg. CX. MOV CH,3AH 3AH Reg. CH Generación de la
    dirección Fuente Destino En los 386 y posteriores es
    posible transferir una palabra doble

    Monografias.com
    2.5.2 Direccionamiento inmediato Ejemplos: MOV BL,44 Copia 44
    dec. en BL MOV AX,44H Copia 0044H en AX MOV SI,0 Copia 0000H en
    SI MOV AL,’A’ Copia A ASCII en AL MOV
    AX,’AB’ Copia BA ASCII en AX

    Monografias.com
    2.5.3 Direccionamiento directo Se aplica a una istrucción
    MOV entre una localidad de memoria y AL, Ax o EAX. La
    dirección está formada por la suma del
    desplazamiento más la dirección dada por defecto en
    el segmento de datos. Ejemplo: MOV AL,[1234H] Copia el contenido
    de la localidad de mem. 11234H a AL. MOV [1234H],AX Reg. AX
    Dirección [11234H] Generación de la
    dirección Fuente Destino Cuando DS=1000 DS x 10H +
    Desplazamiento 10000H + 1234H

    Monografias.com
    2.5.4 Direccionamiento indirecto por registro Permite direccionar
    cualquier localidad de memoria mediante una dirección de
    desplazamiento contenida en: BP, BX, DI y SI. Ejemplo: MOV
    [BX],CL Copia el contenido del reg. CL a la localidad de memoria
    direccionada por BX, en DS. MOV [BX],CL Reg. CL Dirección
    [10300H] Generación de la dirección Fuente Destino
    Cuando DS=1000 DS x 10H + BX 10000H + 0300H

    Monografias.com
    2.5.5 Direccionamiento base-más-índice Se utiliza
    un reg. base (BP o BX) y un reg. índice (DI o SI) para
    direccionar indirectamente la memoria. Ejemplo: MOV [BX+SI],BP
    Copia el contenido del reg. BP a la dirección de mem.
    direccionada por BX + SI en el seg. de datos. MOV [BX+SI],BP Reg.
    BP Dirección [10500H] Generación de la
    dirección Fuente Destino Cuando DS=1000 DS x 10H + BX + SI
    10000H + 0300H + 0200H

    Monografias.com
    2.5.6 Direccionamiento relativo a registro Los datos de un
    segmento de memoria son direccionados sumando el desplazamiento
    al contenido de un registro base o índice (BP, BX, DI o
    SI). Ejemplo: MOV CL,[BX+4] Copia el contenido de la localidad de
    mem. del DS direccionada por BX más 4 en CL. MOV CL,[BX+4]
    Reg. CL Dirección [10304H] Generación de la
    dirección Fuente Destino Cuando DS=1000 DS x 10H + BX + 4
    10000H + 0300H + 4

    Monografias.com
    2.5.7 Direccionamiento relativo a base-más-índice
    Se utiliza un reg. base (BP o BX) y un reg. índice (DI o
    SI) más un desplazamiento para formar la dirección
    de memoria. Es utilizado a menudo para direccionar un arreglo
    bidimensional de datos de memoria. Ejemplo: MOV ARRAY[BX+SI],DX
    Copia DX a la localidad de mem del DS direccionada por la suma de
    ARRAY, BX y SI. MOV ARRAY[BX+SI],DX Reg. DX Dirección
    [11500H] Generación de la dirección Fuente Destino
    Cuando DS=1000, ARRAY=1000H DS x 10H + ARRAY + BX + SI 10000H +
    1000H + 0300H + 0200H

    Monografias.com
    2.5.8 Direccionamiento índice escalado Exclusivo para
    procesadores x386 y posteriores. Utiliza dos registros de 32 bits
    (uno base y otro ídice). El reg. índice es
    multiplicado por un factor de escalamiento 1X, 2X, 4X u 8X. El
    factor 1X está implicito. 2X es empleado para direccionar
    arreglos de mem. de palabras de 16 bits. 4X para palabras dobles
    y 8X para areglos de mem. de palabra cuádruple. Ejemplo:
    MOV [EBX+2x ESI],AX Copia AX en la loc. De mem. Del DS
    direccionada pro la suma EBX más dos veces ESI. MOV
    [EBX+2x ESI],AX Reg. AX Dirección [10700H]
    Generación de la dirección Fuente Destino Cuando
    DS=1000, EBX=300H, ESI=200H DS x 10H + EBX + 2 x ESI 10000H +
    00000300H + 00000400H

    Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

    Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

    Categorias
    Newsletter