sistemas electrónicos para el tratamiento de la ...jesman/bigseti/seti1/protegido/seti_1_tem… ·...

42
Universidad de Valladolid Sistemas Electrónicos para el Tratamiento de la Información 1 Dr. D. Jesús M. Hernández Mangas Departamento de Electricidad y Electrónica

Upload: others

Post on 12-Jul-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Sistemas Electrónicos para el Tratamiento de la ...jesman/BigSeti/seti1/Protegido/SETI_1_Tem… · Sistemas Electrónicos para el Tratamiento de la Información 1 Jesús M. Hernández

Universidad deValladolid

Sistemas Electrónicos para elTratamiento de la Información 1

Dr. D. Jesús M. Hernández MangasDepartamento de Electricidad y Electrónica

Page 2: Sistemas Electrónicos para el Tratamiento de la ...jesman/BigSeti/seti1/Protegido/SETI_1_Tem… · Sistemas Electrónicos para el Tratamiento de la Información 1 Jesús M. Hernández

2

Sistemas Electrónicos para el Tratamiento de la Información 1

Jesús M. Hernández

2.- Arquitectura Intel (Nivel Aplicación)4 2.1.- Entorno básico de ejecución

Estudiaremos un microprocesador de 32 bits (registros y ALU de 32 bits) con undireccionamiento de 36 bits (2^36=64 Gb)

Page 3: Sistemas Electrónicos para el Tratamiento de la ...jesman/BigSeti/seti1/Protegido/SETI_1_Tem… · Sistemas Electrónicos para el Tratamiento de la Información 1 Jesús M. Hernández

3

Sistemas Electrónicos para el Tratamiento de la Información 1

Jesús M. Hernández

2.- Arquitectura Intel (Nivel Aplicación)4 2.1.- Entorno básico de ejecución

ü 2.1.1.- Modos de operación• Modo protegido

– Modo nativo– Todas las prestaciones disponibles– Mayor rendimiento– Recomendado S.O. y aplicaciones– Submodo Virtual86

Permite ejecutar software 8086 con direccionamiento real en un entorno multitareaprotegido

• Modo de direccionamiento real– Entorno de trabajo de un 8086 con algunas extensiones– El microprocesador arranca (reset) en este modo

• Modo de manejo del sistema– Permite el control del ahorro de energía– Aumenta la seguridad del sistema

Page 4: Sistemas Electrónicos para el Tratamiento de la ...jesman/BigSeti/seti1/Protegido/SETI_1_Tem… · Sistemas Electrónicos para el Tratamiento de la Información 1 Jesús M. Hernández

4

Sistemas Electrónicos para el Tratamiento de la Información 1

Jesús M. Hernández

2.- Arquitectura Intel (Nivel Aplicación)4 2.1.- Entorno básico de ejecución

ü 2.1.2.- Organización de la memoria• La memoria que direcciona el procesador en sus buses se llama memoria

FÍSICA• Esta memoria está organizada en grupos de 8 bits (bytes) apuntados por una

única dirección física• El espacio de direcciones físicas es de 32 bits (0..2^32-1): 4 Gb• El acceso a memoria utiliza mecanismos como la segmentación y la

paginación, muy útiles para los S.O. Seguros• Los programas no referencian directamente la memoria física sino a una

memoria de direcciones lineales• Modelos de memoria

– Modelo plano– Modelo segmentado– Modelo de direccionamiento real

Page 5: Sistemas Electrónicos para el Tratamiento de la ...jesman/BigSeti/seti1/Protegido/SETI_1_Tem… · Sistemas Electrónicos para el Tratamiento de la Información 1 Jesús M. Hernández

5

Sistemas Electrónicos para el Tratamiento de la Información 1

Jesús M. Hernández

2.- Arquitectura Intel (Nivel Aplicación)ü 2.1.2.- Organización de la memoria

• Modelo plano– Toda la memoria aparece como un espacio

de direcciones continuo llamado espacio dedirecciones lineales 0.. 2^32-1

– El código, los datos y la pila están contenidosen él

• Modelo segmentado– Código, datos y pila están en segmentos

separados– Para acceder a un byte necesitamos una

dirección lógica compuesta de un selectorde segmento y un desplazamiento (offset).También se conoce como puntero far olejano

– El selector identifica el segmento y el offsetindica el byte dentro del segmento

– Se pueden direccionar 16383 segmentos dediferentes tamaños y tipos. El tamañomáximo es de 4 Gb

• Modelo de direccionamiento real

Page 6: Sistemas Electrónicos para el Tratamiento de la ...jesman/BigSeti/seti1/Protegido/SETI_1_Tem… · Sistemas Electrónicos para el Tratamiento de la Información 1 Jesús M. Hernández

Segmento de PILA

Segmento deDATOS

Segmento deCÓDIGO

Memoria

Dirección 0

Segmento deCÓDIGO

Segmento deDATOS

Segmento dePILA

Funcionamiento de la PILAEs una estructura de datos cuyo funcionamiento es automático.Existen instrucciones para apilar (PUSH) datos y para extraer (POP) datos de la PILA.Se trata de una PILA LIFO (Last In, First Out) El último dato apilado es el primero que se extrae.

Dato 4Punterode pila

Dato 4

Dato 3

Punterode pila

PUSH

Dato 3

Dato 2

Dato 1 Dato 1

Dato 2

Dato 5

POP

Estructura programasTodos los programas se dividen en tres secciones: CÓDIGO, DATOS y PILA

Última dirección

Segmentode PILA

Page 7: Sistemas Electrónicos para el Tratamiento de la ...jesman/BigSeti/seti1/Protegido/SETI_1_Tem… · Sistemas Electrónicos para el Tratamiento de la Información 1 Jesús M. Hernández

6

Sistemas Electrónicos para el Tratamiento de la Información 1

Jesús M. Hernández

2.- Arquitectura Intel (Nivel Aplicación)ü 2.1.2.- Organización de la memoria

• Modelo de direccionamiento real– Es el modelo de memoria del 8086– Es un caso particular del modelo segmentado– El espacio de direcciones lineales es de

2^20 bytes = 1 Mb– El tamaño máximo de un segmento es de

64 kb– La dirección lógica se convierte en

dirección lineal como sigue:

– En este modelo hay “problemas” si elsegmento es pequeño y el programa esgrande (>64 kb), ya que hay que dividir elprograma en varios segmentos y hay quemodificar los selectores de segmento altransferir el control de unos a otros

Page 8: Sistemas Electrónicos para el Tratamiento de la ...jesman/BigSeti/seti1/Protegido/SETI_1_Tem… · Sistemas Electrónicos para el Tratamiento de la Información 1 Jesús M. Hernández

7

Sistemas Electrónicos para el Tratamiento de la Información 1

Jesús M. Hernández

2.- Arquitectura Intel (Nivel Aplicación)4 2.1.- Entorno básico de ejecución

ü 2.1.2.- Organización de la memoriaHay dos tamaños de operandos y direcciones:

• Direccionamiento de 32 bits– Selector de segmento de 16 bits– Offset de 32 bits– Operandos de 8 y 32 bits

• Direccionamiento de 16 bits– Selector de segmento de 16 bits– Offset de 16 bits– Operandos de 8 y 16 bits

Page 9: Sistemas Electrónicos para el Tratamiento de la ...jesman/BigSeti/seti1/Protegido/SETI_1_Tem… · Sistemas Electrónicos para el Tratamiento de la Información 1 Jesús M. Hernández

8

Sistemas Electrónicos para el Tratamiento de la Información 1

Jesús M. Hernández

2.- Arquitectura Intel (Nivel Aplicación)ü 2.1.3.- Registros

• 2.1.3.1.- Registros de datos– EAX: Acumulador– EBX: Base. Puntero de datos en DS– ECX: Contador– EDX: Datos. Puntero de E/S. Extensión de

EAX en * y %– ESI: Puntero índice fuente (DS:ESI)– EDI: Puntero índice destino (ES:EDI)– ESP: Puntero de pila (SS:ESP)– EBP: Puntero base (SS:EBP)

• 2.1.3.2.- Registros selectores de segmento– CS: Selector del segmento de código– DS: Selector del segmento de datos– SS: Selector del segmento de pila– ES, FS, GS: Selectores de segmentos de

datos extra

Page 10: Sistemas Electrónicos para el Tratamiento de la ...jesman/BigSeti/seti1/Protegido/SETI_1_Tem… · Sistemas Electrónicos para el Tratamiento de la Información 1 Jesús M. Hernández

9

Sistemas Electrónicos para el Tratamiento de la Información 1

Jesús M. Hernández

2.- Arquitectura Intel (Nivel Aplicación)ü 2.1.3.- Registros

• 2.1.3.3.- Registro EIP– Es el puntero de instrucción (32 bits)– CS:EIP apunta a la siguiente instrucción a ejecutar– No se puede modificar explícitamente (sólo con instrucciones de salto)

• 2.1.3.4.- Registro EFLAGS– Es el registro de condiciones extendido

i) Flags de estadoIndican el resultado de

instrucciones aritméticas, desplazamientos de bits, etc.

– CF. Carry flagIndica el acarreo o “la que me

llevo”

254 11111110b003 00000011b257 1 00000001b

CF

Page 11: Sistemas Electrónicos para el Tratamiento de la ...jesman/BigSeti/seti1/Protegido/SETI_1_Tem… · Sistemas Electrónicos para el Tratamiento de la Información 1 Jesús M. Hernández

10

Sistemas Electrónicos para el Tratamiento de la Información 1

Jesús M. Hernández

2.- Arquitectura Intel (Nivel Aplicación)ü 2.1.3.- Registros

• 2.1.3.4.- Registro EFLAGSi) Flags de estado

– PF: Parity flagParidad. Se activa si el byte menos significativo del resultado contiene un númeropar de “1”s

– AF: Adjust flagSemiacarreo. Indica el acarreo del bit 3 al 4. Usado en aritmética BCD (BinaryCoded Decimal)

– ZF: Zero flagCero. Se activa si el resultado es cero

– SF: Sign flagSigno. Coincide con el bit más significativo (MSB) del resultado (=1: negativo)

– OF: Overflow flagDesbordamiento. En números interpretados con signo, se activa si el resultado nocabe en el operando destino. Sirve para prevenir que el acarreo al MSB cambie elsigno del resultado

127 01111111b 127+ 2 00000010b 2¿-127? 10000001b 129 => No cabe, OF=1

Page 12: Sistemas Electrónicos para el Tratamiento de la ...jesman/BigSeti/seti1/Protegido/SETI_1_Tem… · Sistemas Electrónicos para el Tratamiento de la Información 1 Jesús M. Hernández

11

Sistemas Electrónicos para el Tratamiento de la Información 1

Jesús M. Hernández

2.- Arquitectura Intel (Nivel Aplicación)ü 2.1.3.- Registros

• 2.1.3.4.- Registro EFLAGSii) Flags de control

– DF: Direction flagIndica la dirección de procesamiento de las instrucciones que trabajan con bloquesde datos (=0, hacia posiciones de memoria crecientes; =1 hacia atrás). Estasinstrucciones autoincrementan o autodecrementan los punteros fuente y/o destinodependiendo de este bit

iii) Flags del sistemaNo deben ser modificados por los programas de usuarios– IF: Interruption enable flag

Máscara de interrupción. Las interrupciones externas debidas a la patilla /INTpueden ser inhibidas (=1) o permitidas (=0) con este bit

– TF: Trap flagEjecución paso a paso. Habilita la depuración paso a paso. Cuando está activado trasla ejecución de una instrucción se produce una interrupción para poder comprobarel resultado de la instrucción

– IOPL: Input/output privilege level field (0=mayor,.. ,3=menor)Nivel de privilegio de E/S. Si el nivel de privilegio de la tarea o programa actualCPL>=IOPL no se podrá acceder a la E/S

Page 13: Sistemas Electrónicos para el Tratamiento de la ...jesman/BigSeti/seti1/Protegido/SETI_1_Tem… · Sistemas Electrónicos para el Tratamiento de la Información 1 Jesús M. Hernández

12

Sistemas Electrónicos para el Tratamiento de la Información 1

Jesús M. Hernández

2.- Arquitectura Intel (Nivel Aplicación)ü 2.1.3.- Registros

• 2.1.3.4.- Registro EFLAGSiii) Flags del sistema

– NT: Nested task. Tarea anidada– RF: Resume flag. Reanudación. Controla la respuesta del procesador en las

excepciones de depuración– VM: Virtual 8086 mode flag. Habilita el submodo virtual86 (=1). Poniendolo a

cero se regresa al modo de funcionamiento protegido– AC: Alignment check flag. Habilita la comprobación del alineamiento en las

referencias a memoria– VIF: Virtual interrupt flag. Imagen virtual de IF. Se usa junto con VIP– VIP: Virtual interrupt pending flag. Indica que hay una interrupción pendiente. El

procesador solo lee el contenido de este flag. Lo modifica el S.O.– ID: Identification flag. Indica el soporte o no de la instrucción CPUID que identifica

la CPU

Page 14: Sistemas Electrónicos para el Tratamiento de la ...jesman/BigSeti/seti1/Protegido/SETI_1_Tem… · Sistemas Electrónicos para el Tratamiento de la Información 1 Jesús M. Hernández

13

Sistemas Electrónicos para el Tratamiento de la Información 1

Jesús M. Hernández

2.- Arquitectura Intel (Nivel Aplicación)ü 2.1.4.- Tipos de datos

Los datos no necesitan estar alineados en memoria, aunque para aumentar elrendimiento es conveniente que estén alineados

• Enteros con signo– Byte [-128 .. 127]– Word [-32768 .. 32767]– Dword [-231.. 231 –1]

• Enteros sin signo– Byte [0 .. 255]– Word [0 .. 65535]– Dword [0 .. 232 –1]

• BCD– No empaquetado– Empaquetado

Page 15: Sistemas Electrónicos para el Tratamiento de la ...jesman/BigSeti/seti1/Protegido/SETI_1_Tem… · Sistemas Electrónicos para el Tratamiento de la Información 1 Jesús M. Hernández

14

Sistemas Electrónicos para el Tratamiento de la Información 1

Jesús M. Hernández

2.- Arquitectura Intel (Nivel Aplicación)ü 2.1.4.- Tipos de datos

Los datos no necesitan estar alineados en memoria, aunque para aumentar elrendimiento es conveniente que estén alineados

• Punteros– Cercano (near): 32 bits– Lejano (far): 48 bits

• Campos de bitEs una secuencia continua de bitsPuede empezar en cualquier bit de cualquier byte

de la memoria y puede tener una longitud de hasta 32 bits

• Bloques de datos (strings)Son secuencias continuas de bit, bytes, words o dwords con una longitud

de hasta 232 –1 bits, bytes, words o dwords respectivamente

• Punto flotanteMás adelante (Tema 3)

• Tipos MMXMás adelante (Tema 4)

Page 16: Sistemas Electrónicos para el Tratamiento de la ...jesman/BigSeti/seti1/Protegido/SETI_1_Tem… · Sistemas Electrónicos para el Tratamiento de la Información 1 Jesús M. Hernández

15

Sistemas Electrónicos para el Tratamiento de la Información 1

Jesús M. Hernández

2.- Arquitectura Intel (Nivel Aplicación)ü 2.1.5.- Modos de direccionamiento de operandos

i) Operandos inmediatosEl operando va codificado detrás de la instrucción. El dato <= 232 -1Ej.: ADD EAX,14 ; EAX=EAX+14

ii) Operandos en registrosEl dato está en un registro– Registros de propósito general de 32 bits: EAX, EBX, ECX, EDX, ESI, EDI, ESP, EBP– Registros de propósito general de 16 bits: AX, BX, CX, DX, SI, DI, SP, BP– Registros de propósito general de 8 bits: AH, AL, BH, BL, CH, CL, DH, DL– Registros de segmento: CS, DS, ES, SS, FS, GS– Registro EFLAGS– Registros del sistema: GDTR, IDTR, etc,...

iii) Operandos en memoriaFormado por:– Selector de segmento– Desplazamiento u offset

Page 17: Sistemas Electrónicos para el Tratamiento de la ...jesman/BigSeti/seti1/Protegido/SETI_1_Tem… · Sistemas Electrónicos para el Tratamiento de la Información 1 Jesús M. Hernández

16

Sistemas Electrónicos para el Tratamiento de la Información 1

Jesús M. Hernández

2.- Arquitectura Intel (Nivel Aplicación)ü 2.1.5.- Modos de direccionamiento de operandos

iii) Operandos en memoria• Selector de segmento

– Implícitamente

– Explícitamente. Solo con los datos localesEj.: MOV [ES:EBX],EAX ; [ES:EBX] = EAX

• Desplazamiento u offsetExcepto la escala son valores en complemento a 2

Si usamos ESP o EBP se usa SSsino se usa DS implicitamente

4

8

Page 18: Sistemas Electrónicos para el Tratamiento de la ...jesman/BigSeti/seti1/Protegido/SETI_1_Tem… · Sistemas Electrónicos para el Tratamiento de la Información 1 Jesús M. Hernández

17

Sistemas Electrónicos para el Tratamiento de la Información 1

Jesús M. Hernández

2.- Arquitectura Intel (Nivel Aplicación)ü 2.1.5.- Modos de direccionamiento de operandos

iv) Operandos en puertos de E/S

– Entrada/salida por puertos hardwareA la entrada/salida (E/S) se accede a través de un mapa de direcciones de 16 bits paralelo al de la memoriaTiene 65536 puertos de entrada/salida de 8, 16 o 32 bitsSe direcciona de forma inmediata (sólo direcciones 8 bits: 0..255)O a través del registro DX (direcciones de 16 bits)Se utilizan instrucciones especiales: IN y OUT

– Entrada/salida mapeada en memoriaSe utiliza el espacio de direcciones de la memoria para situar sistemas periféricosexternos a la CPU. Si hay un periférico no puede haber memoriaLas direcciones son de 32 bitsSe usan las instrucciones de acceso a memoria (MOV, etc.)Habitual en tarjetas PCI (reservan direcciones muy altas)

Page 19: Sistemas Electrónicos para el Tratamiento de la ...jesman/BigSeti/seti1/Protegido/SETI_1_Tem… · Sistemas Electrónicos para el Tratamiento de la Información 1 Jesús M. Hernández

18

Sistemas Electrónicos para el Tratamiento de la Información 1

Jesús M. Hernández

Ej.: MOV EAX,[EBX+10]

MOV DWORD [EBX+10],5

MOV BX,ES

MOV DS,AX

MOV ES,314

2.- Arquitectura Intel (Nivel Aplicación)4 2.2.- Repertorio básico de instrucciones

ü 2.2.1.- Transferencia de datos• MOV destino,fuente

Copia datos de la fuente al destino

• CMOVcc destino,fuenteCopia de datos condicionalA partir de Pentium Pro

CMOVE/CMOVZ Conditional move if equal/Conditional move if zero

CMOVNE/CMOVNZ Conditional move if not equal/Conditional move if not zero

CMOVA/CMOVNBE Conditional move if above/Conditional move if not below or equal

CMOVAE/CMOVNB Conditional move if above or equal/Conditional move if not below

CMOVB/CMOVNAE Conditional move if below/Conditional move if not above or equal

CMOVBE/CMOVNA Conditional move if below or equal/Conditional move if not above

CMOVG/CMOVNLE Conditional move if greater/Conditional move if not less or equal

CMOVGE/CMOVNL Conditional move if greater or equal/Conditional move if not less

CMOVL/CMOVNGE Conditional move if less/Conditional move if not greater or equal

CMOVLE/CMOVNG Conditional move if less or equal/Conditional move if not greater

CMOVC Conditional move if carry

CMOVNC Conditional move if not carry

CMOVO Conditional move if overflow

CMOVNO Conditional move if not overflow

CMOVS Conditional move if sign (negative)

CMOVNS Conditional move if not sign (non-negative)

CMOVP/CMOVPE Conditional move if parity/Conditional move if parity even

CMOVNP/CMOVPO Conditional move if not parity/Conditional move if parity odd

Sin signo

Con signo

Page 20: Sistemas Electrónicos para el Tratamiento de la ...jesman/BigSeti/seti1/Protegido/SETI_1_Tem… · Sistemas Electrónicos para el Tratamiento de la Información 1 Jesús M. Hernández

19

Sistemas Electrónicos para el Tratamiento de la Información 1

Jesús M. Hernández

2.- Arquitectura Intel (Nivel Aplicación)4 2.2.- Repertorio básico de instrucciones

ü 2.2.1.- Transferencia de datos• XCHG destino,fuente

Intercambia datos entre fuente y destino• BSWAP r32

Cambia el orden de los bytes en un registro de 32 bits. Pasa de BIG ENDIAN a LITTLEENDIAN y viceversa

• XADD r/m,rIntercambia y suma

TEMP=DESTINO+FUENTEFUENTE=DESTINODESTINO=TEMP

• CMPXCHG r/m,rCompara e intercambia

SI Acumulador==DESTINOENTONCES

ZF=1DESTINO=FUENTE

SINOZF=0Acumulador=DESTINO

Page 21: Sistemas Electrónicos para el Tratamiento de la ...jesman/BigSeti/seti1/Protegido/SETI_1_Tem… · Sistemas Electrónicos para el Tratamiento de la Información 1 Jesús M. Hernández

20

Sistemas Electrónicos para el Tratamiento de la Información 1

Jesús M. Hernández

2.- Arquitectura Intel (Nivel Aplicación)4 2.2.- Repertorio básico de instrucciones

ü 2.2.1.- Transferencia de datos• CMPXCHG8B m64

Compara e intercambia 8 bytesSI EDX:EAX==DESTINO

ENTONCESZF=1DESTINO=ECX:EBX

SINOZF=0EDX:EAX=DESTINO

• PUSH r16/32 , POP r16/32– Introduce en la pila/ Extrae de la pila

PUSH

• Decrementa ESP en 2/4 bytes

• Guarda [ESP]=rm16/32

POP

• Extrae rm16/32=[ESP]

• Incrementa ESP en 2/4 bytes

Ej.: PUSH AX

PUSH DWORD [EBX]

PUSH DWORD 1000h

PUSHF

POPFD

POP WORD [SI]

POP ES

Page 22: Sistemas Electrónicos para el Tratamiento de la ...jesman/BigSeti/seti1/Protegido/SETI_1_Tem… · Sistemas Electrónicos para el Tratamiento de la Información 1 Jesús M. Hernández

21

Sistemas Electrónicos para el Tratamiento de la Información 1

Jesús M. Hernández

2.- Arquitectura Intel (Nivel Aplicación)4 2.2.- Repertorio básico de instrucciones

ü 2.2.1.- Transferencia de datos• PUSHA / PUSHAD/ POPA /POPAD

Introduce en la pila/ Extrae de la pila todos los registros de propósito general de 16/32bits

Introduce en este orden:EAX, ECX, EDX, EBX, ESP, EBP, ESI y EDI

Recupera en sentido inverso, pero descarta el valor de SP/ESP

• IN Op1, Op2Lee de un puerto de E/S hardware de 8/16/32 bits. Op1=PORT[Op2]Op1 = AL, AX ó EAXOp2 = Inm8 ó DX

• OUT Op1, Op2Escribe e un puerto de E/S hardware de 8/16/32 bits. PORT[Op1]=Op2Op1 = Inm8 ó DXOp2 = AL, AX ó EAXEj.: OUT 64h,AL

OUT DX,EAXIN AX,7F8h

MOV DX,7F8h

IN AX,DX

Page 23: Sistemas Electrónicos para el Tratamiento de la ...jesman/BigSeti/seti1/Protegido/SETI_1_Tem… · Sistemas Electrónicos para el Tratamiento de la Información 1 Jesús M. Hernández

22

Sistemas Electrónicos para el Tratamiento de la Información 1

Jesús M. Hernández

2.- Arquitectura Intel (Nivel Aplicación)4 2.2.- Repertorio básico de instrucciones

ü 2.2.1.- Transferencia de datos• CWD / CDQ

Convierte word en dword / convierte dword en qword. Extiende el signoAX -> DX:AXEAX –> EDX:EAX

• CBW / CWDEConvierte byte en word / convierte word en dwordAL -> AXAX -> EAX !Ojo¡

• MOVSX r16/32,rm8/16Copia y extiende el signoMOVSX AX,BH ; Antes AX=? BH=0F0h

; Después AX=0FFF0h BH=0F0h

• MOVZX r16/32,rm8/16Copia y extiende con cerosMOVZX AX,BH ; Antes AX=? BH=0F0h

; Después AX=00F0h BH=0F0h

Page 24: Sistemas Electrónicos para el Tratamiento de la ...jesman/BigSeti/seti1/Protegido/SETI_1_Tem… · Sistemas Electrónicos para el Tratamiento de la Información 1 Jesús M. Hernández

23

Sistemas Electrónicos para el Tratamiento de la Información 1

Jesús M. Hernández

2.- Arquitectura Intel (Nivel Aplicación)4 2.2.- Repertorio básico de instrucciones

ü 2.2.2.- Aritméticas• ADD Op1,Op2

Suma Op1=Op1+Op2Afecta a CF, ZF, OF y SF

ADD EAX,2 ; EAX = EAX + 2ADD WORD [BX+5],5ADD EBX,[ESI]

• ADC Op1,Op2Suma con acarreo Op1=Op1+Op2+CFEj.: ADD EAX,EBX ; EDX EAX 64 bits

ADC EDX,ECX ; ECX EBX 64 bits CF EDX EAX 65 bits

• SUB Op1, Op2Resta Op1=Op1-Op2

• SBB Op1,Op2Resta con acarreo (borrow) Op1=Op1-Op2-CF

Page 25: Sistemas Electrónicos para el Tratamiento de la ...jesman/BigSeti/seti1/Protegido/SETI_1_Tem… · Sistemas Electrónicos para el Tratamiento de la Información 1 Jesús M. Hernández

24

Sistemas Electrónicos para el Tratamiento de la Información 1

Jesús M. Hernández

2.- Arquitectura Intel (Nivel Aplicación)4 2.2.- Repertorio básico de instrucciones

ü 2.2.2.- Aritméticas• IMUL

Multiplicación con signo– IMUL Op AX = AL*r/m8 DX AX = AX*r/m16

EDX EAX = EAX*r/m32– IMUL Op1,Op2 Op1 = Op1 * Op2– IMUL Op1,Op2,Op3 Op1 = Op3 * Op2

Op3 = Inm8/16/32 con signo

• MUL OpMultiplicación sin signoLa diferencia con respecto a IMUL radica en cómo se modifican los FLAGS de

condicionesAX = AL*r/m8

DX AX = AX*r/m16EDX EAX = EAX*r/m32

Si el resultado nocabe, CF=OF=1

Page 26: Sistemas Electrónicos para el Tratamiento de la ...jesman/BigSeti/seti1/Protegido/SETI_1_Tem… · Sistemas Electrónicos para el Tratamiento de la Información 1 Jesús M. Hernández

25

Sistemas Electrónicos para el Tratamiento de la Información 1

Jesús M. Hernández

2.- Arquitectura Intel (Nivel Aplicación)4 2.2.- Repertorio básico de instrucciones

ü 2.2.2.- Aritméticas• IDIV Op

Divide con signoAX/rm8 => Cociente = AL, Resto = AH(DX AX)/rm16 => Cociente = AX, Resto = DX(EDX EAX)/rm32 => Cociente = EAX, Resto = EDX

Si el cociente no cabe, excepción nº cero• DIV Op

Divide sin signo. Se diferencian en el rango del resto. Ej. Caso de división entre 8 bits:» Con signo -128 .. 127 y en la modif. de EFLAGS» Sin signo 0 .. 255

• INC OpIncrementa Op = Op + 1 ; No afecta a CF

• DEC OpDecrementa Op = Op - 1 ; No afecta a CF

• NEG OpComplementa a 2 Op = - Op

• CMP Op1,Op2Compara Op1 – Op2 y modifica los FLAGS. No se modifican los

operandos

Page 27: Sistemas Electrónicos para el Tratamiento de la ...jesman/BigSeti/seti1/Protegido/SETI_1_Tem… · Sistemas Electrónicos para el Tratamiento de la Información 1 Jesús M. Hernández

26

Sistemas Electrónicos para el Tratamiento de la Información 1

Jesús M. Hernández

2.- Arquitectura Intel (Nivel Aplicación)

4 2.2.- Repertorio básico de instruccionesü 2.2.3.- Aritmética BCD

• DAAAjuste decimal de AL después de la suma (BCD empaquetado)

; AL = 79h (121), BL = 35h (53)ADD AL,BL ; AL = AEh(174) valor no BCDDAA ; AL = 14h (20) y CF=1

• DASAjuste decimal de AL después de la resta (BCD empaquetado)

• AAAAjuste ASCII después de la suma (BCD no empaquetado)

• AASAjuste ASCII después de la resta (BCD no empaquetado)

• AAMAjuste ASCII después del producto (BCD no empaquetado)

• AADAjuste ASCII antes de la división (BCD no empaquetado)

79 35114

0102h AAD 0Ch----- ==> ---- = 3h 4h 4h

Page 28: Sistemas Electrónicos para el Tratamiento de la ...jesman/BigSeti/seti1/Protegido/SETI_1_Tem… · Sistemas Electrónicos para el Tratamiento de la Información 1 Jesús M. Hernández

27

Sistemas Electrónicos para el Tratamiento de la Información 1

Jesús M. Hernández

4 2.2.- Repertorio básico de instruccionesü 2.2.4.- Lógicas

• AND Op1,Op2 Op1 = Op1 AND Op2• OR Op1,Op2 Op1 = Op1 OR Op2• XOR Op1,Op2 Op1 = Op1 XOR Op2• NOT Op Op = NOT Op

ü 2.2.5.- Desplazamientos y rotaciones• SAR Op1,CL/Inm8

Desplazamiento aritmético a la derecha, máximo 31 posiciones. Es una división (consigno) rápida por potencias de 2

• SHR Op1,CL/Inm8Desplazamiento lógico a la derecha, máximo 31 posiciones. Es una división (sin signo)

rápida por potencias de 2

• SAL/SHL Op1,CL/Inm8Desplazamiento aritmético/lógico a la izquierda, máximo 31 posiciones. Es un

producto por una potencia de 2

2.- Arquitectura Intel (Nivel Aplicación)

Page 29: Sistemas Electrónicos para el Tratamiento de la ...jesman/BigSeti/seti1/Protegido/SETI_1_Tem… · Sistemas Electrónicos para el Tratamiento de la Información 1 Jesús M. Hernández

28

Sistemas Electrónicos para el Tratamiento de la Información 1

Jesús M. Hernández

2.- Arquitectura Intel (Nivel Aplicación)

4 2.2.- Repertorio básico de instruccionesü 2.2.5.- Desplazamientos y rotaciones

• SHRD rm16/32, r16/32, Inm8/CL• SHLD rm16/32, r16/32, Inm8/CL

Page 30: Sistemas Electrónicos para el Tratamiento de la ...jesman/BigSeti/seti1/Protegido/SETI_1_Tem… · Sistemas Electrónicos para el Tratamiento de la Información 1 Jesús M. Hernández

29

Sistemas Electrónicos para el Tratamiento de la Información 1

Jesús M. Hernández

2.- Arquitectura Intel (Nivel Aplicación)

4 2.2.- Repertorio básico de instruccionesü 2.2.5.- Desplazamientos y rotaciones

• ROR rm8/16/32,Inm8/CL Rotación a la derecha

• ROL rm8/16/32,Inm8/CL Rotación a la izquierda

• RCR rm8/16/32,Inm8/CL Rotación a la derecha a través del acarreo

• RCL rm8/16/32,Inm8/CL Rotación a la izquierda a través del acarreo

Page 31: Sistemas Electrónicos para el Tratamiento de la ...jesman/BigSeti/seti1/Protegido/SETI_1_Tem… · Sistemas Electrónicos para el Tratamiento de la Información 1 Jesús M. Hernández

30

Sistemas Electrónicos para el Tratamiento de la Información 1

Jesús M. Hernández

2.- Arquitectura Intel (Nivel Aplicación)

4 2.2.- Repertorio básico de instruccionesü 2.2.6.- Manejo de bits o byte

• BT rm16/32,r16/32/Inm8Almacena el bit comprobado en CF. Si se refiere a memoria el rango es –231.. 231-1

• BTS rm16/32,r16/32/Inm8Comprueba el bit y lo pone a “1”

• BTR rm16/32,r16/32/Inm8Comprueba el bit y lo pone a “0”

• BTC rm16/32,r16/32/Inm8Comprueba el bit y lo complementa

• BSF r16/32,rm16/32Busca primer bit a “1” hacia delante en la fuente (16/32 bits) comenzando por el LSBit y

almacena su posición (con signo) en el destino. Si lo encuentra ZF=0, sino ZF=1

• BSR r16/32,rm16/32Busca primer bit a “1” hacia atrás en la fuente comenzando por el MSBit y almacena su

posición (con signo) en el destino. Si lo encuentra ZF=0, sino ZF=1

• SETcc rm8Si se cumple la condición (las mismas que con CMOVcc ó Jcc) introduce un “1”, sino un “0”

Page 32: Sistemas Electrónicos para el Tratamiento de la ...jesman/BigSeti/seti1/Protegido/SETI_1_Tem… · Sistemas Electrónicos para el Tratamiento de la Información 1 Jesús M. Hernández

31

Sistemas Electrónicos para el Tratamiento de la Información 1

Jesús M. Hernández

2.- Arquitectura Intel (Nivel Aplicación)

4 2.2.- Repertorio básico de instruccionesü 2.2.6.- Manejo de bits o byte

• TEST Op1,Op2Realiza la función Op1 AND Op2 y según el resultado modifica SF, ZF y PF

ü 2.2.7.- Transferencia de control• JMP rel8 Salto SHORT (relativo: -128..+127)• JMP dir Salto NEAR (intrasegmento) rm16/rm32• JMP sel:dir Salto FAR (intersegmento) ptr16/ptr32

Salto incondicionalEj.: JMP Fin ;

JMP NEAR OtroladoJMP 1230h:128383843h

FIN: ; El : indica codificar salto SHORT

• JccSalto condicional relativo. Sólo saltos intrasegmento. Utiliza las mismas condiciones

que CMOVcc y SETcc. Además:JCXZ si CX=0 salta ¡Ojo! No decrementa CX, ni comprueba ZFJECXZ si ECX=0 salta

Page 33: Sistemas Electrónicos para el Tratamiento de la ...jesman/BigSeti/seti1/Protegido/SETI_1_Tem… · Sistemas Electrónicos para el Tratamiento de la Información 1 Jesús M. Hernández

32

Sistemas Electrónicos para el Tratamiento de la Información 1

Jesús M. Hernández

2.- Arquitectura Intel (Nivel Aplicación)

4 2.2.- Repertorio básico de instruccionesü 2.2.7.- Transferencia de control

• LOOP rel8Bucle con CX/ECX como contador– Decrementa CX/ECX dependiendo del modo de direccionamiento 16/32 bits– Si CX/ECX != 0 salta a la dirección– Sino pasa a la instrucción siguiente

MOV CX,20 ; Repetirá 20 veces el bucleBucle: ....

....LOOP Bucle ; Fin del bucle

• LOOPZ/LOOPE rel8Idem, repite si ( CX/ECX distinto de cero y ZF = 1 )

• LOOPNZ/LOOPNE rel8Idem, repite si ( CX/ECX distinto de cero y ZF = 0 )

Page 34: Sistemas Electrónicos para el Tratamiento de la ...jesman/BigSeti/seti1/Protegido/SETI_1_Tem… · Sistemas Electrónicos para el Tratamiento de la Información 1 Jesús M. Hernández

33

Sistemas Electrónicos para el Tratamiento de la Información 1

Jesús M. Hernández

2.- Arquitectura Intel (Nivel Aplicación)4 2.2.- Repertorio básico de instrucciones

ü 2.2.7.- Transferencia de control• CALL dir Llamada NEAR

• CALL sel:dir Llamada FAR

Su funcionamiento es mucho más complejo (modo protegido)

– ESP = ESP –4

– [ESP]=CS

– ESP=ESP-4

– [ESP]=EIP

– EIP=dir32

– CS=sel

– ESP = ESP –2

– [ESP]=CS

– ESP=ESP-2

– [ESP]=IP

– IP=dir16

– CS=sel

– ESP = ESP –2

– [ESP]=IP

– IP=dir16

– ESP = ESP –4

– [ESP]=EIP

– EIP=dir32

Direccionamiento 32 bits

Direccionamiento 16 bits

Direccionamiento 16 bits

Direccionamiento 32 bits

Page 35: Sistemas Electrónicos para el Tratamiento de la ...jesman/BigSeti/seti1/Protegido/SETI_1_Tem… · Sistemas Electrónicos para el Tratamiento de la Información 1 Jesús M. Hernández

34

Sistemas Electrónicos para el Tratamiento de la Información 1

Jesús M. Hernández

2.- Arquitectura Intel (Nivel Aplicación)

4 2.2.- Repertorio básico de instruccionesü 2.2.7.- Transferencia de control

• RET Retorno de subrutinaRecupera IP/EIP de la pila si es un retorno NEARRecupera además CS de la pila si es un retorno FAR (instr. RETF)

• RET nRetorna y ESP=ESP+n

• INT Inm8Llamada software a interrupción

• IRET/IRETDRetorno de interrupción (16/32 bits)

Mucho más complicado en modo protegido

– ESP = ESP – 2

– [ESP]= FLAGS

– ESP = ESP - 2

– [ESP]= CS

– ESP = ESP – 2

– [ESP] = IP

– IF=0, TF=0, AC=0

– IP = [ 0: Inm8*4]

– CS = [ 0: Inm8*4+2]

– IP = [ESP]

– ESP = ESP + 2

– CS = [ESP]

– ESP = ESP + 2

– EFLAGS = [ESP]

– ESP = ESP + 2

– IF=1

Page 36: Sistemas Electrónicos para el Tratamiento de la ...jesman/BigSeti/seti1/Protegido/SETI_1_Tem… · Sistemas Electrónicos para el Tratamiento de la Información 1 Jesús M. Hernández

35

Sistemas Electrónicos para el Tratamiento de la Información 1

Jesús M. Hernández

2.- Arquitectura Intel (Nivel Aplicación)

4 2.2.- Repertorio básico de instruccionesü 2.2.7.- Transferencia de control

• INT3Idéntico a INT 3, solo que ocupa un byte. Para poner puntos de ruptura

• INTOSe produce INT 4 si OF=1

• BOUND– Detecta un valor fuera de rango para indexar una matriz

• ENTER– Reserva una zona de datos en la pila para parámetros locales (para lenguajes de alto

nivel)

• LEAVE– Salida de ENTER

Page 37: Sistemas Electrónicos para el Tratamiento de la ...jesman/BigSeti/seti1/Protegido/SETI_1_Tem… · Sistemas Electrónicos para el Tratamiento de la Información 1 Jesús M. Hernández

36

Sistemas Electrónicos para el Tratamiento de la Información 1

Jesús M. Hernández

2.- Arquitectura Intel (Nivel Aplicación)

4 2.2.- Repertorio básico de instruccionesü 2.2.8.- Manejo de bloques de datos

Utiliza como punteros DS:ESI y ES:EDI si direccionamiento 32 bits (directiva BITS 32)Utiliza como punteros DS:SI y ES:DI si direccionamiento 16 bits (directiva BITS 16)

• MOVSB/MOVSW/MOVSDCopia un bloque de datos (MOVe String)[ES:EDI] = [DS:ESI]Si EFLAGS.DF=0 ESI = ESI + (1,2,4)

EDI = EDI + (1,2,4)Si EFLAGS.DF=1 ESI = ESI - (1,2,4)

EDI = EDI - (1,2,4)

• CMPSB/CMPSW/CMPSDCompara un bloque de datos (CoMPare String)CMP [ES:EDI],[DS:ESI]ESI = ESI ± (1,2,4)EDI = EDI ± (1,2,4)

La salida es EFLAGS.ZF=1 si son iguales

Page 38: Sistemas Electrónicos para el Tratamiento de la ...jesman/BigSeti/seti1/Protegido/SETI_1_Tem… · Sistemas Electrónicos para el Tratamiento de la Información 1 Jesús M. Hernández

37

Sistemas Electrónicos para el Tratamiento de la Información 1

Jesús M. Hernández

2.- Arquitectura Intel (Nivel Aplicación)4 2.2.- Repertorio básico de instrucciones

ü 2.2.8.- Manejo de bloques de datos• SCASB/SCASW/SCASD

Explora un bloque de datos en busca de un elemento (SCAn String)CMP Acumulador,[ES:EDI]EDI = EDI ± (1,2,4)La salida es EFLAGS.ZF=1 si son iguales

• LODSB/LODSW/LODSDLee un bloque de datos (LOaD String)Acumulador = [DS:ESI]ESI = ESI ± (1,2,4)

• STOSB/STOSW/STOSDEscribe un bloque de datos (STOre String)[ES:EDI] = AcumuladorEDI = EDI ± (1,2,4)

• INSB/INSW/INSDLee un bloque de datos desde E/S (INput String)[ES:EDI] = Port[DX] de 8,16 o 32 bitsEDI = EDI ± (1,2,4)

• OUTSB/OUTSW/OUTSDEscribe un bloque de datos en E/S (OUTput String)Port[DX] de 8,16 o 32 bits = [DS:ESI]ESI = ESI ± (1,2,4)

Page 39: Sistemas Electrónicos para el Tratamiento de la ...jesman/BigSeti/seti1/Protegido/SETI_1_Tem… · Sistemas Electrónicos para el Tratamiento de la Información 1 Jesús M. Hernández

38

Sistemas Electrónicos para el Tratamiento de la Información 1

Jesús M. Hernández

2.- Arquitectura Intel (Nivel Aplicación)

4 2.2.- Repertorio básico de instruccionesü 2.2.8.- Manejo de bloques de datos

• REP / REPZ / REPE / REPNZ /REPNEPrefijo de repetición– REP Decrementa CX/ECX y si no es cero repite la instrucción siguiente– REPZ/REPE Idem, y repite si CX/ECX no es cero y ZF = 1– REPNZ/REPNE

Idem, y repite si CX/ECX no es cero y ZF = 0

Copia de un bloqueMOV AX,DATOSMOV DS,AXMOV ES,AXMOV ESI,TXTORG ; DS:ESI apunta al origenMOV EDI,TXTDEST ; ES:EDI apunta al destinoCLD ; DF=0, incrementará punterosMOV ECX,TAMANOREP MOVSB ; Lo copia

Page 40: Sistemas Electrónicos para el Tratamiento de la ...jesman/BigSeti/seti1/Protegido/SETI_1_Tem… · Sistemas Electrónicos para el Tratamiento de la Información 1 Jesús M. Hernández

39

Sistemas Electrónicos para el Tratamiento de la Información 1

Jesús M. Hernández

2.- Arquitectura Intel (Nivel Aplicación)4 2.2.- Repertorio básico de instrucciones

ü 2.2.8.- Manejo de bloques de datosCompara dos bloques

MOV AX,DATOSMOV DS,AXMOV AX,DATOS2MOV ES,AXMOV ESI,TXTORG ; DS:ESI apunta al origenMOV EDI,TXTDEST ; ES:EDI apunta al destinoCLD ; DF=0, incrementará punterosMOV ECX,TAMANOREPZ CMPSB ; Si al salir ZF = 1 es que son iguales

; sino DS:ESI-1 apunta al primer dato; diferente

Busqueda de un dato en un bloqueMOV AL,CarácterMOV BX,DATOSMOV DS,BXMOV EDI,TXTDEST ; ES:EDI apunta al BLOQUECLD ; DF=0, incrementará punterosMOV ECX,TAMANOREPNE SCASB ; Si al salir ZF = 1 es que encontró el dato en la

; posición ES:EDI –1

Page 41: Sistemas Electrónicos para el Tratamiento de la ...jesman/BigSeti/seti1/Protegido/SETI_1_Tem… · Sistemas Electrónicos para el Tratamiento de la Información 1 Jesús M. Hernández

40

Sistemas Electrónicos para el Tratamiento de la Información 1

Jesús M. Hernández

2.- Arquitectura Intel (Nivel Aplicación)4 2.2.- Repertorio básico de instrucciones

ü 2.2.9.- Control de FLAGS• STC EFLAGS.CF = 1• CLC EFLAGS.CF = 0• CMC EFLAGS.CF = /CF• CLD EFLAGS.DF = 0• STD EFLAGS.DF = 1• LAHF

Carga FLAGS en AH AH = (SF,ZF,AF,PF,CF)Bit 4 3 2 1 0

• SAHFGuarda AH en FLAGS

• STI EFLAGS.IF = 1• CLI EFLAGS.IF = 0

ü 2.2.10.- Acceso a registros de segmento• LDS, LES, LFS, LGS, LSS

Cargan un puntero FAR LDS r16/32, Ptr32/48

Ej.: LDS DX,[ES:BX]

DS

DX

BX

ES

Page 42: Sistemas Electrónicos para el Tratamiento de la ...jesman/BigSeti/seti1/Protegido/SETI_1_Tem… · Sistemas Electrónicos para el Tratamiento de la Información 1 Jesús M. Hernández

41

Sistemas Electrónicos para el Tratamiento de la Información 1

Jesús M. Hernández

2.- Arquitectura Intel (Nivel Aplicación)

4 2.2.- Repertorio básico de instruccionesü 2.2.11.- Miscelánea

• LEA r16/32,memCarga dirección efectiva. Para simplificar direccionamientos posterioresEj.:

LEA BX,[SI+16] ; BX = SI+16LEA EAX,[ES:EBX+EAX*4+16] ; EAX = EBX + EAX*4 + 16

• NOPNo operación. Utilidad: alinear instrucciones en memoria

• UD2Instrucción no definida. Genera una excepción de instrucción no reconocida

• XLATBTraduce bytes usando una tabla de 256 valoresAL = [ DS : EBX + (sin signo) AL ]

• CPUIDIntroduce en EAX, EBX, ECX, EDX la información de identificación del procesador