MOV Transferencia Mov Destino, Donde Destino es MOV de datos entre Fuente el lugar a donde se BX,AX celdas de moverán los datos memoria, y fuente es el lugar registros y donde se acumulador. encuentran dichos datos. XCHG Intercambia el XCHG Destino, Cambia el valor XCHG AX, contenido de Fuente que está guardado [BX] dos registros, o en la fuente, con el bien el valor del destino, y contenido de un viceversa registro y el de una posición de memoria. IN Leer Puerto IN Rd, P Carga un dato del IN AL, DX espacio de I/O, en el registro Rd en el archivo de registro. OUT Escribir Puerto OUT P, Rr Guarda un dato del OUT DX, registro Rr del AX archivo de registro en el espacio de I/O XLAT Traduce el XLAT tabla contenido de un byte a otro valor predefinido. Usa una tabla. LEA Transfiere el LEA destino, El operando fuete LEA dx, desplazamiento fuente. debe ser un [bx+si+20] del operando operando de fuente al memoria. El operando operando destino destino. es un registro, pero no un registro de segmento. LDS Cargan de una LDS Rd, k Cargan en el LDS si, [AX] sola vez el registro desplazamiento. especificado con reg la palabra contenida en la dirección dada por mem. LES Cargan de una LES destino, Cargan en el LES AX, sola vez el fuente registro [BP] segmento. especificado con reg la palabra contenida en la dirección dada por el registro de segmento indicado. LAHF Transfiere al LAHF Esta instrucción es registro AH el útil para verificar contenido de las el estado de las banderas banderas durante la ejecución de nuestro programa. SAHF Copia AH en SAHF Transfiere el los indicadores contenido de los bits 7, 6, 4, 2 y 0 a los indicadores SF, ZF, AF, PF y CF respectivamente. PUSH FUENTE Coloca una PUSH fuente. La instrucción palabra en la PUSH decrementa pila. en dos el valor de SP y luego transfiere el contenido del operando fuente a la nueva dirección resultante en el registro recién modificado. POP DESTINO Recupera un POP, destino Esta instrucción dato de la pila. transfiere el último valor almacenado en la pila al operando destino, después incrementa en dos el registro SP. CONTROL DE BUCLES (Instrucciones simples) INC Incrementar el INC destino La instrucción operando. suma 1 al operando destino y guarda el resultado en el mismo operando destino. DEC Decrementa el DEC destino Esta operación operando resta 1 al operando destino y almacena el nuevo valor en el mismo operando. LOOP Generar un ciclo LOOP etiqueta La instrucción loop en el programa. decrementa CX en 1, y transfiere el flujo del programa a la etiqueta dada como operando si CX es diferente a 1. LOOPZ, Generar un ciclo LOOPE Esta instrucción LOOPE en el programa, etiqueta decrementa CX en 1, si CX es considerando el diferente a cero y estado de ZF. ZF es igual a 1, entonces el flujo del programa se transfiere a la etiqueta indicada como operando. LOOPNZ, Generar un ciclo LOOPNE Esta instrucción LOOPNE en el programa, etiqueta decrementa en uno considerando el a CX y transfiere el estado de ZF. flujo del programa solo si ZF es diferente a 0. JCXZ Salto si CX=0. INSTRUCCIONES DE PRUEBA, COMPARACIÓN Y SALTO TEST Comparar TEST destino, Realiza una lógicamente los fuente. conjunción, bit por operandos. bit, de los operandos, pero a diferencia de AND esta instrucción no coloca el resultado en el operando destino, solo tiene efecto sobre el estado de las banderas. CMP Comparar CMP destino, Esta instrucción operandos. fuente resta el operando fuente al operando destino pero sin que este almacene el resultado de la operación, solo se afecta el estado de las banderas. JMP Salto JMP destino. Esta instrucción se incondicional. utiliza para desviar el flujo de un programa sin tomar en cuenta las co ndiciones actuales de las banderas ni de los datos. JE, JZ Salto JE etiqueta Salta si es igual o condicional salta si es cero. JNE, JNZ Salto JNE etiqueta Salta si no es igual condicional o salta si no es cero. JS Salto JS etiqueta Salta si el signo El salto se condicional, está prendido. efectúa si toma en cuenta SF=1. el estado de las banderas JNS Salto JNS etiqueta Salta si el signo El salto se condicional, esta desactivado. efectúa si toma en cuenta SF=0. el estado de las banderas JP, JPE Salto JP etiqueta Salta si hay paridad El salto se condicional, o salta si la paridad efectúa si toma en cuenta es par. PF= 1. el estado de las banderas. JNP, JOP Salto JNP etiqueta Salta si no hay El salto incondicional, paridad o salta si la ocurre si toma en cuenta paridad en non. PF=0. el estado de las banderas. JO Salto JO etiqueta Salta si hay El salto se condicional, desbordamiento. realiza si toma en cuenta OF=1. el estado de las banderas. JNO Salto JNO etiqueta Salta si no hay El salto se condicional, se desbordamiento. efectúa si toma en cuenta OF= 0. el estado de las banderas. JB, JNAE Salto JB etiqueta Salta si está abajo condicional. o salta si no está arriba o si no es igual. JNB, JAE Salto JAE etiqueta. Salta si está arriba condicional. o si es igual o salta si no está abajo. JBE, JNA Salto JBE etiqueta Salta si está abajo condicional o si es igual o salta si no está arriba. JNBE, JA Brinco JA Etiqueta Después de una condicional. comparación este comando salta si está arriba o salta si no está abajo o si no es igual. JL, JNGE Salto JL etiqueta Salta si es menor condicional, se que o salta si no es toma en cuenta mayor o igual. el signo. JNL, JGE Salto JGE etiqueta Salta si es más condicional, se grande o igual o toma en cuenta salta si no es el signo. menor que. JLE, JNG Salto JLE etiqueta Salta si es menor o condicional, se igual o salta si no es más grande. toma en cuenta el signo. JNLE, JG Salto JG etiqueta Salta si es más condicional, se grande o salta si no toma en cuenta es menor o igual. el signo. LLAMADO Y RETORNO DE SUBRUTINAS CALL Para llamar a un CALL nombre Para llamar a un procedimiento procedimiento. procedimiento y transferirle de este modo el control. RET Se retorna del RET (Retorno Se retorna del procedimiento de procedimiento procedimiento). mediante la instrucción RET INSTRUCCIONES ARITMETICAS ADICIÓN ADD Adición de los ADD destino, Suma los dos operandos. fuente operandos y guarda el resultado en el operando destino. ADC Adición con ADC destino, Lleva a cabo la acarreo. fuente. suma de dos operandos y suma uno al resultado en caso de que la bandera CF esté activada, esto es, en caso de que exista acarreo. AAA Ajuste ASCII AAA Convierte el para la suma contenido del registro AL en un número BCD no empaquetado. DAA Ajuste decimal DAA Convierte el para la suma contenido del registro AL en un par de valores BCD. SUSTRACCIÓN SUB Substracción. SUB destino, Resta el operando fuente fuente del destino. SBB Substracción SBB destino, Esta instrucción con acarreo. fuente resta los operandos y resta uno al resultado si CF está activada. El operando fuente siempre se resta del destino. AAS Ajuste ASCII AAS Convierte el para la resta resultado de la sustracción de dos operandos BCD no empaquetados para que siga siendo un número BCD no empaquetado. DAS Ajuste decimal DAS Corrige el para la resta resultado en AL de la resta de dos números BCD empaquetados, convirtiéndolo también en un valor BCD empaquetado. MULTIPLICACIÓN MUL Multiplicación MUL fuente El ensamblador sin signo. asume que el multiplicando será del mismo tamaño que el del multiplicador IMUL Multiplicación IMUL fuente Este comando hace de dos enteros lo mismo que el con signo. anterior, solo que si toma en cuenta los signos de las cantidades que se multiplican. AAM Ajuste ASCII AAM Corrige el para la resultado en AX multiplicación del producto de dos números BCD no empaquetados, convirtiéndolo en un valor BCD también no empaquetado. DIVISIÓN DIV División sin DIV fuente El divisor puede signo. ser un byte o palabra y es el operando que se le da a la instrucción. IDIV División con IDIV fuente Consiste signo. básicamente en lo mismo que la instrucción DIV, solo que esta última realiza la operación con signo. AAD Ajuste ASCII AAD Convierte dos para la división números BCD no empaquetados contenidos en AH y AL en un dividendo de un byte que queda almacenado en AL. CONVERSIONES CBW Conversión de CBW Copia el bit 7 del byte en palabra registro AL en todos los bits del registro AH. CWD Conversión de CWD Expande el signo palabra a doble del registro AX palabra. sobre el registro DX, copiando el bit más significativo de AH en todo DX. NEG Genera el NEG destino. Esta instrucción NEG AX complemento a genera el 2. complemento a 2 del operando destino y lo almacena en este mismo operando. TRATAMIENTO DE CADENAS MOVC Mover un byte MOVC A, @ A MOVC mueve MOVC de la memoria + < reg.-base > (copia) un byte de A,@A+PC. la memoria de código, al acumulador. MOVW Mover cadena. Palabras Transfiere un byte o una palabra de la cadena origen direccionada por DS: SI a la cadena destino direccionada por ES: DI, incrementando o decrementa a continuación los registros SI y el DI según el valor de DF. CMPC Comparar CMPC cadena Compara dos cadenas. destino, cadena cadenas restando al origen. origen el destino. CPMW Comparar Palabras. Compara dos cadenas. palabras para indicar el registro de segmento. SCAC Explorar Cadena destino Resta de AX o AL cadena. una cadena destino direccionada por el registro DI sobre el segmento extra. SCAW LODC Cargar cadena. Cadena origen. Copia en AL o AX una cadena de longitud byte o palabra direccionada sobre el segmento de datos(DS) con el registro SI LODW Cargar cadena. Palabras. Copia en AL o AX una cadena de longitud byte o palabra direccionada sobre el segmento de datos(DS) con el registro SI STOC Almacena Cadena destino. Transfiere el cadena. operando almacenado en X o AL, al destino direccionado por el registro DI sobre el segmento extra. STOW Almacena Palabras Transfiere el cadena operando almacenado en X o AL, al destino direccionado por el registro DI sobre el segmento extra. REP Repetir Repetir Estas instrucciones operación se pueden colocar cadena. como prefijo de otra instrucción de manejo de cadenas, con objeto de que la misma se repta un número determinado de veces incondicionalmente o hasta que se verifique alguna condición. CLD Limpiar bandera CLD La instrucción de dirección. CLD pone en cero el bit correspondiente a la bandera de dirección. STD Activar la STD La instrucción bandera de STD pone la dirección. bandera DF en 1. INSTRUCCIONES LÓGICAS NOT Lleva a cabo la NOT destino. negación bit por bit del operando destino. AND Realiza la AND destino, Con esta conjunción del fuente. instrucción se lleva operado bit por a cabo la operación bit. "y" lógica de los dos operandos. OR OR inclusivo OR destino, La instrucción OR lógico. fuente. lleva a cabo, bit por bit, la disyunción inclusiva lógica de los dos operandos. XOR OR exclusivo XOR destino, Su función es lógico. fuente. efectuar bit por bit la disyunción exclusiva lógica de los dos operandos. DESPLAZAMIENTO, ROTACIÓN Y ADEUDOS SHL, SAL desplazamiento Se desplazan a la a la izquierda izquierda los bits del operando destino tantas posiciones como indique el operando fuente. SHR Desplazamiento La instrucción shr a la derecha. funciona de la misma forma que shl, pero desplazando los bits a la derecha en lugar de a la izquierda. SAR Desplazamiento Esta instrucción aritmético a la desplaza los bits derecha. del operando destino a la derecha tantos bits como indique el operando fuente. ROL Rotación a la ROL destino, Rota a la izquierda izquierda contador los bits del operando destino el número de bits especificado en el segundo operando, que puede ser 1 ó CL previamente cargado con el valor del número de veces. ROR Rotación a la ROR destino, Rota a la derecha derecha contador los bits del operando destino el número de bits especificado en el segundo operando. Si el número de bits es 1 se puede poner directamente, en caso contrario debe ponerse a través de CL RCL Rotación a la RCL destino, Rotar a la izquierda izquierda con contador los bits del acarreo. operando destino junto con el indicador de acarreo CF el número de bits especificado en el segundo operando. RCR Rotación a la RCR destino, Rotar a la derecha derecha con contador los bits del acarreo operando destino junto con el indicador de acarreo CF el número de bits especificado en el segundo operando. CLC Limpiar bandera CLC Esta instrucción de acarreo. apaga el bit correspondiente a la bandera de acarreo, o sea, lo pone en cero. STC Activar la STC Esta instrucción bandera de pone la bandera CF acarreo. en 1. INSTRUCCIONES DE PILA PUSH Coloca una PUSH fuente. La instrucción palabra en la PUSH decrementa pila. en dos el valor de SP y luego transfiere el contenido del operando fuente a la nueva dirección resultante en el registro recién modificado. POP Recupera un POP destino. Esta instrucción dato de la pila. transfiere el último valor almacenado en la pila al operando destino, después incrementa en dos el registro SP. PUSHF Coloca el valor PUSHF Este comando de las banderas decrementa en 2 el en la pila. valor del registro SP y luego se transfiere el contenido del registro de banderas a la pila, en la dirección indicada por SP. POPF Extrae las POPF Este comando banderas transfiere bits de la almacenadas en palabra la pila. almacenada en la parte superior de la pila hacia el registro de banderas. INSTRUCCIONES DEL MICROPROCESADOR NOP No Operación NOP No realiza ninguna NOP operación. Generalmente se (PC)<= (PC) utiliza para obtener +1 demoras cortas, ya que en su ejecución se invierte un ciclo máquina. HTL Parada hasta HLT El procesador se interrupción o detiene hasta que reset se restaura el sistema o se recibe una interrupción. Como en los PC se producen normalmente 18,2 interrupciones de tipo 8 por segundo (del temporizador) algunos programadores utilizan HLT para hacer pausas y bucles de retardo. Sin embargo, el método no es preciso y puede fallar con ciertos controladores de memoria. WAIT Espera WAIT Provoca la espera del procesador hasta que se detecta una señal en la patilla TEST. LOOK Bloquea los LOCK Es una instrucción buses que se utiliza en aplicaciones de recursos compartidos para asegurar que no accede simultáneamente a la memoria más de un procesador. Cuando una instrucción va precedida por LOCK, el procesador bloquea inmediatamente el bus, introduciendo una señal por la patilla LOCK. ESC Salida a un ESC código Se utiliza en ESC 21,ax coprocesador operación, combinación con origen procesadores externos, tales como los coprocesadores de coma flotante o de E/S, y abre al dispositivo externo el acceso a las direcciones y operandos requeridos. Al mnemónico ESC le siguen los códigos de operación apropiados para el coprocesador así como la instrucción y la dirección del operando necesario. INSTRUCCIONES DE INTERRUPCIÓN STI Activar la STI La instrucción bandera de activa la bandera interrupción. IF, esto habilita las interrupciones externas enmascarables (las que funcionan únicamente cuando IF = 1). CLI Limpiar bandera CLI CLI pone en cero de interrupción la bandera de interrupciones, deshabilitando así aquellas interrupciones enmascarables. INT Ingresar una INT numero de Donde número de Interrupción. interrupción. interrupción es un número del 0 al 255. INTO Interrupción por INTO Genera una desbordamiento. interrupción de tipo 4 (INT 4) si existe desbordamiento (OF=1). De lo contrario se continúa con la instrucción siguiente. IRET Retorno de IRET Devuelve el interrupción control a la dirección de retorno salvada en la pila por una interrupción previa y restaura los indicadores que también se introdujeron en la pila. En total, se sacan las 3 palabras que fueron colocadas en la pila cuando se produjo la interrupción.