INTRODUCCION AL AMBIENTE DE BAJO NIVEL - PowerPoint PPT Presentation

1 / 32
About This Presentation
Title:

INTRODUCCION AL AMBIENTE DE BAJO NIVEL

Description:

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 ... – PowerPoint PPT presentation

Number of Views:162
Avg rating:3.0/5.0
Slides: 33
Provided by: sevGobMx3
Category:

less

Transcript and Presenter's Notes

Title: INTRODUCCION AL AMBIENTE DE BAJO NIVEL


1
INTRODUCCIONALAMBIENTEDE BAJO NIVEL
M.C.C. Sergio Luis Castillo Valerio Esta
presentación puede reproducirse
libremente siempre que se mantengan estos
derechos de autor.
2
(No Transcript)
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
(No Transcript)
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.

EAX
32 bits
AH
AL
16 bits
AX
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.

ESP
32 bits
SP
16 bits
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
(No Transcript)
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.

mts
100
200
300
400
500
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 BloquePosición

mts
100
200
300
400
500
345
050
15
Segmentación
  • Para obtener la ubicación real debe realizarse la
    siguiente operación
  • Ubicación Bloque100 Posición
  • Posición1 0100 50 50
  • Posición2 3100 45 345

Posición 1
Posición 2
mts
100
200
300
400
500
345
050
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 Segmento16 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 -lodsbALbyteDSSI
  • stosb ESSI AL
  • cmps Compara DSSI con ESDI
  • 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

If (cx gt ax) then dec cx
cmp cx,ax if (cx gt ax) jle fin_si dec cx
then dec cx fin_si
28
If ... then ... else
  • Pseudocódigo
  • Ensamblador

If (bx lt ax) then dec ax else dec bx
cmp bx,ax If (bx lt 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 gt 100)
Repite1 inc cx add ax,cx cmp cx,100 until
(cx gt 100) jle Repite1
30
While ... do
  • Pseudocódigo
  • Ensamblador

While (bxlt200) do inc bx add ax,bx end_while
while1 cmp bx,200 While (bxlt200) 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 (cx1 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.
Write a Comment
User Comments (0)
About PowerShow.com