Академический Документы
Профессиональный Документы
Культура Документы
CONTENIDO:
I. INTRODUCCION 1.1. Importancia del lenguaje ensamblador 1.2. Descripcin y caractersticas del lenguaje ensamblador 1.3. Modelos de arquitectura de computadoras 1.4. Caractersticas de los microprocesadores de la familia x86 II. EL MICROPROCESADOR Y SU ARQUITECTURA 2.1. Descripcin 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 Segmentacin 2.5. Modos de direccionamiento de datos
PROGRAMACION EN ENSAMBLADOR Requerimientos para la programacin en ensamblador Formato de un programa en ensamblador Software TASM y MASM Creacin de un programa en ensamblador
CONTENIDO:
IV. 4.1. 4.2. 4.3. 4.4. CONJUNTO DE INSTRUCCIONES EN ENSAMBLADOR Instrucciones para movimiento de datos Instrucciones aritmticas y lgicas Instrucciones de entrada/salida Instrucciones control de programa
V. MACROS Y PROCEDIMIENTOS 5.1. Definicin de procedimiento 5.2. Sintaxis de un procedimient0 5.3. Definicin de una macro 5.4. Sintaxis de una macro 5.5. Bibliotecas de macros 6. INTERRUPCIONES 6.1. Definicin de interrupcin 6.2. Clasificacin 6.3. Funcionamiento del mecanismo de interrupciones 6.4. Interrupciones ms comunes
CONTENIDO:
VII. MANEJO DE ARCHIVOS 7.1. Manejando archivos con el mtodo FCB 7.2. Manejando archivos con canales de comunicacin VIII. PROGRAMACION DE PERIFERICOS 8.1. Puerto Paralelo 8.2. Puerto Serial 8.3. TIMER 8.4. Controlador de Interrupciones 8.5. Coprocesador matemtico 8.6. Modo grfico y ratn
IX. PROGRAMACION AVANZADA 9.1. Interfaz del lenguaje C con ensamblador 9.2. Programacin de ensamblador en Windows
I. INTRODUCCION :
1.1. Importancia del lenguaje ensamblador 1.2. Descripcin y caractersticas del lenguaje ensamblador 1.3. Modelos de arquitectura de computadoras 1.4. Caractersticas de los microproc. de la familia x86
conocer ms a fondo la operacin de su PC. Se conserva el control total las tareas que realiza la PC, siempre y cuando sta sea fsicamente capaz de hacerlo. Los programas en ensamblador son ms rpidos, ms compactos y tienen mayor capacidad que los creados en otros lenguajes. Permite optimizar al mximo los programas.
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.
CPU 80X86
Memoria RAM
Puertos E/S
Bus de Datos
Bus de Control
2.2 Registros
EAX EBX ECX EDX ESP EBP EDI ESI EIP EFLAGS AH BH CH DH AX BX CX DX SP BP DI SI IP BANDERAS CS DS ES SS FS GS AL BL CL DL Acumulador Base Contador Datos Apuntador de pila Apuntador de base ndice destino ndice fuente Apuntador instruccin Banderas Cdigo Datos Extra Pila
-Registros: Propsito general, propsito especfico y de segmento. -Los registros sombredos existen despues del 80386. -FS y GS no tienen nombres asociados.
2.2 Registros
Registro: Conjunto de flip-flops capaz de
almacenar, y en algunos casos modificar, informacin binaria. Dentro de todo CPU existe un conjunto de registros. Algunos tienen un uso especfico, otros son de uso general. Los registros de uso general normalmente se utilizan para guardar datos y resultados intermedios.
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 mquina suponen que los datos estn en alguno de los registros o almacenan el resultado en alguno de los registros internos.
AH 16 bits AX
AL
sobre el estado del procesador y sobre el resultado de la ltima operacin 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
........
OF DF IF SF ZF CF
en modo real como en modo protegido. Slo el 8086 y 8088 operan en modo real. La operacin en modo real permite direccionar a segmentos de 64 KB de memoria . En el modo real de operacin, el direccionamiento a memoria se hace en forma segmentada. Una direccin segmentada tiene 2 partes: Segmento : Desplazamiento El registro CS trabaja en conjunto con el registro IP (Apuntador de Instruccin) para generar las direcciones hacia el programa.
2.4 Segmentacin
Tcnica utilizada en los procesadores Intel
100
200
300
400
500
mts
2.4 Segmentacin
Esto se puede realizar si se hace lo
siguiente:
Se divide la recta en bloques de 100 metros cada uno. Se utilizan dos nmeros:
Uno para indicar en cul bloque est la persona Otro para especificar su posicin dentro del bloque.
Posicin = Bloque:Posicin
100 0:50
200
300
3:45
400
500
mts
2.4 Segmentacin
Para obtener la ubicacin real debe
100 0:50
200
300
3:45
400
500
mts
2.4 Segmentacin
En el caso de los procesadores 80X86, los
bloques se llaman SEGMENTOS y la posicin se llama DESPLAZAMIENTO En modo real, cada una se describe con un nmero de 16 bits. Operando en modo real
Direccin Real = Segmento*16 + Desplazamiento.
bits. Esto significa que toda direccin tiene 2 partes: Un Segmento y un desplazamiento.
procesadores 80386 o posteriores operan en modo protegido, la segmentacin funciona de manera muy diferente. Cada segmento puede ser de hasta 4 Gbytes. Maneja memoria virtual, lo que implica un esquema de paginacin. Maneja tambin multitarea y un esquema de proteccin de memoria.
II.
BX, DI, SI, un nmero Direccin de datos. DI para instrucciones Direccin de destino de sobre cadenas. cadenas.
No se permite la instruccin MOV de segmento a segmento. No se permite que el registro destino sea el segmento de cdigo CS. No son peremidos tamaos mezclados de registros.
desde el registro o localidad de memoria fuente hacia el registro o localidad de memoria destino.
Ejemplo:
MOV AX,BX
Fuente Generacin de la direccin
MOV AX,BX
Reg. AX
MOV AL,BL MOV AX,CX MOV SI,DI MOV BX,ES MOV ES,DS MOV BL,DX MOV CS,AX
Copia BL en AL. Copia CX en AX. Copia DI en SI. Copia ES en BX No es permitido No es permitido No es permitido
Fuente
MOV CH,3AH
3AH
Reg. CH
MOV BL,44 MOV AX,44H MOV SI,0 MOV AL,A MOV AX,AB
Copia 44 dec. en BL Copia 0044H en AX Copia 0000H en SI Copia A ASCII en AL Copia BA ASCII en AX
localidad de memoria y AL, Ax o EAX. La direccin est formada por la suma del desplazamiento ms la direccin dada por defecto en el segmento de datos.
Ejemplo: MOV AL,[1234H] Copia el contenido de la localidad de mem. 11234H a AL.
Fuente Generacin de la direccin Destino Direccin [11234H] DS x 10H + Desplazamiento 10000H + 1234H
MOV [1234H],AX
Cuando DS=1000
Reg. AX
memoria mediante una direccin 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.
Fuente Generacin de la direccin Destino Direccin [10300H] DS x 10H + BX 10000H + 0300H
MOV [BX],CL
Cuando DS=1000
Reg. CL
MOV [BX+SI],BP
Cuando DS=1000
Reg. BP
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 ms 4 en CL.
Fuente Generacin de la direccin Destino Reg. CL DS x 10H + BX + 4 10000H + 0300H + 4 Direccin [10304H]
MOV CL,[BX+4]
Cuando DS=1000
ndice (DI o SI) ms un desplazamiento para formar la direccin 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.
Fuente Generacin de la direccin Destino Direccin [11500H]
DS x 10H + ARRAY + BX + SI 10000H + 1000H + 0300H + 0200H
MOV ARRAY[BX+SI],DX
Reg. DX
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 cudruple. Ejemplo:
MOV [EBX+2x ESI],AX Copia AX en la loc. De mem. Del DS direccionada pro la suma EBX ms dos veces ESI.
Fuente Generacin de la direccin Destino Direccin [10700H]
DS x 10H + EBX + 2 x ESI 10000H + 00000300H + 00000400H
Reg. AX