Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porEstefania Rivas Domínguez Modificado hace 9 años
1
INTRODUCCION AL AMBIENTE DE BAJO NIVEL ® M.C.C. Sergio Luis Castillo Valerio Esta presentación puede reproducirse libremente siempre que se mantengan estos derechos de autor.
2
Máquina Multinivel Hardware Lenguaje Ensamblador Sistema Operativo Lenguaje Alto Nivel Aplicación Bajo Nivel
3
Lenguaje Máquina Es el único lenguaje que entiende el hardware de la computadora. Instrucciones y datos en forma de patrones binarios. Normalmente expresados en sistema hexadecimal. Instruction Set: Conjunto de Instrucciones del lenguaje máquina de un procesador.
4
Lenguaje Ensamblador Conjunto ordenado y estructurado de mnemónicos de un lenguaje de máquina dado. Mnemónico: Palabra breve, descriptiva y fácil de recordar.
5
Características del Ensamblador Correspondencia 1 a 1 con su lenguaje máquina. Permite al acceso a todas las instrucciones del procesador y, por tanto, a todos los recursos del hardware. Permite desarrollar código más rápido y compacto. Requiere buen conocimiento de la arquitectura del hardware.
6
Arquitectura 80X86 CPU 80X86 Memoria RAM Puertos E/S Bus de Direcciones Bus de Datos Bus de Control
7
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.
8
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.
9
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. 32 bits 16 bits EAX AX AHAL
10
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. 32 bits 16 bits ESP SP
11
Registros de los procesadores 80X86 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.
12
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........OF DF IF SF ZF CF
13
Segmentación Técnica utilizada en los procesadores Intel 8088/8086 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. 100200300400500 mts
14
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 100200300400500 mts 0:50 3:45
15
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 100200300400500 mts 0:50 3:45 Posición 1 Posición 2
16
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.
17
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.
18
Conjunto de Instrucciones El Conjunto de instrucciones (Instruction Set) de un procesador está formado por aquellas instrucciones en lenguaje máquina que un procesador puede ejecutar. CISC vs. RISC CISC: Complex Instruction Set Computer RISC: Reduced Instruction Set Computer Las instrucciones normalmente se agrupan para describirlas.
19
Conjunto de Instrucciones Los grupos normalmente son: Transferencia de datos Aritmética entera binaria Operaciones lógicas Desplazamientos y rotaciones Aritmética BCD Gestión de cadenas Control del sistema Control de flujo del programa Saltos condicionales
20
Grupos de Instrucciones Transferencia de datos mov destino,origen- xchg dest,orig in origen- out destino Aritmética entera binaria add dest,orig- sub dest,orig adc dest,orig- sbb dest,orig mul orig- div orig inc dest- dec dest
21
Grupos de Instrucciones Operaciones lógicas not dest- and dest,orig or dest,orig- xor dest,orig Desplazamientos y rotaciones shl dest,#- shr dest,# rol dest,#- ror dest,# Aritmética BCD AAA :Ajuste ASCII suma DAA :Ajuste decimal suma. AAM :Ajuste ASCII muliplicación. AAD :Ajuste ASCII división.
22
Grupos de Instrucciones Gestión de cadenas rep: Repetir-lodsb:AL=byte{DS:SI} stosb: {ES:SI } = AL cmps: Compara {DS:SI} con {ES:DI} Control del sistema int #- iret cli: clear Interruption Flag sti: set Interruption Flag clc: clear carry flag stc: set carry flag
23
Saltos condicionales Control de flujo del programa jmp objetivo- test dest,orig call procedimiento- ret cmp dest,orig Saltos condicionales basados en: Condiciones sobre indicadores Relaciones aritm₫ticas con signo Relaciones aritm₫ticas sin signo
24
Saltos condicionales Condiciones sobre indicadores je/jne obj: jump if equal/not equal jz/jnz obj: jump if zero/non zero js/jns obj: jump if sign/no sign Relaciones aritméticas con signo jg/jl obj: jump if greater/less jge obj: jump if greater or equal jle obj: jump if less or equal
25
Saltos condicionales Relaciones aritméticas sin signo ja/jb obj: jump if above/below jae/jbe obj: jump if above/below or equal jna/jnb obj: jump if not above/below Normalmente se utilizan después de una comparación: Cmp dest,orig jxx objetivo (Donde xx: Condición de salto) Nota: La instucción CMP resta el origen al destino y afecta banderas, no guarda el resultado ni altera los operandos.
26
Programación estructurada Es posible implementar parcialmente en bajo nivel las estructuras de control que propone la programación estructurada: If... then If... then... else Repeat.... until While... do For... do
27
If... then Ilustraremos estas implementaciones con ejemplos: En pseudocódigo: En ensamblador cmp cx,ax; if (cx > ax) jle fin_si dec cx; then dec cx fin_si: If (cx > ax) then dec cx
28
If... then... else Pseudocódigo: Ensamblador: If (bx < ax) then dec ax else dec bx cmp bx,ax; If (bx < ax) jge else1 dec ax; then dec ax jmp fin_si1 else1:dec bx; else dec bx fin_si1:
29
Repeat... until Pseudocódigo: Ensamblador: Repeat: inc cx add ax,cx until (cx > 100) Repite1: inc cx add ax,cx cmp cx,100; until (cx > 100) jle Repite1
30
While... do Pseudocódigo: Ensamblador: While (bx<200) do inc bx add ax,bx end_while while1: cmp bx,200; While (bx<200) jge fin_while1 inc bx add ax,cx jmp while1; end_while fin_while1:
31
For... do Una implementación utiliza la instrucción loop Sintaxis loop : loop objetivo Semántica: loop utiliza CX forzosamente Si (CX 0) Dec CX Salta a objetivo Sino Siguiente instrucción
32
For... do Pseudocódigo: Ensamblador: For (cx=1 hasta 20) do add ax,bx inc bx end_for mov cx,20 do1: add ax,bx inc bx loop do1 Nota: Dentro de la imlementación del for...do no es aconsejable utilizar CX cuando se implementa con loop.
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.