instrucciones del programa

Upload: ness0788

Post on 30-May-2018

227 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/9/2019 Instrucciones Del Programa

    1/35

    Instrucciones Del Programa

    Equipo 7Equipo 7

    Villanueva Martnez Yesenia NallelyVillanueva Martnez Yesenia Nallely

    Olvera Hernndez MaribelOlvera Hernndez MaribelAcevedo Chvez Jos ErnestoAcevedo Chvez Jos Ernestovila Puente Tomas Eduardovila Puente Tomas Eduardo

    Ortiz Alvarado Francisco JavierOrtiz Alvarado Francisco Javier

    Romero lvarez AntonioRomero lvarez Antonio

  • 8/9/2019 Instrucciones Del Programa

    2/35

    Instrucciones de transferencia Son utilizadas paramover los contenidos de los operandos. Cadainstruccin se puede usar con diferentes modos dedireccionamiento.

    MOVMOVS (MOVSB) (MOVSW) Instrucciones de carga Son instrucciones especficas de

    los registros. Son usadas para cargar en algo en registrobytes o cadenas de bytes.

    LODS (LODSB) (LODSW)LAHFLDSLEALES

    Instrucciones de la pila Estas instrucciones permiten eluso de la pila para almacenar y extraer datos.POPPOPFPUSHPUSHF

  • 8/9/2019 Instrucciones Del Programa

    3/35

    Instruccin MOV

    Propsito: Transferencia de datos entre celdas de memoria, registrosy acumulador.

    Sintaxis:MOV Destino,Fuente

    Donde Destino es el lugar a donde se movern los datos y fuente esel lugar donde se encuentran dichos datos.

    Los diferentes movimientos de datos permitidos para estainstruccin son:

    Destino: memoria. Fuente: acumulador Destino: acumulador. Fuente: memoria Destino: registro de segmento. Fuente: memoria/registro Destino: memoria/registro. Fuente: registro de segmento Destino: registro. Fuente: registro Destino: registro. Fuente: memoria Destino: memoria. Fuente: registro Destino: registro. Fuente: dato inmediato Destino: memoria. Fuente: dato inmediato

  • 8/9/2019 Instrucciones Del Programa

    4/35

    Ejemplo:

    MOV AX,0006hMOV BX,AXMOV AX,4C00hINT 21H

    Este pequeo programa mueve el valor 0006Hal registro AX, luego mueve el contenido deAX (0006h) al registro BX, por ltimo mueve

    el valor 4C00h al registro AX para terminar laejecucin con la opcin 4C de la interrupcin21h.

  • 8/9/2019 Instrucciones Del Programa

    5/35

    Instruccin MOVS (MOVSB) (MOVSW)

    Propsito: Mover cadenas de bytes o palabras desde la fuente,direccionada por SI, hasta el destino direccionado por DI.

    Sintaxis:MOVS

    Este comando no necesita parametros ya que toma como direccinfuente el contenido del registro SI y como destino el contenido

    de DI. La secuencia de instrucciones siguiente ilustran esto:

    MOV SI, OFFSET VAR1MOV DI, OFFSET VAR2MOVS

    Primero inicializamos los valores de SI y DI con las direcciones delas variables VAR1 y VAR2 respectivamente, despues al ejecutarMOVS se copia el contenido de VAR1 a VAR2.

    Los comandos MOVSB y MOVSW se utilizan de la misma forma queMOVS, el primero mueve un byte y el segundo una palabra.

  • 8/9/2019 Instrucciones Del Programa

    6/35

    Instruccin LODS (LODSB) (LODSW)

    Propsito: Cargar cadenas de un byte o palabra al acumulador.

    Sintaxis:LODS

    Esta instruccin toma la cadena que se encuentre en la direccinespecificada por SI, la carga al registro AL (o AX) y suma o resta

    1 (segn el estado de DF) a SI si la transferencia es de bytes o 2si la transferencia es de palabras.

    MOV SI, OFFSET VAR1LODS

    La primer linea carga la direccin de VAR1 en SI y la segunda lnealleva el contenido de esa localidad al registro AL.

    Los comandos LODSB y LODSW se utilizan de la misma forma, elprimero carga un byte y el segundo una palabra (utiliza elregistro completo AX).

  • 8/9/2019 Instrucciones Del Programa

    7/35

    Instruccin LAHF

    Propsito: Transfiere al registro AH el contenido de las

    banderasSintaxis:LAHF

    Esta instruccin es til para verificar el estado de lasbanderas durante la ejecucin de nuestro programa.

    Las banderas quedan en el siguiente orden dentro delregistro:

    SF ZF ? AF ? PF ? CF

    El smbolo "?" significa que en esos bits habr. un valorindefinido.

  • 8/9/2019 Instrucciones Del Programa

    8/35

    Instruccin LDS

    Propsito: Cargar el registro del segmento de datos

    Sintaxis:LDS destino, fuente

    El operando fuente debe ser una palabra doble enmemoria. La palabra asociada con la direccinmas grande es transferida a DS, o sea que setoma como la direccin del segmento. La palabra

    asociada con la direccin menor es la direccindel desplazamiento y se deposita en el registrosealado como destino.

  • 8/9/2019 Instrucciones Del Programa

    9/35

    Instruccin LEA

    Propsito: Carga la direccin del operando fuente.

    Sintaxis:LEA destino, fuente

    El operando fuente debe estar ubicado en memoria, y se colocasu desplazamiento en el registro ndice o apuntador

    especificado en destino.

    Para ilustrar una de las facilidades que tenemos con estecomando pongamos una equivalencia:

    MOV SI, OFFSET VAR1

    Equivale a:LEA SI, VAR1

    Es muy probable que para el programador sea mas sencillo crearprogramas extensos utilizando este ltimo formato.

  • 8/9/2019 Instrucciones Del Programa

    10/35

    Instruccin LES

    Propsito: Carga el registro del segmento extraSintaxis:LES destino, fuente

    El operando fuente debe ser un operando enmemoria de palabra doble. El contenido de lapalabra con la direccin mayor se interpretacomo la direccin del segmento y se coloca en

    ES. La palabra con la direccin menor es ladireccin del desplazamiento y se coloca en elregistro especificado en el parmetro destino

  • 8/9/2019 Instrucciones Del Programa

    11/35

    Instruccin POP

    Propsito: Recupera un dato de la pila

    Sintaxis:POP destino

    Esta instruccin transfiere el ltimo valor almacenado

    en la pila al operando destino, despus incrementaen dos el registro SP.

    Este incremento se debe a que la pila va creciendodesde la direccin mas alta de memoria delsegmento hacia la mas baja, y la pila solo trabajacon palabras (2 bytes), entonces al incrementar endos el registro SP realmente se le esta restando dosal tamao real de la pila.

  • 8/9/2019 Instrucciones Del Programa

    12/35

    Instruccin POPF

    Propsito: Extrae las banderas almacenadas en la pila.

    Sintaxis:POPF

    Este comando transfiere bits de la palabra almacenada en la parte superiorde la pila hacia el registro de banderas.

    La forma de transferencia es la siguiente:BIT BANDERA

    0 CF2 PF4 AF6 ZF7 SF8 TF

    9 IF10 DF11 OF

    Estas localizaciones son las mismas para el comando PUSHFUna vez hecha la transferencia se incrementa en 2 el registro SP

    disminuyendo as el tamao de la pila.

  • 8/9/2019 Instrucciones Del Programa

    13/35

    Instruccin PUSH

    Propsito: Coloca una palabra en la pila.

    Sintaxis:PUSH fuente

    La instruccin PUSH decrementa en dos el valor de SP yluego transfiere el contenido del operando fuente a lanueva direccin resultante en el registro recinmodificado.

    El decremento en la direccin se debe a que al agregarvalores a la pila sta crece de la direccin mayor a ladireccin menor del segmento, por lo tanto al restarle 2al valor del registro SP lo que hacemos es aumentar eltamao de la pila en dos bytes, que es la nica cantidadde informacin que puede manejar la pila en cadaentrada y salida de datos.

  • 8/9/2019 Instrucciones Del Programa

    14/35

    Instruccin PUSHF

    Propsito: Coloca el valor de las banderas en la pila

    Sintaxis:PUSHF

    Este comando decrementa en 2 el valor del registro SP yluego se transfiere el contenido del registro de banderasa la pila, en la direccin indicada por SP.

    Las banderas quedan almacenadas en memoria en losmismos bits indicados en el comando POPF

  • 8/9/2019 Instrucciones Del Programa

    15/35

    Instrucciones lgicas. Son utilizadas para realizar operacioneslgicas sobre los operandos.

    AND

    NEGNOTOR

    TESTXORInstrucciones aritmticas. Se usan para realizar operaciones

    aritmticas sobre los operandos.ADCADDDIVIDIV

    MULIMULSBBSUB

  • 8/9/2019 Instrucciones Del Programa

    16/35

    Instruccin AND

    Propsito: Realiza la conjuncin de los operandos bit porbit.

    Sintaxis:AND destino, fuente

    Con esta instruccin se lleva a cabo la operacin "y" lgica

    de los dos operandos:Fuente Destino | Destino

    --------------------------1 1 | 11 0 | 0

    0 1 | 00 0 | 0

    El resultado de la operacin se almacena en el operandodestino.

  • 8/9/2019 Instrucciones Del Programa

    17/35

    Instruccin NEGPropsito: Genera el complemento a 2

    Sintaxis:NEG destino

    Esta instruccin genera el complemento a 2 del operandodestino y lo almacena en este mismo operando. Porejemplo, si AX guarda el valor de 1234H, entonces:

    NEG AXNos dejara almacenado en el registro AX el valor EDCCH.

    Instruccin NOTPropsito: Lleva a cabo la negacin bit por bit del operando

    destino.

    Sintaxis:NOT destino

    El resultado se guarda en el mismo operando destino.

  • 8/9/2019 Instrucciones Del Programa

    18/35

    Instruccin ORPropsito: OR inclusivo lgicoSintaxis: OR destino, fuente

    La instruccin OR lleva a cabo, bit por bit, la disyuncin inclusiva lgicade los dos operandos:Fuente Destino | Destino

    --------------------------1 1 | 11 0 | 1

    0 1 | 10 0 | 0

    Instruccin TESTPropsito: Comparar lgicamente los operandosSintaxis: TEST destino, fuente

    Realiza una conjuncin, bit por bit, de los operandos, pero a diferenciade AND esta instruccin no coloca el resultado en el operandodestino, solo tiene efecto sobre el estado de las banderas.

  • 8/9/2019 Instrucciones Del Programa

    19/35

    Instruccin XORPropsito: OR exclusivoSintaxis: XOR destino, fuente

    Su funcin es efectuar bit por bit la disyuncin exclusiva lgica de losdos operandos.Fuente Destino | Destino

    --------------------------1 1 | 00 0 | 10 1 | 10 0 | 0

    Instruccin ADCPropsito: Adicin con acarreo.Sintaxis: ADC destino, fuente

    Lleva a cabo la suma de dos operandos y suma uno al resultado en casode que la bandera CF est activada, esto es, en caso de que existaacarreo. El resultado se guarda en el operando destino.

  • 8/9/2019 Instrucciones Del Programa

    20/35

    Instruccin ADDPropsito: Adicin de los operandos.Sintaxis: ADD destino, fuente

    Suma los dos operandos y guarda el resultado en el operando destino.

    Instruccin DIVPropsito: Divisin sin signoSintaxis: DIV fuenteEl divisor puede ser un byte o palabra y es el operando que se le da a la

    instruccin.

    Si el divisor es de 8 bits se toma como dividendo el registro de 16 bits AX y si eldivisor es de 16 bits se tomara como dividendo el registro par DX:AX, tomandocomo palabra alta DX y como baja AX.

    Si el divisor fue un byte el cociente se almacena en el registro AL y el residuo enAH, si fue una palabra el cociente se guarda en AX y el residuo en DX.

  • 8/9/2019 Instrucciones Del Programa

    21/35

    Instruccin IDIVPropsito: Divisin con signoSintaxis: IDIV fuente

    Consiste bsicamente en lo mismo que la instruccin DIV, solo que esta ltimarealiza la operacin con signo. Para sus resultados utiliza los mismos registrosque la instruccin DIV.

    Instruccin MULPropsito: Multiplicacin sin signoSintaxis:MUL fuente

    El ensamblador asume que el multiplicando ser del mismo tamao que el delmultiplicador, por lo tanto multiplica el valor almacenado en el registro que sele da como operando por el que se encuentre contenido en AH si elmultiplicador es de 8 bits o por AX si el multiplicador es de 16 bits.

    Cuando se realiza una multiplicacin con valores de 8 bits el resultado sealmacena en el registro AX y cuando la multiplicacin es con valores de 16 bits

    el resultado se almacena en el registro par DX:AX.

  • 8/9/2019 Instrucciones Del Programa

    22/35

    Instruccin IMULPropsito: Multiplicacin de dos enteros con signo.Sintaxis: IMUL fuente

    Este comando hace lo mismo que el anterior, solo que si toma en cuenta los signosde las cantidades que se multiplican.

    Los resultados se guardan en los mismos registros que en la instruccin MUL.

    Instruccin SBBPropsito: Substraccin con acarreoSintaxis: SBB destino, fuente

    Esta instruccin resta los operandos y resta uno al resultado si CF est activada. Eloperando fuente siempre se resta del destino.

    Este tipo de substraccin se utiliza cuando se trabaja con cantidades de 32 bits.

    Instruccin SUBPropsito: SubstraccinSintaxis: SUB destino, fuente

    Resta el operando fuente del destino.

  • 8/9/2019 Instrucciones Del Programa

    23/35

    Instrucciones de salto Son utilizadas para transferir el flujo delproceso al operando indicado.

    JMPJA (JNBE)

    JAE (JNBE)JB (JNAE)JBE (JNA)JE (JZ)JNE (JNZ)JG (JNLE)JGE (JNL)

    JL (JNGE)JLE (JNG)JCJNCJNOJNP (JPO)

    JNSJOJP (JPE)JS

  • 8/9/2019 Instrucciones Del Programa

    24/35

    Instrucciones para ciclos: LOOP Transfieren el flujo del proceso, condicional oincondicionalmente, a un destino repitindose esta accin hasta que el contador seacero.

    LOOPLOOPELOOPNE

    Instrucciones de conteo Se utilizan para decrementar o incrementar el contenido de loscontadores.

    DECINC

    Instrucciones de comparacin Son usadas para comparar operandos, afectan alcontenido de las banderas.

    CMPCMPS (CMPSB) (CMPSW)

    Instrucciones de banderas Afectan directamente al contenido de las banderas.CLCCLDCLICMC

    STCSTDSTI

  • 8/9/2019 Instrucciones Del Programa

    25/35

    Instruccin JMPPropsito: Salto incondicionalSintaxis:JMP destinoEsta instruccin se utiliza para desviar el flujo de un programa sin tomar

    en cuenta las condiciones actuales de las banderas ni de los datos.

    Instruccin JA (JNBE)Propsito: Brinco condicionalSintaxis:JA EtiquetaDespus de una comparacin este comando salta si est arriba o salta si

    no est abajo o si no es igual.

    Esto significa que el salto se realiza solo si la bandera CF estadesactivada o si la bandera ZF esta desactivada (que alguna de lasdos sea igual a cero).

    Instruccin JAE (JNB)Propsito: salto condicionalSintaxis:JAE etiquetaSalta si est arriba o si es igual o salta si no est abajo.El salto se efecta si CF esta desactivada.

  • 8/9/2019 Instrucciones Del Programa

    26/35

    Instruccin JB (JNAE)Propsito: salto condicionalSintaxis:JB etiquetaSalta si est abajo o salta si no est arriba o si no es igual.

    Se efecta el salto si CF esta activada.

    Instruccin JBE (JNA)Propsito: salto condicionalSintaxis:JBE etiquetaSalta si est abajo o si es igual o salta si no est arriba.

    El salto se efecta si CF est activado o si ZF est activado (quecualquiera sea igual a 1).

    Instruccin JE (JZ)Propsito: salto condicionalSintaxis:JE etiquetaSalta si es igual o salta si es cero.

    El salto se realiza si ZF est activada.

  • 8/9/2019 Instrucciones Del Programa

    27/35

    Instruccin JNE (JNZ)Propsito: salto condicionalSintaxis:JNE etiquetaSalta si no es igual o salta si no es cero.

    El salto se efecta si ZF est desactivada.

    Instruccin JG (JNLE)Propsito: salto condicional, se toma en cuenta el signo.Sintaxis:JG etiquetaSalta si es ms grande o salta si no es menor o igual.El salto ocurre si ZF = 0 u OF = SF.

    Instruccin JGE (JNL)Propsito: salto condicional, se toma en cuenta el signo.Sintaxis:JGE etiqueta

    Salta si es ms grande o igual o salta si no es menor que.El salto se realiza si SF = OF

  • 8/9/2019 Instrucciones Del Programa

    28/35

    Instruccin JL (JNGE)Propsito: salto condicional, se toma en cuenta el signo.Sintaxis:JL etiquetaSalta si es menor que o salta si no es mayor o igual.El salto se efecta si SF es diferente a OF.

    Instruccin JLE (JNG)Propsito: salto condicional, se toma en cuenta el signo.Sintaxis:JLE etiquetaSalta si es menor o igual o salta si no es ms grande.

    El salto se realiza si ZF = 1 o si SF es diferente a OF

    Instruccin JCPropsito: salto condicional, se toman en cuenta las banderas.Sintaxis:JC etiquetaSalta si hay acarreo.

    El salto se realiza si CF = 1

  • 8/9/2019 Instrucciones Del Programa

    29/35

    Instruccin JNCPropsito: salto condicional, se toma en cuenta el estado de las banderas.Sintaxis:JNC etiquetaSalta si no hay acarreo.El salto se efecta si CF = 0.

    Instruccin JNOPropsito: salto condicional, se toma en cuenta el estado de las banderas.Sintaxis:JNO etiquetaSalta si no hay desbordamiento.El salto se efectua si OF = 0.

    Instruccin JNP (JPO)Propsito: salto condicional, toma en cuenta el estado de las banderas.Sintaxis:JNP etiquetaSalta si no hay paridad o salta si la paridad es non.El salto ocurre si PF = 0.

  • 8/9/2019 Instrucciones Del Programa

    30/35

    Instruccin JNSPropsito: salto condicional, toma en cuenta el estado de las banderas.Sintaxis:JNP etiquetaSalta si el signo esta desactivado.El salto se efecta si SF = 0.

    Instruccin JOPropsito: salto condicional, toma en cuenta el estado de las banderas.Sintaxis:JO etiquetaSalta si hay desbordamiento (overflow).El salto se realiza si OF = 1.

    Instruccin JP (JPE)Propsito: salto condicional, toma en cuenta el estado de las banderas.Sintaxis:JP etiquetaSalta si hay paridad o salta si la paridad es par.El salto se efecta si PF = 1.

  • 8/9/2019 Instrucciones Del Programa

    31/35

    Instruccin JSPropsito: salto condicional, toma en cuenta el estado de las banderas.Sintaxis:JS etiquetaSalta si el signo est prendido.El salto se efecta si SF = 1.

    Instruccin LOOPPropsito: Generar un ciclo en el programa.Sintaxis: LOOP etiquetaLa instruccin loop decrementa CX en 1, y transfiere el flujo del programa a la

    etiqueta dada como operando si CX es diferente a 1.

    Instruccin LOOPEPropsito: Generar un ciclo en el programa considerando el estado de ZFSintaxis: LOOPE etiquetaEsta instruccin decrementa CX en 1. Si CX es diferente a cero y ZF es igual a 1,

    entonces el flujo del programa se transfiere a la etiqueta indicada comooperando.

  • 8/9/2019 Instrucciones Del Programa

    32/35

    Instruccin LOOPNEPropsito: Generar un ciclo en el programa, considerando el

    estado de ZFSintaxis: LOOPNE etiquetaEsta instruccin decrementa en uno a CX y transfiere el flujo del

    programa solo si ZF es diferente a 0.

    Instruccin DECPropsito: Decrementar el operando

    Sintaxis: DEC destinoEsta operacin resta 1 al operando destino y almacena el nuevovalor en el mismo operando.

    Instruccin INCPropsito: Incrementar el operando.

    Sintaxis: INC destinoLa instruccin suma 1 al operando destino y guarda el resultadoen el mismo operando destino.

  • 8/9/2019 Instrucciones Del Programa

    33/35

    Instruccin CMPPropsito: Comparar los operandos.Sintaxis: CMP destino, fuente

    Esta instruccin resta el operando fuente al operando destino pero sin que ste

    almacene el resultado de la operacin, solo se afecta el estado de lasbanderas.

    Instruccin CMPS (CMPSB) (CMPSW)Propsito: Comparar cadenas de un byte o palabra.Sintaxis: CMP destino, fuenteCon esta instruccin la cadena de caracteres fuente se resta de la cadena destino.

    Se utilizan DI como indice para el segmento extra de la cadena fuente y SI comoindice de la cadena destino.

    Solo se afecta el contenido de las banderas y tanto DI como SI se incrementan.

    Instruccin CLCPropsito: Limpiar bandera de acarreo.

    Sintaxis: CLCEsta instruccin apaga el bit correspondiente a la bandera de acarreo, o sea, lopone en cero.

    I i CLD

  • 8/9/2019 Instrucciones Del Programa

    34/35

    Instruccin CLDPropsito: Limpiar bandera de direccinSintaxis: CLD

    La instruccin CLD pone en cero el bit correspondiente a la bandera de direccin.

    Instruccin CLIPropsito: Limpiar bandera de interrupcinSintaxis: CLI

    CLI pone en cero la bandera de interrupciones, desabilitando as aquellasinterrupciones enmascarables.

    Una interrupcin enmascarable es aquella cuyas funciones son desactivadas

    cuando IF = 0.Instruccin CMC

    Propsito: Complementar la bandera de acarreo.Sintaxis: CMC

    Esta instruccin complementa el estado de la bandera CF, si CF = 0 la instruccinla iguala a 1, y si es 1 la instruccin la iguala a 0.

    Podemos decir que unicamente "invierte" el valor de la bandera.

  • 8/9/2019 Instrucciones Del Programa

    35/35

    Instruccin STCPropsito: Activar la bandera de acarreo.Sintaxis: STC

    Esta instruccin pone la bandera CF en 1.

    Instruccin STDPropsito: Activar la bandera de direccin.Sintaxis: STD

    La instruccin STD pone la bandera DF en 1.

    Instruccin STIPropsito: Acticar la bandera de interrupcin.Sintaxis: STI

    La instruccin activa la bandera IF, esto habilita las interrupcionesexternas enmascarables (las que funcionan unicamente cuando IF =1 ).