introduccion al ambiente de bajo nivel ® m.c.c. sergio luis castillo valerio esta presentación...
TRANSCRIPT
![Page 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](https://reader036.vdocuments.pub/reader036/viewer/2022070418/5665b47b1a28abb57c91db76/html5/thumbnails/1.jpg)
INTRODUCCIONAL
AMBIENTEDE
BAJO NIVEL
® M.C.C. Sergio Luis Castillo ValerioEsta presentación puede reproducirse libremente
siempre que se mantengan estos derechos de autor.
![Page 2: INTRODUCCION AL AMBIENTE DE BAJO NIVEL ® M.C.C. Sergio Luis Castillo Valerio Esta presentación puede reproducirse libremente siempre que se mantengan estos](https://reader036.vdocuments.pub/reader036/viewer/2022070418/5665b47b1a28abb57c91db76/html5/thumbnails/2.jpg)
Máquina Multinivel
Hardware
Lenguaje Ensamblador
Sistema Operativo
Lenguaje Alto Nivel
Aplicación
Bajo Nivel
![Page 3: INTRODUCCION AL AMBIENTE DE BAJO NIVEL ® M.C.C. Sergio Luis Castillo Valerio Esta presentación puede reproducirse libremente siempre que se mantengan estos](https://reader036.vdocuments.pub/reader036/viewer/2022070418/5665b47b1a28abb57c91db76/html5/thumbnails/3.jpg)
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.
![Page 4: INTRODUCCION AL AMBIENTE DE BAJO NIVEL ® M.C.C. Sergio Luis Castillo Valerio Esta presentación puede reproducirse libremente siempre que se mantengan estos](https://reader036.vdocuments.pub/reader036/viewer/2022070418/5665b47b1a28abb57c91db76/html5/thumbnails/4.jpg)
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.
![Page 5: INTRODUCCION AL AMBIENTE DE BAJO NIVEL ® M.C.C. Sergio Luis Castillo Valerio Esta presentación puede reproducirse libremente siempre que se mantengan estos](https://reader036.vdocuments.pub/reader036/viewer/2022070418/5665b47b1a28abb57c91db76/html5/thumbnails/5.jpg)
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.
![Page 6: INTRODUCCION AL AMBIENTE DE BAJO NIVEL ® M.C.C. Sergio Luis Castillo Valerio Esta presentación puede reproducirse libremente siempre que se mantengan estos](https://reader036.vdocuments.pub/reader036/viewer/2022070418/5665b47b1a28abb57c91db76/html5/thumbnails/6.jpg)
Arquitectura 80X86
CPU80X86
MemoriaRAM
Puertos E/S
Bus de Direcciones
Bus de Datos
Bus de Control
![Page 7: INTRODUCCION AL AMBIENTE DE BAJO NIVEL ® M.C.C. Sergio Luis Castillo Valerio Esta presentación puede reproducirse libremente siempre que se mantengan estos](https://reader036.vdocuments.pub/reader036/viewer/2022070418/5665b47b1a28abb57c91db76/html5/thumbnails/7.jpg)
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.
![Page 8: INTRODUCCION AL AMBIENTE DE BAJO NIVEL ® M.C.C. Sergio Luis Castillo Valerio Esta presentación puede reproducirse libremente siempre que se mantengan estos](https://reader036.vdocuments.pub/reader036/viewer/2022070418/5665b47b1a28abb57c91db76/html5/thumbnails/8.jpg)
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.
![Page 9: INTRODUCCION AL AMBIENTE DE BAJO NIVEL ® M.C.C. Sergio Luis Castillo Valerio Esta presentación puede reproducirse libremente siempre que se mantengan estos](https://reader036.vdocuments.pub/reader036/viewer/2022070418/5665b47b1a28abb57c91db76/html5/thumbnails/9.jpg)
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
AH AL
![Page 10: INTRODUCCION AL AMBIENTE DE BAJO NIVEL ® M.C.C. Sergio Luis Castillo Valerio Esta presentación puede reproducirse libremente siempre que se mantengan estos](https://reader036.vdocuments.pub/reader036/viewer/2022070418/5665b47b1a28abb57c91db76/html5/thumbnails/10.jpg)
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
![Page 11: INTRODUCCION AL AMBIENTE DE BAJO NIVEL ® M.C.C. Sergio Luis Castillo Valerio Esta presentación puede reproducirse libremente siempre que se mantengan estos](https://reader036.vdocuments.pub/reader036/viewer/2022070418/5665b47b1a28abb57c91db76/html5/thumbnails/11.jpg)
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.
![Page 12: INTRODUCCION AL AMBIENTE DE BAJO NIVEL ® M.C.C. Sergio Luis Castillo Valerio Esta presentación puede reproducirse libremente siempre que se mantengan estos](https://reader036.vdocuments.pub/reader036/viewer/2022070418/5665b47b1a28abb57c91db76/html5/thumbnails/12.jpg)
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
![Page 13: INTRODUCCION AL AMBIENTE DE BAJO NIVEL ® M.C.C. Sergio Luis Castillo Valerio Esta presentación puede reproducirse libremente siempre que se mantengan estos](https://reader036.vdocuments.pub/reader036/viewer/2022070418/5665b47b1a28abb57c91db76/html5/thumbnails/13.jpg)
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.
100 200 300 400 500 mts
![Page 14: INTRODUCCION AL AMBIENTE DE BAJO NIVEL ® M.C.C. Sergio Luis Castillo Valerio Esta presentación puede reproducirse libremente siempre que se mantengan estos](https://reader036.vdocuments.pub/reader036/viewer/2022070418/5665b47b1a28abb57c91db76/html5/thumbnails/14.jpg)
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
100 200 300 400 500 mts0:50 3:45
![Page 15: INTRODUCCION AL AMBIENTE DE BAJO NIVEL ® M.C.C. Sergio Luis Castillo Valerio Esta presentación puede reproducirse libremente siempre que se mantengan estos](https://reader036.vdocuments.pub/reader036/viewer/2022070418/5665b47b1a28abb57c91db76/html5/thumbnails/15.jpg)
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
100 200 300 400 500 mts0:50 3:45
Posición 1 Posición 2
![Page 16: INTRODUCCION AL AMBIENTE DE BAJO NIVEL ® M.C.C. Sergio Luis Castillo Valerio Esta presentación puede reproducirse libremente siempre que se mantengan estos](https://reader036.vdocuments.pub/reader036/viewer/2022070418/5665b47b1a28abb57c91db76/html5/thumbnails/16.jpg)
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.
![Page 17: INTRODUCCION AL AMBIENTE DE BAJO NIVEL ® M.C.C. Sergio Luis Castillo Valerio Esta presentación puede reproducirse libremente siempre que se mantengan estos](https://reader036.vdocuments.pub/reader036/viewer/2022070418/5665b47b1a28abb57c91db76/html5/thumbnails/17.jpg)
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.
![Page 18: INTRODUCCION AL AMBIENTE DE BAJO NIVEL ® M.C.C. Sergio Luis Castillo Valerio Esta presentación puede reproducirse libremente siempre que se mantengan estos](https://reader036.vdocuments.pub/reader036/viewer/2022070418/5665b47b1a28abb57c91db76/html5/thumbnails/18.jpg)
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.
![Page 19: INTRODUCCION AL AMBIENTE DE BAJO NIVEL ® M.C.C. Sergio Luis Castillo Valerio Esta presentación puede reproducirse libremente siempre que se mantengan estos](https://reader036.vdocuments.pub/reader036/viewer/2022070418/5665b47b1a28abb57c91db76/html5/thumbnails/19.jpg)
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
![Page 20: INTRODUCCION AL AMBIENTE DE BAJO NIVEL ® M.C.C. Sergio Luis Castillo Valerio Esta presentación puede reproducirse libremente siempre que se mantengan estos](https://reader036.vdocuments.pub/reader036/viewer/2022070418/5665b47b1a28abb57c91db76/html5/thumbnails/20.jpg)
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
![Page 21: INTRODUCCION AL AMBIENTE DE BAJO NIVEL ® M.C.C. Sergio Luis Castillo Valerio Esta presentación puede reproducirse libremente siempre que se mantengan estos](https://reader036.vdocuments.pub/reader036/viewer/2022070418/5665b47b1a28abb57c91db76/html5/thumbnails/21.jpg)
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.
![Page 22: INTRODUCCION AL AMBIENTE DE BAJO NIVEL ® M.C.C. Sergio Luis Castillo Valerio Esta presentación puede reproducirse libremente siempre que se mantengan estos](https://reader036.vdocuments.pub/reader036/viewer/2022070418/5665b47b1a28abb57c91db76/html5/thumbnails/22.jpg)
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
![Page 23: INTRODUCCION AL AMBIENTE DE BAJO NIVEL ® M.C.C. Sergio Luis Castillo Valerio Esta presentación puede reproducirse libremente siempre que se mantengan estos](https://reader036.vdocuments.pub/reader036/viewer/2022070418/5665b47b1a28abb57c91db76/html5/thumbnails/23.jpg)
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
![Page 24: INTRODUCCION AL AMBIENTE DE BAJO NIVEL ® M.C.C. Sergio Luis Castillo Valerio Esta presentación puede reproducirse libremente siempre que se mantengan estos](https://reader036.vdocuments.pub/reader036/viewer/2022070418/5665b47b1a28abb57c91db76/html5/thumbnails/24.jpg)
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
![Page 25: INTRODUCCION AL AMBIENTE DE BAJO NIVEL ® M.C.C. Sergio Luis Castillo Valerio Esta presentación puede reproducirse libremente siempre que se mantengan estos](https://reader036.vdocuments.pub/reader036/viewer/2022070418/5665b47b1a28abb57c91db76/html5/thumbnails/25.jpg)
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,origjxx objetivo
(Donde xx: Condición de salto)
Nota: La instucción CMP resta el origen al destino y afecta banderas, noguarda el resultado ni altera los operandos.
![Page 26: INTRODUCCION AL AMBIENTE DE BAJO NIVEL ® M.C.C. Sergio Luis Castillo Valerio Esta presentación puede reproducirse libremente siempre que se mantengan estos](https://reader036.vdocuments.pub/reader036/viewer/2022070418/5665b47b1a28abb57c91db76/html5/thumbnails/26.jpg)
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
![Page 27: INTRODUCCION AL AMBIENTE DE BAJO NIVEL ® M.C.C. Sergio Luis Castillo Valerio Esta presentación puede reproducirse libremente siempre que se mantengan estos](https://reader036.vdocuments.pub/reader036/viewer/2022070418/5665b47b1a28abb57c91db76/html5/thumbnails/27.jpg)
If ... then
Ilustraremos estas implementaciones con ejemplos: En pseudocódigo:
En ensamblador
cmp cx,ax ; if (cx > ax)jle fin_sidec cx ; then dec cx
fin_si:
If (cx > ax)then dec cx
![Page 28: INTRODUCCION AL AMBIENTE DE BAJO NIVEL ® M.C.C. Sergio Luis Castillo Valerio Esta presentación puede reproducirse libremente siempre que se mantengan estos](https://reader036.vdocuments.pub/reader036/viewer/2022070418/5665b47b1a28abb57c91db76/html5/thumbnails/28.jpg)
If ... then ... else
Pseudocódigo:
Ensamblador:
If (bx < ax) then dec ax else dec bx
cmp bx,ax ; If (bx < ax)jge else1dec ax ; then dec axjmp fin_si1
else1: dec bx ; else dec bxfin_si1:
![Page 29: INTRODUCCION AL AMBIENTE DE BAJO NIVEL ® M.C.C. Sergio Luis Castillo Valerio Esta presentación puede reproducirse libremente siempre que se mantengan estos](https://reader036.vdocuments.pub/reader036/viewer/2022070418/5665b47b1a28abb57c91db76/html5/thumbnails/29.jpg)
Repeat ... until
Pseudocódigo:
Ensamblador:
Repeat: inc cx add ax,cxuntil (cx > 100)
Repite1:inc cxadd ax,cx
cmp cx,100 ; until (cx > 100)jle Repite1
![Page 30: INTRODUCCION AL AMBIENTE DE BAJO NIVEL ® M.C.C. Sergio Luis Castillo Valerio Esta presentación puede reproducirse libremente siempre que se mantengan estos](https://reader036.vdocuments.pub/reader036/viewer/2022070418/5665b47b1a28abb57c91db76/html5/thumbnails/30.jpg)
While ... do Pseudocódigo:
Ensamblador:
While (bx<200) doinc bxadd ax,bx
end_while
while1: cmp bx,200 ; While (bx<200)jge fin_while1 inc bx add ax,cxjmp while1 ; end_while
fin_while1:
![Page 31: INTRODUCCION AL AMBIENTE DE BAJO NIVEL ® M.C.C. Sergio Luis Castillo Valerio Esta presentación puede reproducirse libremente siempre que se mantengan estos](https://reader036.vdocuments.pub/reader036/viewer/2022070418/5665b47b1a28abb57c91db76/html5/thumbnails/31.jpg)
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 objetivoSino Siguiente instrucción
![Page 32: INTRODUCCION AL AMBIENTE DE BAJO NIVEL ® M.C.C. Sergio Luis Castillo Valerio Esta presentación puede reproducirse libremente siempre que se mantengan estos](https://reader036.vdocuments.pub/reader036/viewer/2022070418/5665b47b1a28abb57c91db76/html5/thumbnails/32.jpg)
For ... do Pseudocódigo:
Ensamblador:
For (cx=1 hasta 20) do add ax,bx inc bxend_for
mov cx,20do1:
add ax,bxinc bxloop do1
Nota: Dentro de la imlementación del for ...do no es aconsejable utilizar CX cuando se implementa con loop.