Documentos de Académico
Documentos de Profesional
Documentos de Cultura
GT:01
PUSH fte Pone el valor en el tope del stack. Operacin: SP SP - 2, [SP+1:SP] fte donde fte = {reg16|mem16|CS|DS| ES|SS}. POP dest Retira el valor del tope del stack ponindolo en el lugar indicado. Operacin: dest [SP+1:SP], SP SP + 2 donde dest = {reg16|mem16|DS| ES|SS}. XCHG reg,{reg|mem} Intercambia ambos valores. IN {AL|AX},{DX|inmed (1 byte)} Pone en el acumulador el valor hallado en el port indicado. OUT {DX|inmed (1 byte)},{AL|AX} Pone en el port indicado el valor del acumulador. XLAT Realiza una operacin de traduccin de un cdigo de un byte a otro cdigo de un byte mediante una tabla. Operacin: AL [BX+AL] LEA reg,mem Almacena la direccin efectiva del operando de memoria en un registro. Operacin: reg direccin mem LDS reg,mem32 Operacin: reg [mem], DS [mem+2] LES reg,mem32 Operacin: reg [mem], ES [mem+2] LAHF Copia en el registro AH la imagen de los ocho bits menos significativos del registro de indicadores. Operacin: AH SF:ZF:X:AF:X:PF:X:CF SAHF Almacena en los ocho bits menos significativos del registro de indicadores el valor del registro AH. Operacin: SF:ZF:X:AF:X:PF:X:CF AH
2 Microprocesadores C0112. GT:01 PUSHF Almacena las banderas en la pila. Operacin: SP SP - 2, [SP+1:SP] banderas. POPF Pone en las banderas el valor que hay en la pila. Operacin: banderas [SP+1:SP], SP SP + 2 INSTRUCCIONES ARITMETICAS (Afectan las banderas AF, CF, OF, PF, SF, ZF) ADD dest,fte Operacin: dest dest + fte. ADC dest,fte Operacin: dest dest + fte + CF. SUB dest,fte Operacin: dest dest - fte. SBB dest,fte Operacin: dest dest - fte - CF. CMP dest,fte Operacin: dest - fte (slo afecta banderas). INC dest Operacin: dest dest + 1 (no afecta CF). DEC dest Operacin: dest dest - 1 (no afecta CF). NEG dest Operacin: dest - dest. Donde dest = {reg|mem} y fte = {reg|mem|inmed} no pudiendo ambos operandos estar en memoria. DAA Corrige el resultado de una suma de dos valores BCD empaquetados en el registro AL (debe estar inmediatamente despus de una instruccin ADD o ADC). OF es indefinido despus de la operacin. DAS Igual que DAA pero para resta (debe estar inmediatamente despus de una instruccin SUB o SBB). AAA Lo mismo que DAA para nmeros BCD desempaquetados. AAS Lo mismo que DAS para nmeros BCD desempaquetados. AAD Convierte AH:AL en BCD desempaquetado a AL en binario. Operacin: AL AH * 0Ah + AL, AH 0. Afecta PF, SF, ZF, mientras que AF, CF y OF quedan indefinidos. AAM Convierte AL en binario a AH:AL en BCD desempaquetado. Operacin: AH AL / 0Ah, AL AL mod 0Ah. Afecta PF, SF, ZF, mientras que AF, CF y OF quedan indefinidos.
MUL {reg8|mem8} Realiza una multiplicacin con operandos no signados de 8 por 8 bits. Operacin: AX AL * {reg8|mem8}. CF=OF=0 si AH = 0, CF=OF=1 en caso contrario. AF, PF, SF, ZF quedan indefinidos. MUL {reg16|mem16} Realiza una multiplicacin con operandos no signados de 16 por 16 bits. Operacin: DX:AX AX * {reg16|mem16}. CF=OF=0 si DX = 0, CF=OF=1 en caso contrario. AF, PF, SF, ZF quedan indefinidos. IMUL {reg8|mem8} Realiza una multiplicacin con operandos con signo de 8 por 8 bits. Operacin: AX AL * {reg8|mem8} realizando la multiplicacin con signo. CF = OF = 0 si el resultado entra en un byte, en caso contrario valdrn 1. AF, PF, SF, ZF quedan indefinidos. IMUL {reg16|mem16} Realiza una multiplicacin con operandos con signo de 16 por 16 bits. Operacin: DX:AX AX * {reg16|mem16} realizando la multiplicacin con signo. CF = OF = 0 si el resultado entra en dos bytes, en caso contrario valdrn 1. AF, PF, SF, ZF quedan indefinidos. DIV {reg8|mem8} Realiza una divisin sin considerar el signo entre AX y un operando de 8 bits. Operacin: el cociente se guarda en AL y el residuo en AH, dependiendo del resultado se pueden activar las siguientes banderas CF,OF,AF, PF, SF, ZF. {reg16|mem16} Realiza una divisin sin considerar el signo entre DX: AX y un operando de 16 bits. Operacin: el cociente se guarda en AX y el residuo en DX, dependiendo del resultado se pueden activar las siguientes banderas CF,OF,AF, PF, SF, ZF
DIV
IDIV {reg8|mem8} Realiza una divisin considerando el signo entre AX y un operando de 8 bits. Operacin: el cociente se guarda en AL y el residuo en AH, dependiendo del resultado se pueden activar las siguientes banderas CF,OF,AF, PF, SF, ZF. IDIV {reg16|mem16} Realiza una divisin considerando el signo entre DX: AX y un operando de 16 bits. Operacin: el cociente se guarda en AX y el residuo en DX, dependiendo del resultado se pueden activar las siguientes banderas CF,OF,AF, PF, SF, ZF TANTO PARA DIV COMO PARA IDIV CUANDO EL COCIENTE ES MAYOR QUE EL RESULTADO MAXIMO QUE PUEDE ALMACENAR, COCIENTE Y RESIDUO QUEDAN INDEFINIDOS PRODUCIENDOSE UNA INTERRUPCION 0, LO QUE TAMBIEN SUCEDE SI EL DIVISOR ES CERO.
CBW Extiende el signo de AL en AX. No se afectan las banderas. CWD Extiende el signo de AX en DX:AX. No se afectan banderas INSTRUCCIONES LOGICAS (Afectan AF, CF, OF, PF, SF, ZF) AND dest,fte Operacin: dest dest and fte. TEST dest,fte Operacin: dest and fte. Slo afecta banderas. OR dest,fte Operacin: dest dest or fte. XOR dest,fte Operacin: dest dest xor fte. Las cuatro instrucciones anteriores ponen CF = OF = 0, AF queda indefinido y PF, SF y ZF dependen del resultado. NOT dest Operacin: dest Complemento a 1 de dest. No afecta las banderas. Donde dest = {reg|mem} y fte = {reg|mem|inmed} no pudiendo ambos operandos estar en memoria. SHL/SAL dest,{1|CL} Realiza un desplazamiento lgico o aritmtico a la izquierda.
En las siete instrucciones anteriores la cantidad de veces que se rota o desplaza puede ser un bit o la cantidad de bits indicado en CL, dest puede ser registro o memoria. INSTRUCCIONES DE MANIPULACION DE CADENAS: MOVSB Copiar un byte de la cadena fuente al destino. Operacin: 1. 2. 3. ES:[DI] DS:[SI] (un byte) DI DI1 SI SI1
MOVSW Copiar dos bytes de la cadena fuente al destino. Operacin: 1. 2. 3. ES:[DI] DS:[SI] (dos bytes) DI DI2 SI SI2
LODSB Poner en el acumulador un byte de la cadena fuente. Operacin: 1. 2. AL DS:[SI] (un byte) SI SI1
6 Microprocesadores C0112. GT:01 LODSW Poner en el acumulador dos bytes de la cadena fuente. Operacin: 1. 2. AX DS:[SI] (dos bytes) SI SI2
STOSB Almacenar en la cadena destino un byte del acumulador. Operacin: 1. 2. ES:[DI] AL (un byte) DI DI1
STOSW Almacenar en la cadena destino dos bytes del acumulador. Operacin: 1. 2. ES:[DI] AX (dos bytes) DI DI2
CMPSB Comparar un byte de la cadena fuente con el destino. Operacin: 1. 2. 3. DS:[SI] - ES:[DI] (Un byte, afecta slo las banderas) DI DI1 SI SI1
CMPSW Comparar dos bytes de la cadena fuente con el destino. Operacin: 1. 2. 3. DS:[SI] - ES:[DI] (Dos bytes, afecta slo las banderas) DI DI2 SI SI2
SCASB Comparar un byte del acumulador con la cadena destino. Operacin: 1. 2. AL - ES:[DI] (Un byte, afecta slo las banderas) DI DI1
SCASW Comparar dos bytes del acumulador con la cadena destino. Operacin: 1. 2. AX - ES:[DI] (Dos byte, afecta slo las banderas) DI DI2
Nota: Para todos las instrucciones de manipulacin de cadenas, el signo (+) se toma si el indicador DF vale cero. Si vale 1 hay que tomar el signo (-). Prefijo para las instrucciones MOVSB, MOVSW, LODSB, LODSW, STOSB y STOSW:
REPZ/REPE: Repetir mientras que sean iguales hasta un mximo de CX veces. REPNZ/REPNE: Repetir mientras que sean diferentes hasta un mximo de CX veces.
INSTRUCCIONES DE TRANSFERENCIA DE CONTROL (No afectan las banderas): JMP etiqueta Saltar hacia la direccin etiqueta. CALL etiqueta Ir al procedimiento cuyo inicio es etiqueta. Para llamadas dentro del mismo segmento equivale a PUSH IP: JMP etiqueta, mientras que para llamadas entre segmentos equivale a PUSH CS: PUSH IP: JMP etiqueta. RET Retorno de procedimiento. RET inmed Retorno de procedimiento y SP SP + inmed. Variaciones de la instruccin de retorno: RETN [inmed] En el mismo segmento de cdigo. Equivale a POP IP [:SP SP + inmed]. RETF [inmed] En otro segmento de cdigo. Equivale a POP IP: POP CS [:SP SP + inmed] Saltos condicionales aritmticos (usar despus de CMP):
Aritmtica signada (con nmeros positivos, negativos y cero) JL etiqueta/JNGE etiqueta Saltar a etiqueta si es menor. JLE etiqueta/JNG etiqueta Saltar a etiqueta si es menor o igual. JE etiqueta Saltar a etiqueta si es igual. JNE etiqueta Saltar a etiqueta si es distinto. JGE etiqueta/JNL etiqueta Saltar a etiqueta si es mayor o igual. JG etiqueta/JNLE etiqueta Saltar a etiqueta si es mayor.
JB etiqueta/JNAE etiqueta Saltar a etiqueta si es menor. JBE etiqueta/JNA etiqueta Saltar a etiqueta si es menor o igual. JE etiqueta Saltar a etiqueta si es igual. JNE etiqueta Saltar a etiqueta si es distinto. JAE etiqueta/JNB etiqueta Saltar a etiqueta si es mayor o igual. JA etiqueta/JNBE etiqueta Saltar a etiqueta si es mayor. Saltos condicionales segn el valor de los indicadores: JC etiqueta Saltar si hubo arrastre/prstamo (CF = 1). JNC etiqueta Saltar si no hubo arrastre/prstamo (CF = 0). JZ etiqueta Saltar si el resultado es cero (ZF = 1). JNZ etiqueta Saltar si el resultado no es cero (ZF = 0). JS etiqueta Saltar si el signo es negativo (SF = 1). JNS etiqueta Saltar si el signo es positivo (SF = 0). JP/JPE etiqueta Saltar si la paridad es par (PF = 1). JNP/JPO etiqueta Saltar si la paridad es impar (PF = 0). Saltos condicionales que usan el registro CX como contador: LOOP etiqueta Operacin: CX CX-1. Saltar a etiqueta si CX<>0. LOOPZ/LOOPE etiqueta Operacin: CX CX-1. Saltar a etiqueta si CX <> 0 y ZF = 1. LOOPNZ/LOOPNE etiqueta Operacin: CX CX-1. Saltar a etiqueta si CX <> 0 y ZF = 0. JCXZ etiqueta Operacin: Salta a etiqueta si CX = 0. Interrupciones: INT nmero Salva las banderas en la pila, hace TF=IF=0 y ejecuta la interrupcin con el nmero indicado. INTO Interrupcin condicional. Si OF = 1, hace INT 4. IRET Retorno de interrupcin. Restaura los indicadores del stack.
http://www.alpertron.com.ar/INST8088.HTM