Instrucciones básicas de Ensamblador

Discussion in 'Programación & Programación Web' started by the_patox, Dec 16, 2010.

  1. the_patox

    the_patox Usuario Nuevo nvl. 1
    687/812

    Joined:
    May 31, 2010
    Messages:
    669
    Likes Received:
    1
    Electrónica e informática.

    Registros de la CPU:

    La CPU tiene 14 registros internos, cada uno de 16 bits. Los primeros cuatro, AX, BX, CX, y DX son registros de uso general y también pueden ser utilizados como registros de 8 bits, para utilizarlos como tales es necesario referirse a ellos como por ejemplo: AH y AL, que son los bytes alto (high) y bajo (low) del registro AX. Esta nomenclatura es aplicable también a los registros BX, CX y DX.

    Los registros son conocidos por sus nombres específicos:
    AX Acumulador
    BX Registro base
    CX Registro contador
    DX Registro de datos
    DS Registro del segmento de datos
    ES Registro del segmento extra
    SS Registro del segmento de pila
    CS Registro del segmento de código
    BP Registro de apuntadores base
    SI Registro índice fuente
    DI Registro índice destino
    SP Registro del apuntador de la pila
    IP Registro de apuntador de siguiente instrucción
    F Registro de banderas

    Instrucciones lógicas: Son utilizadas para realizar operaciones lógicas sobre los operandos.
    AND
    NEG
    NOT
    OR
    TEST
    XOR

    Instrucciones aritméticas: Se usan para realizar operaciones aritméticas sobre los operandos.
    ADC
    ADD
    DIV
    IDIV
    MUL
    IMUL
    SBB
    SUB

    Operaciones CALL y RET:
    La instrucción CALL transfiere el control a un procedimiento llamado, y la instrucción RET regresa del procedimiento llamado al procedimiento original que hizo la llamada. RET debe ser la ultima instrucción en un procedimiento llamado. Los formatos generales para CALL y RET son:
    (etiqueta) CALL (procedimiento)
    (etiqueta) RET (inmediato)
    El código objeto particular que CALL y RET generan depende de si la operación implica un procedimiento NEAR (cercano) o un procedimiento FAR (lejano).

    Instrucciones para ciclos:
    LOOP Transfieren el flujo del proceso, condicional o incondicionalmente, a un destino repitiéndose esta acción hasta que el contador sea cero.
    LOOP
    LOOPE
    LOOPNE

    Instrucciones de conteo: Se utilizan para decrementar o incrementar el contenido de los contadores.
    DEC
    INC

    Instrucciones de comparación: Son usadas para comparar operandos, afectan al contenido de las banderas.
    CMP
    CMPS (CMPSB) (CMPSW)

    Instrucciones de banderas: Afectan directamente al contenido de las banderas.
    CLC
    CLD
    CLI
    CMC
    STC
    STD
    STI

    Instrucciones de salto: Son utilizadas para transferir el flujo del proceso al operando indicado.
    JMP
    JA (JNBE)
    JAE (JNBE)
    JB (JNAE)
    JBE (JNA)
    JE (JZ)
    JNE (JNZ)
    JG (JNLE)
    JGE (JNL)
    JL (JNGE)
    JLE (JNG)
    JC
    JNC
    JNO
    JNP (JPO)
    JNS
    JO
    JP (JPE)
    JS

    Instrucción JMP
    Propósito: Salto incondicional
    Sintaxis: JMP destino
    Esta instrucción se utiliza para desviar el flujo de un programa sin tomar en cuenta las condiciones actuales de las banderas ni de los datos.

    Instrucción JA (JNBE)
    Propósito: Brinco condicional
    Sintaxis: JA Etiqueta
    Después de una comparación 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 esta desactivada o si la bandera ZF esta desactivada (que alguna de las dos sea igual a cero).

    Instrucción JAE (JNB)
    Propósito: salto condicional
    Sintaxis: JAE etiqueta
    Salta si está arriba o si es igual o salta si no está abajo. El salto se efectúa si CF esta desactivada.

    Instrucción JB (JNAE)
    Propósito: salto condicional
    Sintaxis: JB etiqueta
    Salta si está abajo o salta si no está arriba o si no es igual. Se efectúa el salto si CF esta activada.

    Instrucción JBE (JNA)
    Propósito: salto condicional
    Sintaxis: JBE etiqueta
    Salta si está abajo o si es igual o salta si no está arriba. El salto se efectúa si CF está activado o si ZF está activado (que cualquiera sea igual a 1).

    Instrucción JE (JZ)
    Propósito: salto condicional
    Sintaxis: JE etiqueta
    Salta si es igual o salta si es cero. El salto se realiza si ZF está activada.

    Instrucción JNE (JNZ)
    Propósito: salto condicional
    Sintaxis: JNE etiqueta
    Salta si no es igual o salta si no es cero. El salto se efectúa si ZF está desactivada.

    Instrucción JG (JNLE)
    Propósito: salto condicional, se toma en cuenta el signo.
    Sintaxis: JG etiqueta
    Salta si es más grande o salta si no es menor o igual. El salto ocurre si ZF = 0 u OF = SF.

    Instrucción JGE (JNL)
    Propósito: salto condicional, se toma en cuenta el signo.
    Sintaxis: JGE etiqueta
    Salta si es más grande o igual o salta si no es menor que. El salto se realiza si SF = OF

    Instrucción JL (JNGE)
    Propósito: salto condicional, se toma en cuenta el signo.
    Sintaxis: JL etiqueta
    Salta si es menor que o salta si no es mayor o igual. El salto se efectúa si SF es diferente a OF.

    Instrucción JLE (JNG)
    Propósito: salto condicional, se toma en cuenta el signo.
    Sintaxis: JLE etiqueta
    Salta si es menor o igual o salta si no es más grande. El salto se realiza si ZF = 1 o si SF es diferente a OF

    Instrucción JC
    Propósito: salto condicional, se toman en cuenta las banderas.
    Sintaxis: JC etiqueta
    Salta si hay acarreo. El salto se realiza si CF = 1

    Instrucción JNC
    Propósito: salto condicional, se toma en cuenta el estado de las banderas.
    Sintaxis: JNC etiqueta
    Salta si no hay acarreo. El salto se efectúa si CF = 0.

    Instrucción JNO
    Propósito: salto condicional, se toma en cuenta el estado de las banderas.
    Sintaxis: JNO etiqueta
    Salta si no hay desbordamiento. El salto se efectúa si OF = 0.

    Instrucción JNP (JPO)
    Propósito: salto condicional, toma en cuenta el estado de las banderas.
    Sintaxis: JNP etiqueta
    Salta si no hay paridad o salta si la paridad es non. El salto ocurre si PF = 0.

    Instrucción JNS
    Propósito: salto condicional, toma en cuenta el estado de las banderas.
    Sintaxis: JNP etiqueta
    Salta si el signo esta desactivado. El salto se efectúa si SF = 0.

    Instrucción JO
    Propósito: salto condicional, toma en cuenta el estado de las banderas.
    Sintaxis: JO etiqueta
    Salta si hay desbordamiento (overflow). El salto se realiza si OF = 1.

    Instrucción JP (JPE)
    Propósito: salto condicional, toma en cuenta el estado de las banderas.
    Sintaxis: JP etiqueta
    Salta si hay paridad o salta si la paridad es par. El salto se efectúa si PF = 1.

    Instrucción JS
    Propósito: salto condicional, toma en cuenta el estado de las banderas.
    Sintaxis: JS etiqueta
    Salta si el signo está prendido. El salto se efectúa si SF = 1.

    Instrucciones de transferencia: Son utilizadas para mover los contenidos de los operandos. Cada instrucción se puede usar con diferentes modos de direccionamiento.
    MOV
    MOVS (MOVSB) (MOVSW)

    Instrucciones de carga: Son instrucciones específicas de los registros. Son usadas para cargar en algo en registro bytes o cadenas de bytes.
    LODS (LODSB) (LODSW)
    LAHF
    LDS
    LEA
    LES

    Instrucciones de la pila: Estas instrucciones permiten el uso de la pila para almacenar y extraer datos.
    POP
    POPF
    PUSH
    PUSHF

    Espero que les sirva.
    Saludos.
     
  2. the kamikase

    the kamikase Usuario Maestro nvl. 6 ★ ★ ★ ★
    697/812

    Joined:
    Sep 19, 2008
    Messages:
    68,365
    Likes Received:
    42
    vale gracias !
     
  3. edwato

    edwato Usuario Nuevo nvl. 1
    17/41

    Joined:
    May 30, 2008
    Messages:
    852
    Likes Received:
    4
    ta bueno, pero si podes poner algunos ejemplos, seria mejor.
     
  4. BecKer

    BecKer Usuario Casual nvl. 2
    37/41

    Joined:
    Sep 27, 2009
    Messages:
    2,628
    Likes Received:
    2
    buenaaa , gracias wn
     
  5. AL2_

    AL2_ Usuario Habitual nvl.3 ★
    187/244

    Joined:
    Apr 25, 2009
    Messages:
    20,230
    Likes Received:
    12
    gracias!!
     
  6. 'Apocalypze~

    'Apocalypze~ Usuario Maestro nvl. 6 ★ ★ ★ ★
    697/812

    Joined:
    Aug 21, 2010
    Messages:
    246,261
    Likes Received:
    33
  7. Maathy!

    Maathy! Usuario Maestro nvl. 6 ★ ★ ★ ★
    687/812

    Joined:
    Apr 25, 2009
    Messages:
    57,601
    Likes Received:
    2
    gracias men :)