universidad nacional de san agustín

15
7. Registros del 8088 Para una mejora en las variables de memoria y en su funcionamiento general, el microprocesador dispone de una serie de “variables” internas de nombres fijos que son los registros internos, cada uno poseedor de una función concreta. Estos se dividen a su vez por áreas de funcionalidad: Registros de almacenamiento temporal - AX (registro Acumulador): Este registro es usado, sobre todo, en operaciones aritméticas como primer operando y también como registro de propósito general a disposición del programador. - BX (registro Base): Se usa principalmente para indicar posiciones de memoria. - CX (registro Contador): Este registro se usa siempre que se necesite un contador en operaciones repetitivas y bucles. - DX (registro Dato): Se usa como registro auxiliar en operaciones aritméticas y como contenedor de datos a la hora de usar instrucciones de comunicación de puertos. Estos cuatro registros, como todos los restantes, son de 16 bits, pero para permitir la realización de operaciones de tipo byte (8 bits) cada uno de estos registros está dividido en dos subregistros de 8 bits a los que se puede acceder de forma independiente. Registros de la pila La pila es un área de memoria importante. Tiene, en vez de uno, dos registros que se usan como desplazamiento (offset) para apuntar su contenido. Se usan como complemento al registro SS y son: - SP (Stack Pointer): Es el registro que se reserva el procesador para uso propio en instrucciones de manipulación de la pila. - BP (Base Pointer): Se usa como registro auxiliar. Registros de segmento

Upload: juanantoniobutronllamoca

Post on 21-Sep-2015

217 views

Category:

Documents


0 download

DESCRIPTION

Trabajo

TRANSCRIPT

7. Registros del 8088Para una mejora en las variables de memoria y en su funcionamiento general, el microprocesador dispone de una serie de variables internas de nombres fijos que son los registros internos, cada uno poseedor de una funcin concreta. Estos se dividen a su vez por reas de funcionalidad:

Registros de almacenamiento temporal- AX (registro Acumulador): Este registro es usado, sobre todo, en operaciones aritmticas como primer operando y tambin como registro de propsito general a disposicin del programador.- BX (registro Base): Se usa principalmente para indicar posiciones de memoria.- CX (registro Contador): Este registro se usa siempre que se necesite un contador en operaciones repetitivas y bucles.- DX (registro Dato): Se usa como registro auxiliar en operaciones aritmticas y como contenedor de datos a la hora de usar instrucciones de comunicacin de puertos.Estos cuatro registros, como todos los restantes, son de 16 bits, pero para permitir la realizacin de operaciones de tipo byte (8 bits) cada uno de estos registros est dividido en dos subregistros de 8 bits a los que se puede acceder de forma independiente.

Registros de la pilaLa pila es un rea de memoria importante. Tiene, en vez de uno, dos registros que se usan como desplazamiento (offset) para apuntar su contenido. Se usan como complemento al registro SS y son:- SP (Stack Pointer): Es el registro que se reserva el procesador para uso propio en instrucciones de manipulacin de la pila.- BP (Base Pointer): Se usa como registro auxiliar.

Registros de segmentoSon cuatro registros de 16 bits usados para indicar direcciones de memoria:- CS (Code Segment): Este registro es usado por el procesador, junto con el registro IP, para conocer dnde est la instruccin actual que est siendo ejecutada.- DS (Data Segment): Se usa para indicar dnde estn todos los datos del programa en ejecucin.- SS (Stack Segment): En este registro se indica al procesador dnde est la zona de memoria que se usa como segmento de pila.- ES (Extra Segment): Es el registro que referencia al segmento extra, y se usa como apuntador de memoria auxiliar en operaciones complejas donde se necesitan dos punteros de datos simultneos.

Registros ndices.Se utilizan como desplazamientos complementarios para DS y ES a la hora de indicar la posicin donde se encuentran los datos a los que se desea acceder. Son:- SI (Source index): Se usa como puntero origen en operaciones de desplazamiento de datos entre dos zonas de memoria.- DI (Destination index). Se usa como destino en operaciones de desplazamiento de datos.

Registros de instruccin:Slo hay uno, el registro IP (Instruction Pointer), es usado por la CPU para conocer la posicin relativa a la base CS donde se encuentra la instruccin que se est ejecutando actualmente.Este registro no puede ser modificado directamente por parte del programador. Este puntero cambia su contenido automticamente cada vez que se ejecuta una instruccin o cuando se salta a otro punto del programa mediante una instruccin de salto.

Registro de Banderas:Este registro es usado para tener el control de estado y control de las operaciones. La mayora de sus 16 bits se utiliza para representar un estado concreto:0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15CF -- PF -- AF -- ZF SF TF IF DF OF -- -- -- --.- Bit 0 - CF (Carry Flag): Es la bandera de acarreo. Se pone a 1 cuando se produce un resultado con acarreo tras una operacin aritmtica.- Bit 1: No usado.- Bit 2 - PF (Parity Flag): Cuando est a 1, indica que hay un nmero par de bits activos.- Bit 3: No usado.- Bit 4 - AF (Auxiliar Flag): Se usa como bandera auxiliar. Se pone a 1 cuando hay necesidad de realizar ajustes tras una operacin de tipo BCD.- Bit 5: No usado.- Bit 6 - ZF (Zero Flag): Indica si se ha producido un resultado cero o una comparacin con operadores iguales.- Bit 7 - SF (Sign Flag): Indica si se ha producido un resultado negativo o comparacin menor.- Bit 8 - TF (Trap Flag): Es la bandera de atrape, usada en procesos de depuracin de cdigo.- Bit 9 - IF (Interrupt Flag): Si est a 1, indica que est permitida la generacin de interrupciones hardware que generan algunos perifricos, como la que realiza el teclado cada vez que una tecla es pulsada.- Bit 10 - DF (Direction Flag): Indica a la CPU hacia donde se desplazan los punteros relativos en operaciones repetitivas de cadenas de datos.- Bit 11 - OF (Overflow Flag): Indica si se ha producido un desbordamiento aritmtico.- Bit 12 al 15: No usados.A continuacin se muestra la estructura de los registros mencionados:

8. Modos de direccionamientoLos llamados modos de direccionamiento son las diferentes maneras de especificar en informtica un operando dentro de una instruccin en lenguaje ensamblador. Son medios que facilitan la tarea de programacin, permitiendo el acceso a los datos de una manera natural y eficiente. Estos indican al procesador como calcular la direccin absoluta (real o efectiva) donde se encuentran los datos. Diversas arquitecturas de computadores estn en desacuerdo en gran proporcin en cuanto al nmero de modos de direccionamiento que ofrecen desde el hardware. No tener en cuenta los modos de direccionamiento ms complejos podra presentar una serie de beneficios, aunque podra requerir de instrucciones adicionales, e incluso de otro registro. Se ha comprobado que el diseo de CPUs segmentadas es mucho ms fcil si los nicos modos de direccionamiento que proporcionan son simples.

Generalmente, consideramos los objetivos de los modos de direccionamiento como: Reducir el espacio ocupado en memoria por las instrucciones. Permitir la reubicacin del cdigo. Facilitar el manejo de las estructuras de datos.Existen cinco modos de direccionamiento bsicos: son el inmediato, el implcito o indexado, el de registro, el directo y el indirecto. A su vez, estos medios se subdividen en otras clasificaciones ms particulares.Direccionamiento inmediatoEl operando es un nmero que forma parte de la instruccin. No se necesita calcular la direccin absoluta. La instruccin contiene al propio objeto. Se emplea cuando la instruccin contiene un valor constante. El tamao del operando viene determinado por el espacio reservado para l en el formato de instruccin.Ejemplos: ADD BX, 2h SUB CX, 100h

Direccionamiento directoLa direccin del operando viene incluida en la instruccin, aqu el procesador calcula la direccin real ([DS]+Dir).Ejemplo: MOV AX, DATO ADD AX, [100]

Direccionamiento de registroLos operandos o datos se encuentran en registros. No se necesita calcular la direccin Absoluta. Transfiere un byte o palabra desde el registro fuente o localidad en memoria, hasta el registro o localidad destino en la memoria. Ejemplo: OVCX,DX copia el contenido de tamao de palabra en el registro DX y lo pasa al registro CX.Ejemplo:ADD BX, CX MOV BX, AX SUB DX, BX

Direccionamiento indexadoEl procesador calcula la direccin efectiva (real o absoluta sumando a DS o a ES SI o DI respectivamente) ms un desplazamiento. Similar al direccionamiento relativo a registro base: El operando se encuentra en memoria y por ser un registro ndice: se modifica a menudo en la ejecucin del programa.Ejemplo: MOV SI,2 MOV AX, DATO [SI]

Direccionamiento indirectoEl operando se encuentra en memoria. La instruccin contiene una direccin que se emplea para leer en memoria una direccin intermedia que ser la verdadera direccin del objeto buscado.Ejemplo: MOV BX, OFFSET DATO (LEA BX, DATO) MOV AX,[BX]

9. Set de instrucciones del 8088 Inst. Operandos Bytes Ciclos 8088 Ciclos 286 Ciclos 386 Ciclos 486 ------ ----------------------------------- ------- --------------- ------------ ------------ ------------ AAA 1 8 3 4 3 AAD 2 60 14 19 14 AAM 2 83 16 17 15 AAS 1 8 3 4 3 ADC registro, registro 2 3 2 2 1 ADC registro, memoria 2-4 9(13)+EA 7 # 6 2 ADC memoria, registro 2-4 16(24)+EA 7 # 7 3 ADC registro, inmediato 3-4 4 3 2 1 ADC memoria, inmediato 3-6 17(25)+EA 7 # 7 3 ADC acumulador, inmediato 2-3 4 3 2 1 ADD registro, registro 2 3 2 2 1 ADD registro, memoria 2-4 9(13)+EA 7 # 6 2 ADD memoria, registro 2-4 16(24)+EA 7 # 7 3 ADD registro, inmediato 3-4 4 3 2 1 ADD memoria, inmediato 3-6 17(25)+EA 7 # 7 3 ADD acumulador, inmediato 2-3 4 3 2 1 AND registro, registro 2 3 2 2 1 AND registro, memoria 2-4 9(13)+EA 7 # 6 2 AND memoria, registro 2-4 16(24)+EA 7 # 7 3 AND registro, inmediato 3-4 4 3 2 1 AND memoria, inmediato 3-6 17(25)+EA 7 # 7 3 AND acumulador, inmediato 2-3 4 3 2 1 BOUND registro16, memoria16 2-4 (no existe) 13 # 10 7 BOUND registro32, memoria32 2-6 (no existe) (no existe) 10 7 BSF registro16, registro16 3 (no existe) (no existe) 10+3*n 6-42 BSF registro16, memoria16 5-7 (no existe) (no existe) 10+3*n 7-43 BSF registro32, registro32 3 (no existe) (no existe) 10+3*n 6-42 BSF registro32, memoria32 5-7 (no existe) (no existe) 10+3*n 7-43 BSR registro16, registro16 3 (no existe) (no existe) 10+3*n 6-42 BSR registro16, memoria16 5-7 (no existe) (no existe) 10+3*n 7-43 BSR registro32, registro32 3 (no existe) (no existe) 10+3*n 6-42 BSR registro32, memoria32 5-7 (no existe) (no existe) 10+3*n 7-43 BT registro16, registro16 3 (no existe) (no existe) 3 3 BT memoria16, registro16 5-7 (no existe) (no existe) 12 8 BT registro32, registro32 3 (no existe) (no existe) 3 3 BT memoria32, registro32 5-7 (no existe) (no existe) 12 8 BT registro16, inmediato8 4 (no existe) (no existe) 3 3 BT memoria16, inmediato8 6-8 (no existe) (no existe) 6 3 BT registro32, inmediato8 4 (no existe) (no existe) 3 3 BT memoria32, inmediato8 6-8 (no existe) (no existe) 6 3 BTC registro16, registro16 3 (no existe) (no existe) 6 6 BTC memoria16, registro16 5-7 (no existe) (no existe) 13 13 BTC registro32, registro32 3 (no existe) (no existe) 6 6 BTC memoria32, registro32 5-7 (no existe) (no existe) 13 13 BTC registro16, inmediato8 4 (no existe) (no existe) 6 6 BTC memoria16, inmediato8 6-8 (no existe) (no existe) 8 8 BTC registro32, inmediato8 4 (no existe) (no existe) 6 6 BTC memoria32, inmediato8 6-8 (no existe) (no existe) 8 8 BTR registro16, registro16 3 (no existe) (no existe) 6 6 BTR memoria16, registro16 5-7 (no existe) (no existe) 13 13 BTR registro32, registro32 3 (no existe) (no existe) 6 6 BTR memoria32, registro32 5-7 (no existe) (no existe) 13 13 BTR registro16, inmediato8 4 (no existe) (no existe) 6 6 BTR memoria16, inmediato8 6-8 (no existe) (no existe) 8 8 BTR registro32, inmediato8 4 (no existe) (no existe) 6 6 BTR memoria32, inmediato8 6-8 (no existe) (no existe) 8 8 BTS registro16, registro16 3 (no existe) (no existe) 6 6 BTS memoria16, registro16 5-7 (no existe) (no existe) 13 13 BTS registro32, registro32 3 (no existe) (no existe) 6 6 BTS memoria32, registro32 5-7 (no existe) (no existe) 13 13 BTS registro16, inmediato8 4 (no existe) (no existe) 6 6 BTS memoria16, inmediato8 6-8 (no existe) (no existe) 8 8 BTS registro32, inmediato8 4 (no existe) (no existe) 6 6 BTS memoria32, inmediato8 6-8 (no existe) (no existe) 8 8 CALL procedimiento near (intrasegmento) 3 23 7+m 7+m 3 CALL procedimiento far (intersegmento) 5 36 13+m 17+m 18 CALL intrasegmento indirecto a memoria 2-4 29+EA 11+m 10+m 5 CALL intrasegmento indirecto a registro 2 24 7+m 7+m 5 CALL intersegmento indirecto a memoria 2-4 57+EA 16+m 22+m 17 CBW 1 2 2 3 3 CDQ 1 (no existe) (no existe) 2 3 CLC 1 2 2 2 2 CLD 1 2 2 2 2 CLI 1 2 3 3 5 CMC 1 2 2 2 2 CMP registro, registro 2 3 2 2 1 CMP registro, memoria 2-4 9(13)+EA 6 # 6 2 CMP memoria, registro 2-4 9(13)+EA 7 # 5 2 CMP registro, inmediato 3-4 4 3 2 1 CMP memoria, inmediato 3-6 10(14)+EA 6 # 5 2 CMP acumulador, inmediato 2-3 4 3 2 1 CMPS 1 22(30) 8 10 8 CMPS (REP) 1 9+22(30)*n 5+9*n 5+9*n 5 (CX=0) 7+7*n CWD 1 5 2 2 3 CWDE 1 (no existe) (no existe) 3 3 DAA 1 4 3 4 2 DAS 1 4 3 4 2 DEC registro byte 2 3 2 2 1 DEC registro palabra 1 2 2 2 1 DEC memoria 2-4 15(23)+EA 7 # 6 3 DIV registro byte 2 80-90 14 14 16 DIV registro palabra 2 144-162 22 22 24 DIV registro32 2 (no existe) (no existe) 38 40 DIV byte de memoria 2-4 86-96+EA 17 # 17 16 DIV palabra de memoria 2-4 154-172+EA 25 # 25 24 DIV palabra32 de memoria 2-6 (no existe) (no existe) 41 40 ENTER constante16, 0 4 (no existe) 11 10 14 ENTER constante16, 1 4 (no existe) 15 12 17 ENTER constante16, nivel 4 (no existe) 12+4*(n-1) 15+4*(n-1) 17+3*n ESC inmediato, memoria 2-4 8(12)+EA 9-20 # (ver coproc.) (ver coproc.) ESC inmediato, registro 2 2 2 (ver coproc.) (ver coproc.) HLT 1 2 2 5 4 IDIV registro byte 2 101-112 17 19 19 IDIV registro palabra 2 165-185 25 27 27 IDIV registro32 2 (no existe) (no existe) 43 43 IDIV byte de memoria 2-4 107-118+EA 20 # 19 20 IDIV palabra de memoria 2-4 175-194+EA 28 # 27 28 IDIV palabra32 de memoria 2-6 (no existe) (no existe) 43 44 IMUL registro byte 2 80-98 13 9-14 13-18 IMUL registro palabra 2 128-154 21 9-22 13-26 IMUL registro32 2 (no existe) (no existe) 9-38 13-42 IMUL byte de memoria 2-4 86-104+EA 16 12-17 13-18 IMUL palabra de memoria 2-4 138-164+EA 24 # 12-25 13-26 IMUL palabra32 de memoria 2-6 (no existe) (no existe) 12-41 13-42 IMUL registro16 destino, constante 3-4 (no existe) 21 9-22 13-26 IMUL registro16 destino, memoria 5-7 (no existe) (no existe) 12-25 13-26 IMUL registro32 destino, memoria 5-7 (no existe) (no existe) 12-41 13-42 IMUL registro destino, registro, cte. 2-4 (no existe) 21 9-22 13-26 IMUL registro destino, memoria, cte. 3-4 (no existe) 24 # 12-25 13-26 IN acumulador, puerto fijo 2 10(14) 5 12(26) 14(27) IN acumulador, DX 1 8(12) 5 13(27) 14(27) INC registro byte 2 3 2 2 1 INC registro palabra 1 2 2 2 1 INC memoria 2-4 15(23)+EA 7 # 6 3 INS 1 (no existe) 5 15(29) 17(30) INS (REP) 2 (no existe) 5+4*n 13(27)+6*n 16(29)+8*n INT 3 1 52 23+m 33 26 INT inmediato 2 51 23+m 37 30 INTO 1 53 4 24+m 3 35 3 28 3 IRET 1 32 17+m 22 15 JCXZ 2 18 6 8+m 4 9+m 5 3 1 JECXZ 2 (no existe) (no existe) 9+m 5 3 1 JMP short 2 15 7+m 7+m 3 JMP near (intrasegmento) 3 15 7+m 7+m 3 JMP far (intersegmento) 5 15 11+m 12+m 17 JMP intrasegmento indirecto a memoria 2-4 18+EA 11+m # 10+m 5 JMP intrasegmento indirecto a registro 2 11 7+m 7+m 5 JMP intersegmento indirecto a memoria 2-4 24+EA 15+m 17+m 13 Jxxx inmediato8 2 16 4 7+m 3 7+m 3 3 1 Jxxx inmediato32 6 (no existe) (no existe) 7+m 3 3 1 LAHF 1 4 2 2 3 LDS 2-4 24+EA 7 # 7 6 LEA 2-4 2+EA 3 # 2 1 LEAVE 1 (no existe) 5 4 5 LES 2-4 24+EA 7 # 7 6 LFS 2-4 (no existe) (no existe) 7 6 LGS 2-4 (no existe) (no existe) 7 6 LSS 2-4 (no existe) (no existe) 7 6 LOCK 1 2 0 0 1 LODS 1 12(16) 5 5 5 LODS (REP) 1 9+13(17)*n 5+4*n 5+6*n 5 (CX=0) 7+4*n LOOP 2 17 5 8+m 4 11+m 2 6 LOOPE 2 18 6 8+m 4 11+m 9 6 LOOPNE 2 19 5 8+m 4 11+m 9 6 LOOPZ 2 18 6 8+m 4 11+m 9 6 LOOPNZ 2 19 5 8+m 4 11+m 9 6 MOV memoria, acumulador 3 10(14) 3 2 1 MOV acumulador, memoria 3 10(14) 5 4 1 MOV registro, registro 2 2 2 2 1 MOV registro, memoria 2-4 8(12)+EA 5 # 4 1 MOV memoria, registro 2-4 9(13)+EA 3 # 2 1 MOV registro, inmediato 2-3 4 2 2 1 MOV memoria, inmediato 3-6 10(14)+EA 3 # 2 1 MOV registro de segmento, registro 2 2 2 2 3 MOV registro, registro de segmento 2 2 2 2 3 MOV registro de segmento, memoria 2-4 8(12)+EA 5 # 5 9 MOV memoria, registro de segmento 2-4 9(13)+EA 3 # 2 3 MOVS 1 18(26) 5 7 7 MOVS (REP) 1 9+17(25)*n 5+4*n 5+4*n 5 (CX=0) 12+3*n MOVSX registro16, registro8 3 (no existe) (no existe) 3 3 MOVSX registro16, memoria8 5-7 (no existe) (no existe) 6 3 MOVSX registro32, registro8 3 (no existe) (no existe) 3 3 MOVSX registro32, memoria8 5-7 (no existe) (no existe) 6 3 MOVSX registro32, registro16 3 (no existe) (no existe) 3 3 MOVSX registro32, memoria16 5-7 (no existe) (no existe) 6 3 MOVZX registro16, registro8 3 (no existe) (no existe) 3 3 MOVZX registro16, memoria8 5-7 (no existe) (no existe) 6 3 MOVZX registro32, registro8 3 (no existe) (no existe) 3 3 MOVZX registro32, memoria8 5-7 (no existe) (no existe) 6 3 MOVZX registro32, registro16 3 (no existe) (no existe) 3 3 MOVZX registro32, memoria16 5-7 (no existe) (no existe) 6 3 MUL registro byte 2 70-77 13 9-14 13 MUL registro palabra 2 118-133 21 9-22 13 MUL registro32 2 (no existe) (no existe) 9-38 13 MUL byte de memoria 2-4 76-83+EA 16 # 12-27 18 MUL palabra de memoria 2-4 128-143+EA 24 # 12-25 26 MUL palabra32 de memoria 2-6 (no existe) (no existe) 12-41 42 NEG registro 2 3 2 2 1 NEG memoria 2-4 16(24)+EA 7 # 6 3 NOP 1 3 3 3 1 NOT registro 2 3 2 2 1 NOT memoria 2-4 16(24)+EA 7 # 6 3 OR registro, registro 2 3 2 2 1 OR registro, memoria 2-4 9(13)+EA 7 # 6 3 OR memoria, registro 2-4 16(24)+EA 7 # 7 3 OR registro, inmediato 3-4 4 3 2 1 OR memoria, inmediato 3-6 17(25)+EA 7 # 7 3 OR acumulador, inmediato 2-3 4 3 2 1 OUT puerto fijo, acumulador 2 10(14) 3 10(24) 16(29) OUT DX, acumulador 1 8(12) 3 11(25) 16(29) OUTS byte o palabra 1 (no existe) 5 14(28) 17(30) OUTS (REP) 2 (no existe) 5+4*n 12(26)+5*n 17(31)+5*n POP registro normal 1 12 5 4 4 POP registro de segmento 1 12 5 7 3 POP memoria 2-4 25+EA 5 # 5 6 POPA 1 (no existe) 19 24 9 POPAD 1 (no existe) (no existe) 24 9 POPF 1 12 5 5 9 POPFD 1 (no existe) (no existe) 5 9 PUSH registro 1 14 3 2 1 PUSH memoria 2-4 24+EA 5 # 5 4 PUSH inmediato 2-3 (no existe) 3 2 1 PUSHA 1 (no existe) 17 18 11 PUSHAD 1 (no existe) (no existe) 18 11 PUSHF 1 14 3 4 4 PUSHFD 1 (no existe) (no existe) 4 4 RCL registro,1 2 2 2 9 3 RCL registro,CL 2 8+4*bits 5 9 8-30 RCL registro, contador 3 (no existe) 5 9 8-30 RCL memoria, contador 3-6 (no existe) 8 # 10 9-31 RCL memoria,1 2-4 15(23)+EA 7 # 10 4 RCL memoria,CL 2-4 20(28)+EA+4*bits 8 # 10 9-31 RCR registro,1 2 2 2 9 3 RCR registro,CL 2 8+4*bits 5 9 8-30 RCR registro, contador 3 (no existe) 5 9 8-30 RCR memoria, contador 3-6 (no existe) 8 # 10 9-31 RCR memoria,1 2-4 15(23)+EA 7 # 10 4 RCR memoria,CL 2-4 20(28)+EA+4*bits 8 # 10 9-31 REP 1 2 0 0 0 REPE 1 2 0 0 0 REPNE 1 2 0 0 0 REPZ 1 2 0 0 0 REPNZ 1 2 0 0 0 RET intrasegmento 1 20 11+m 10+m 5 RET intrasegmento con SP+inmediato 3 24 11+m 10+m 5 RET intersegmento 1 32 15+m 18+m 13 RET intersegmento con SP+inmediato 3 31 15+m 18+m 14 ROL registro,1 2 2 2 3 3 ROL registro,CL 2 8+4*bits 5 3 3 ROL registro, contador 3 (no existe) 5 3 2 ROL memoria, contador 3-6 (no existe) 8 # 7 4 ROL memoria,1 2-4 15(23)+EA 7 # 7 4 ROL memoria,CL 2-4 20(28)+EA+4*bits 8 # 7 4 ROR registro,1 2 2 2 3 3 ROR registro,CL 2 8+4*bits 5 3 3 ROR registro, contador 3 (no existe) 5 3 2 ROR memoria, contador 3-6 (no existe) 8 # 7 4 ROR memoria,1 2-4 15(23)+EA 7 # 7 4 ROR memoria,CL 2-4 20(28)+EA+4*bits 8 # 7 4 SAHF 1 4 2 3 2 SAL registro,1 2 2 2 3 3 SAL registro,CL 2 8+4*bits 5 3 3 SAL registro, contador 3 (no existe) 5 3 2 SAL memoria, contador 3-6 (no existe) 8 # 7 4 SAL memoria,1 2-4 15(23)+EA 7 # 7 4 SAL memoria,CL 2-4 20(28)+EA+4*bits 8 # 7 4 SAR registro,1 2 2 2 3 3 SAR registro,CL 2 8+4*bits 5 3 3 SAR registro, contador 3 (no existe) 5 3 2 SAR memoria, contador 3-6 (no existe) 8 # 7 4 SAR memoria,1 2-4 15(23)+EA 7 # 7 4 SAR memoria,CL 2-4 20(28)+EA+4*bits 8 # 7 4 SBB registro, registro 2 3 2 2 1 SBB registro, memoria 2-4 9(13)+EA 7 # 6 2 SBB memoria, registro 2-4 16(24)+EA 7 # 7 3 SBB registro, inmediato 3-4 4 3 2 1 SBB memoria, inmediato 3-6 17(25)+EA 7 # 7 3 SBB acumulador, inmediato 2-3 4 3 2 1 SCAS 1 15(19) 7 7 6 SCAS (REP) 1 9+15(19)*n 5+8*n 5+8*n 5 (CX=0) 7+5*n SETcc registro8 2 (no existe) (no existe) 4 4 SETcc memoria8 4-6 (no existe) (no existe) 5 3 SHL registro,1 2 2 2 3 3 SHL registro,CL 2 8+4*bits 5 3 3 SHL registro, contador 3 (no existe) 5 3 2 SHL memoria, contador 3-6 (no existe) 8 # 7 4 SHL memoria,1 2-4 15(23)+EA 7 # 7 4 SHL memoria,CL 2-4 20(28)+EA+4*bits 8 # 7 4 SHLD registro16, registro16, inmediato8 4 (no existe) (no existe) 3 2 SHLD memoria16, registro16, inmediato8 6-8 (no existe) (no existe) 7 3 SHLD registro32, registro32, inmediato8 4 (no existe) (no existe) 3 2 SHLD memoria32, registro32, inmediato8 6-8 (no existe) (no existe) 7 3 SHLD registro16, registro16, CL 3 (no existe) (no existe) 3 2 SHLD memoria16, registro16, CL 5-7 (no existe) (no existe) 7 3 SHLD registro32, registro32, CL 3 (no existe) (no existe) 3 2 SHLD memoria32, registro32, CL 5-7 (no existe) (no existe) 7 3 SHR registro,1 2 2 2 3 3 SHR registro,CL 2 8+4*bits 5 3 3 SHR registro, contador 3 (no existe) 5 3 2 SHR memoria, contador 3-6 (no existe) 8 # 7 4 SHR memoria,1 2-4 15(23)+EA 7 # 7 4 SHR memoria,CL 2-4 20(28)+EA+4*bits 8 # 7 4 SHRD registro16, registro16, inmediato8 4 (no existe) (no existe) 3 2 SHRD memoria16, registro16, inmediato8 6-8 (no existe) (no existe) 7 3 SHRD registro32, registro32, inmediato8 4 (no existe) (no existe) 3 2 SHRD memoria32, registro32, inmediato8 6-8 (no existe) (no existe) 7 3 SHRD registro16, registro16, CL 3 (no existe) (no existe) 3 2 SHRD memoria16, registro16, CL 5-7 (no existe) (no existe) 7 3 SHRD registro32, registro32, CL 3 (no existe) (no existe) 3 2 SHRD memoria32, registro32, CL 5-7 (no existe) (no existe) 7 3 STC 1 2 2 2 2 STD 1 2 2 2 2 STI 1 2 2 3 5 STOS 1 11(15) 3 4 5 STOS (REP) 1 9+10(14)*n 4+3*n 5+5*n 5 (CX=0) 7+4*n SUB registro, registro 2 3 2 2 1 SUB registro, memoria 2-4 9(13)+EA 7 # 6 2 SUB memoria, registro 2-4 16(24)+EA 7 # 7 3 SUB registro, inmediato 3-4 4 3 2 1 SUB memoria, inmediato 3-6 17(25)+EA 7 # 7 3 SUB acumulador, inmediato 2-3 4 3 2 1 TEST registro, registro 2 3 2 2 1 TEST registro, memoria 2-4 9(13)+EA 6 # 5 2 TEST memoria, registro 2-4 16(24)+EA 6 # 5 2 TEST registro, inmediato 3-4 4 3 2 1 TEST memoria, inmediato 3-6 17(25)+EA 6 # 5 2 TEST acumulador, inmediato 2-3 4 3 2 1 WAIT 1 3 3 6 1-3 XCHG AX,registro16 1 3 3 3 3 XCHG registro, registro 2 4 3 3 3 XCHG memoria, registro 2-4 17(25)+EA 5 # 5 5 XLAT 1 11 5 5 4 XOR registro, registro 2 3 2 2 1 XOR registro, memoria 2-4 9(13)+EA 7 # 6 2 XOR memoria, registro 2-4 16(24)+EA 7 # 7 3 XOR registro, inmediato 3-4 4 3 2 1 XOR memoria, inmediato 3-6 17(25)+EA 7 # 7 3 XOR acumulador, inmediato 2-3 4 3 2 110. Lenguaje mquina, macroensamblador del 8088Todo procesador, grande o pequeo, desde el de una calculadora hasta el de un supercomputador, ya sea de propsito general o especfico, posee un lenguaje nico que es capaz de reconocer y ejecutar. Por razones que resultan obvias, este lenguaje ha sido denominado Lenguaje de Mquina y ms que ser propio de un computador pertenece a su microprocesador. El lenguaje de mquina est compuesto por una serie de instrucciones, que son las nicas que pueden ser reconocidas y ejecutadas por el microprocesador. Este lenguaje es un conjunto de nmeros que representan las operaciones que realiza el microprocesador a travs de su circuitera interna. Estas instrucciones, por decirlo as, estn grabadas o "alambradas" en el hardware y no pueden ser cambiadas. El nivel ms bajo al que podemos aspirar a llegar en el control de un microprocesador es precisamente el del lenguaje de mquina.Obviamente, el lenguaje de mquina de un microprocesador no puede ser ejecutado por otro microprocesador de arquitectura distinta, a menos que haya cierto tipo de compatibilidad prevista. El lenguaje mquina por defecto es Assembler.

11. Debugger y simuladores del 8088DEBUG.EXE (o DEBUG.COM) es un programa DOS, que permite que programas de 16 bits corran una instruccin a tiempo con pausas para una observacin a los registros y a la memoria. Puedes correrlo de la lnea de comandos MSDOS como:DEBUG name.EXE, donde name es el nombre de tu archivo ejecutable.EMU8086 v4.05 (Simulador): Este programa es sumamente til para aquellos que quieran aprender lenguaje ensamblador (Assembler), ya que incorpora un editor avanzado, un ensamblador, una PC virtual y tutoriales paso a paso. De esta manera, es posible ejecutar cdigo fuente sobre un emulador 8086, siendo el cdigo de mquina totalmente compatible con las generaciones siguientes de microprocesadores Intel.Los Intel 8086 e Intel 8088 (i8086, llamado oficialmente iAPX 86, e i8088) son dos microprocesadores de 16 bits diseados por Intel en 1978, iniciadores de la arquitectura x86. La diferencia entre el i8086 y el i8088 es que este ltimo utiliza un bus externo de 8 bits, para poder emplear circuitos de soporte al microprocesador ms econmicos, en contraposicin al bus de 16 bits del i8086.