Create your own awesome maps

Even on the go

with our free apps for iPhone, iPad and Android

Get Started

Already have an account?
Log In

Instrucciones de Salto by Mind Map: Instrucciones de Salto
0.0 stars - 0 reviews range from 0 to 5

Instrucciones de Salto

=)  

Función

Cambia el contenido de IP y eventualmente el de CS.

Tipos

Salto DIrecto

Son aquellas que especifican la dirección de salto inmediato después del cód. de operación, es decir, especifican la etiqueta a la que hay que saltar

Short Jump

Near Jump

Far Jump

Salto indirecto

Son aquellas que espe­cifican una dirección de memoria  de la que hay que recoger la dirección a la que saltar

Near Jump

Far Jump

Etiquetas

JMP

Provoca un salto incondicional, por lo que se utiliza para seguir la ejecución del programa en otro punto, que puede ser espe­cificando una etiqueta (salto directo) o especificando una dirección (salto indirecto). Cuando incluimos instruccio­nes de salto en el programa, indicamos la dirección del destino, y en caso de que el salto necesite especificar un valor a sumar a IP, el ensamblador se encarga de calcular el desplazamiento desde el punto donde se ejecuta el sal­to. En una instrucción JMP; el propio ensamblador decide si debe generar un salto corto o lejano.

JA

El formato es: JA etiqueta si tanto el flag de acarreo CF como el flag de cero ZF está a cero (CF=­0, ZF=0). Si CF=1 o ZF=1 no se transfiere el control. No se considera el signo.

JAE

El formato es: JAE etiqueta. Salta a la etiqueta si el flag de acarreo es cero (CF=0). No se con­sidera el signo.

JB

El formato es: JB etiqueta. Salta a la etiqueta si el flag de acarreo es uno (CF=1). No se considera el signo.

JBE

El formato es: JBE etiqueta. Salta a la etiqueta si el flag de acarreo es igual a 1 o el flag de cero es igual a uno (CF=1 y ZF=1). Si CF=0 y ZF=0 no hay salto. No se considera el signo.

JE

El formato es: JE etiqueta. Salta a la etiqueta si el flag de cero es igual a uno (ZF=1). Se considera número con signo y sin signo.

JG

El formato es: JG etiqueta. Salta a la etiqueta si el flag de cero es igual a cero y el flag de desborda­miento contiene el mismo valor que el flag se signo (ZF=0 y SF=OF). Si ZF=1 o SF<>OF, no hay salto. Se considera el sig­no.

JGE

El formato es: JGE etiqueta. Salta a la etique­ta si el flag de desbordamiento contiene el mismo valor que el flag  de signo (SF=OF). Se considera el signo.

JLE

El formato es: JLE etiqueta. Salta a la etique­ta si el flag de cero está a uno o el flag de desborda­miento y el de signo contiene valores distintos (ZF=1 o SF distinto de OF). Si ZF=0 y SF=OF no se produce el salto. Se considera el signo.

JNA, JNAE, JNB, JNBE, JNE, JNG, JNGE, JNL, JNLE

En realidad no sería necesaria, porque son sinónimas de JBE, JB, JAE, JNZ, JLE, JL, JGE Y JE, respectivamente. Pero el lenguaje ensamblador estándar las incluye para facilitar el trabajo del programa­dor.

JO

Formato es: JO etiqueta. Salta a la etiqueta si el flag de desbordamiento está a uno (OF=1­).

JNO

El formato es: JNO etiqueta. Salta a la etiqueta si el flag de desbordamiento está a cero (OF=0).

JS

El formato es: JS etiqueta. Salta a la etiqueta si el flag de signo está a uno (SF=1).

JNS

Salta a la etiqueta si el flag de signo está a cero (SF=0).

JP

El formato es: JP etiqueta. Salta a la etiqueta si el flag de paridad está a uno (PF=1).

JNP

El formato es: JNP etiqueta. Salta a la etiqueta si el flag de paridad está a cero PF=0).

LOOP

Esta instrucción permite realizar "bucles" utilizando el registro CX como contador (CX en un contador que va de­crementándose). Un bucle es un conjunto de instrucciones que se ejecutan una serie de veces.

LOOPE

Permite realizar "bucles" utilizando el registro CX como contador (CX en un contador que va decrementándose) pero además el flag de cero debe estar a uno (ZF=1).

LOOPNE

Permite realizar "bucles" utilizando el registro CX como contador (CX en un contador que va decrementándose) pero además el flag de cero debe estar a cero (ZF=0).

Instrucciones de Rotacion Y Traslación

Permitirán tratar la informa­ción almacenada en registros o en memoria mediante el tratamiento unitario de sus bits.

RCL

RCL operando, contador. Rota a la iz­quierda los bits del operando junto con la bandera de acarreo, CF, el número de bits especificado en el segun­do operando. Si el número a desplazar es 1, se puede especificar directamente (Por ejemplo: RCL AL, 1). Si es mayor que 1, su valor debe cargarse en CL y especificar CL como segundo operando.

RCR

Rota a la derecha los bits del operando junto con la bandera de acarreo, CF, el número de bits especificado en el segundo operan­do. Si el número a desplazar es 1, se puede especificar directamente (Por ejemplo: RCR AL, 1). Si es mayor que 1, su valor debe cargarse en CL y especificar CL como segun­do operando.

ROR

Rota a la derecha los bits del operando de tal forma que el bits del ex­tremo derecho del operando destino para al bit extremo izquierdo de dicho operando y al mismo tiem­po para el bit de acarreo (CF). Si el  número a desplazar es 1, se puede especificar directamente (Por ejemplo: ROR AL, 1). Si es mayor que 1, su valor debe cargarse en CL y espe­cificar CL como segundo operando.

ROL

Rota a la iz­quierda los bits del operando de tal forma que el bits del extremo izquierdo del operando destino para al bit extremo derecho de dicho operando y al mismo tiempo para el bit de acarreo (CF). Si el  número a desplazar es 1, se puede especificar directamente (Por ejemplo: ROL AL, 1). Si es mayor que 1, su valor debe cargarse en CL y especificar CL como segundo operando.

SAL

SHL y SAL realizan la misma operación y son físicamente la misma instruc­ción. Copia en cada bit del operando el contenido previo del bit de su derecha. El bit de menor peso se pone a cero. El contenido previo del bit de mayor peso se copia en el flag de acarreo (CF). Es equivalente a multiplicar el operando por dos, tanto para números sin signo como para número en complemento a 2, siempre el resultado no se salga del rango. Si el  número de bits a desplazar es 1, se puede especificar directamente (Por ejemplo: SAL AL, 1). Si es mayor que 1, su valor debe cargarse en CL y especificar CL como segundo operando.

SAR

Copia en cada bit del operando el contenido previo del bit de su izquierda. El bit de mayor peso mantiene su valor ante­rior. El contenido previo del bit de menor peso se copia en el flag de acarreo (CF). Es equivalente a dividir el operando por dos  para números   en complemento a 2. Si el  número de bits a desplazar es 1, se puede especificar di­rectamente (Por ejemplo: SAR AL, 1). Si es mayor que 1, su valor debe cargarse en CL y especificar CL como segundo operando.

SHR

Copia en cada bit del operando el contenido previo del bit de la izquier­da. En el bit de mayor peso se almacena un 0. El conte­nido previo del bit de menor peso se copia en el flag de acarreo (CF). Es equi­valente a dividir el operando por dos para números sin signo. Si el número de bits a des­plazar es 1, se puede especificar directamente (Por ejem­plo: SHR AL, 1). Si es mayor que 1, su valor debe cargarse en CL y especificar CL como segundo operando.

Pila

Los elementos se van ordenando cada uno detrás del último en llegar, pero al sacarlos de la estructura se empieza por el último en llegar, acabando por el primero. El microprocesador tiene dos registros que se utilizan para gestionar la pila: el SS (Segmento de Pila) y el SP (Puntero de Pila). El par SS:SP da la dirección donde se encuentra el último valor empujado en la pila.

Operadores

PUSH

POP

Registros de Acción

SS

SP

Etiquetas

PUSH

POP

PUSHF

POPF

PUSHA,POPA

Interrupciones

Interrupciones Hardware o Interrupciones Externas

Son aquellas provocadas por los dispositivos periféricos, controladas por un procesador especial de interrupciones (8259) o IPC (Con­tro­lador de Interrupciones Programable), y la rutina de tratamiento está "cableada".

Interrupciones Internas

Son aquellas provocadas dentro del propio procesador por una situación anormal de funcionamiento de alguna de sus partes.

Interrupciones de Software

Son aquellas que son programa­bles y que podemos cambiar. Las interrupciones de software podemos llegar a manejarlas y por ello el ensamblador nos proporciona una instrucción que nos permita poner en funcionamiento una determina­da rutina de interrupción

INT

LEA

OFFSET

Estructura de Programacion.Directivas

IF

Las instrucciones que empiezan por "IF" son directivas con­dicionales. Sirven para que el ensamblador incluya o no las sentencias que vienen a continuación, según se cumpla o no una determinada condición.

FOR

Las instrucciones que empiezan por "FOR" son directivas de "ciclos".

WHILE

Las instrucciones que empiezan por "WHILE" son directi­vas de "ciclos".

REPEAT

Las instrucciones que empiezan por "REPEAT" son direc­tivas de "ciclos".

EJEMPLO (PARTE 4)

Este programa trata muestra la cadena "Primer Programa" en el monitor y retorna al Sistema Operativo.

PILA SEGMENT STACK 'STACK'             ; Abre el segmento de PILA. DW 100h DUP (?)                                                                             ; Reserva 100 palabras para la PILA. PILA ENDS                                             ; Cierra el segmento de PILA. DATOS SEGMENT 'DATA'                                  ; Abre el segmento de DATOS. mensaje DB "Primer Programa", '$'       ; Mensaje a escribir. DATOS ENDS                                        ; Cierra el segmento de DATOS. CODIGO SEGMENT 'CODE'                    ; Abre el segmento de CODIGO. ASSUME CS:CODIGO, DS:DATOS, SS:PILA ENTRADA: MOV ax, DATOS                                 ; Valor de segmento para DATOS. MOV ds, ax                             ; Para acceder a "mensaje". MOV dx, OFFSET mensaje                  ; Para la interrupción 21h, función 09. MOV ah, 09      ; Especifica el servicio o función 09. INT 21h          ; Invoca el servicio 09: Imprimir Cadena. MOV ax, 4C00h            ; Servicio (Función) 4Ch, con valor de retorno 0. INT 21h          ; Invoca servicio 4Ch: Retorno al DOS. CODIGO ENDS               ; Cierra el segmento de CODIGO. END ENTRADA               ; Final del modulo fuente y primera instrucción  

Coneptos

Explicacion

Marcos

Una macro consiste en una serie de lineas a la que se asocia un nombre y que se puede repetir en cualquier punto del listado sin más que dar su nombre.

La cabeza del marco

Cuerpo del marco

Include

Esta directiva nos proporciona la posibilidad de in­troducir, dentro de nuestro programa un conjunto de instrucciones que están situadas en otro fichero. Estas instrucciones se sustituyen justamente en la posición en la que se encuentra la directiva. Dicha directiva se usa dentro de cualquiera de los segmentos, pero su utilización corriente es den­tro del Segmento de Código. Se suele utilizar para poder incluir dentro de un programa los ficheros de MACROS.

Local

Directiva que le indica al ensamblador que dentro de la macro van a existir una serie de etiquetas que deben de ser identificadas de una forma especial al realizar la expansión de la macro y siempre considerando la relación que existe con la tabla de símbolos. Con ello se evita las definiciones múltiples de estas etiquetas.

Compilacion

Para conseguir un programa ejecutable, el programa fuente escri­to en lenguaje ensamblador, entre otras tareas, habrá que ensam­blarlo y linkarlo (LINKER).