INTRODUCCION AL AMBIENTE DE BAJO NIVEL ® M.C.C. Sergio Luis Castillo Valerio Esta presentación puede reproducirse libremente siempre que se mantengan estos.

Slides:



Advertisements
Presentaciones similares
Org. y Arquitectura del Computador
Advertisements

Organización de la unidad central de procesamiento (CPU)
Equipo #3 Unidad III: ALU Efraín Corral Eduardo Castillo Elías Alarcón
Instrucciones de operación sobre datos
UNIVERSIDAD DEL VALLE DE MEXICO CAMPUS CHAPULTEPEC
REGISTROS INTERNOS DEL PROCESADOR.
CLASE 3 SOFTWARE DEL MICROPROCESADOR
CLASE 7 CONJUNTO DE INSTRUCCIONES. TRANSFERENCIA
TEMA 2 Arquitectura de un Ordenador
Fermín Sánchez Carracedo Universitat Politècnica de Catalunya
INSTTUTO TECNOLOGICO DE APIZACO
Integrantes Carlos Junior Salinas Rivera (ILHUICOATL). Comunidad: coatl (serpiente).
Programación en ensamblador
Introducción al lenguaje ensamblador
Programación en Lenguaje Ensamblador.
Arquitectura de Conjunto de Instrucciones (ISA)
Circuitos Combinacionales Comunes
PROG. EN ENSAMBLADOR Ing. Pablo Cesar Tapia Catacora.
Composición Interna de un Procesador
CLASE 11.

Lenguaje Ensamblador integrantes: Esthela Vianey Vázquez Medina No.30
ISA (Instruction Set Architecture)
MODOS DE DIRECCIONAMIENTO No. Lista 21 7am Rivas chacón Ana cristina
MODOS DE DIRECCIONAMIENTO
Arquitectura del 8086/8088 El 8086 Arquitectura de computadoras II
ARQUITECTURA DE LOS MICROPROCESADORES DE 8 BITS
MIPS Intermedio.
Prof. Jaime José Laracuente-Díaz
Introducción al lenguaje ensamblador
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.

Instrucciones Aritméticas Instrucciones Aritméticas Instrucciones Aritméticas Instrucciones Aritméticas Instrucciones Transferencia de Datos Instrucciones.
Organización del Computador I Verano MIPS (1 de 2) Basado en el capítulo 3 del libro de Patterson y Hennessy Verano 2004 Profesora Borensztejn.
ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 13.
Arquitectura del 8086/8088 TEEL 4011
Conceptos Arquitectónicos del computador
IPN Escuela Superior de Cómputo MICROPROCESADORES II.
Lenguaje de Programación cap. 1 Estructura del Computador.
Microprocesador (80X86) Universidad Nacional de Ingeniería
Tema 1: DATOS Y REGISTROS
Unidad I: Registros e Interrupciones Facilitador: Ing. Eduardo Brando.
Microcomputadores Prof: Tatiana Marín R.. Lenguaje máquina = lenguaje binario InstrucciónLenguaje máquina (binario)OP ( hex)Nemónico Restar F0SUB.

MODOS DE DIRECCIONAMIENTO
A este registro se le conoce también como registro de estado. Consta de 16 bits y únicamente 9 de ellos contiene información, indican el estado de la.
introducción al Lenguaje Ensamblador
Microprocesador (8086) Universidad Nacional de Ingeniería
PROGRAMACION A BAJO NIVEL
Capítulo 4 CPU y la memoria.
ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 10.
TEMA : ARQUITECTURA DE COMPUTADORAS

introducción al Lenguaje Ensamblador
Maquinas Digitales UNIDADES DE CONTROL.
Principio unidad 1.
Unidad Central de Proceso
Introducción a la Arquitectura Intel x86 © M.C.C. Sergio Luis Castillo Valerio Esta presentación puede reproducirse libremente siempre y cuando se mantenga.
CONJUNTO DE INSTRUCCIONES Maquinas Digitales
Aprende el arte de la ingeniería inversa
COMUNIDAD YAQUI! Sikiri#4 Heeka#7 Ba’am#19.
ARQUITECTURA DE COMPUTADORES
Arquitectura de Computadores
 PRESENTADO POR : ANDRES MAYORGA DANIELA PAEZ VEGA.
El microprocesador y su arquitectura
Introducción MSc. Rina Arauz.
El Computador. Computador. Máquina compuesta de elementos físicos (en su mayoría de origen electrónico) capaz de aceptar unos datos de entrada, realizar.
Lenguaje ensamblador Conceptos introductorios. Formatos de Instrucción. Modos de Direccionamiento. Conjunto de instrucciones básico. Introducción al Lenguaje.
Arquitectura de PCs Lenguaje ASM Intel Lenguaje de máquina y ASM Toda CPU interpreta su código de máquina propio Instrucciones en código de máquina.
Lenguaje Ensamblador. Repertorio de instrucciones Microprocesador Z80.
Transcripción de la presentación:

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.

Máquina Multinivel Hardware Lenguaje Ensamblador Sistema Operativo Lenguaje Alto Nivel Aplicación Bajo Nivel

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.

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.

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.

Arquitectura 80X86 CPU 80X86 Memoria RAM Puertos E/S Bus de Direcciones Bus de Datos Bus de Control

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.

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.

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

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

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.

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

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

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 mts 0:50 3:45

Segmentación  Para obtener la ubicación real debe realizarse la siguiente operación:  Ubicación = Bloque*100 + Posición  Posición1 = 0* = 50  Posición2 = 3* = mts 0:50 3:45 Posición 1 Posición 2

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.

Segmentación en Modo Protegido  Es importante recalcar que cuando los procesadores 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.

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.

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

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

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.

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

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

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

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.

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

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

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:

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

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:

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

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.