assembler set de instrucciones. introducción creado para facilitar la elaboración de programas....

67
Assembler Assembler Set de Set de Instrucciones Instrucciones

Upload: sal-mantilla

Post on 03-Jan-2015

23 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

AssemblerAssembler

Set de InstruccionesSet de Instrucciones

Page 2: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

IntroducciónIntroducción

Creado para facilitar la elaboración de Creado para facilitar la elaboración de programas.programas.

Al "hablar" en Assembler, estamos Al "hablar" en Assembler, estamos diciéndole a la máquina, en lo más diciéndole a la máquina, en lo más cercano a su idioma posible, lo que tiene cercano a su idioma posible, lo que tiene que hacer.que hacer.

Page 3: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

Sintaxis del AssemblerSintaxis del Assembler

Las órdenes en Assembler pueden ser:Las órdenes en Assembler pueden ser:

Mnemónicos (instrucciones)Mnemónicos (instrucciones)

(Ej. MOV, ADD, JMP)(Ej. MOV, ADD, JMP)

Directivas (palabras reservadas)Directivas (palabras reservadas)

(Ej. EQU, ORG, END)(Ej. EQU, ORG, END)

Page 4: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

Formato general de una orden:Formato general de una orden:

mnemónico [Param1 [,Param2]]

La línea de código consta de cuatro partes: Etiquetas Directiva o instrucción Operando(s) Comentarios

Page 5: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

Delimitadores:Delimitadores:

Los campos van separados sólo con espacios Los campos van separados sólo con espacios y/o tabulaciones. No se debe agregar nunca y/o tabulaciones. No se debe agregar nunca otros caracteres (comas, puntos, etc ).otros caracteres (comas, puntos, etc ).

No utilizar espacios extra, particularmente No utilizar espacios extra, particularmente después de comas que separan operandos. después de comas que separan operandos. ( Ej: ( Ej: movlw 5,w movlw 5,w ))

No usar caracteres delimitadores (espacios y No usar caracteres delimitadores (espacios y tabulaciones) en nombres o etiquetas.tabulaciones) en nombres o etiquetas.

Page 6: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

Etiquetas:Etiquetas:

No más de una etiqueta por instrucción.No más de una etiqueta por instrucción.

No usar palabras reservadas (EQU) o No usar palabras reservadas (EQU) o instrucciones (MOV).instrucciones (MOV).

No usar números o caracteres no numéricos No usar números o caracteres no numéricos como 1º letra.como 1º letra.

Usar siempre Usar siempre letrasletras y en y en mayúscula.mayúscula.

Page 7: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

Desventajas del AssemblerDesventajas del Assembler

Amplias diferencias entre el set de Amplias diferencias entre el set de instrucciones y tareas a realizarse.instrucciones y tareas a realizarse.

No Portable.No Portable.

Como remedio de lo anterior, se utilizan Como remedio de lo anterior, se utilizan lenguajes de medio o alto nivel como lenguajes de medio o alto nivel como C C o o Pascal.Pascal.

Page 8: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

MOV (move)MOV (move)

Copia el contenido del parámetro origen al Copia el contenido del parámetro origen al destino.destino.

Ejemplo:Ejemplo:

MOV AX, BX equivale a AX = BX; (C)MOV AX, BX equivale a AX = BX; (C)

Page 9: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

MOVSX & MOVZXMOVSX & MOVZX

Transfieren el operando origen a un Transfieren el operando origen a un registro y luego realizan la extensión registro y luego realizan la extensión

MOVSX (move with sign extension)MOVSX (move with sign extension)

MOVZX (move with zero extension)MOVZX (move with zero extension)

Page 10: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

MOVS (Move String)MOVS (Move String)

Transfiere los elementos del string Transfiere los elementos del string especificados por la dirección del registro especificados por la dirección del registro ESI a la dirección especificada por el ESI a la dirección especificada por el registro EDI. registro EDI.

Los elementos a ser operados se Los elementos a ser operados se identifican con los registro ESI (source identifican con los registro ESI (source string element) y EDI (destination string string element) y EDI (destination string element).element).

Page 11: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

MOVS (Move String)MOVS (Move String)

MOVSB (move byte string)MOVSB (move byte string)

MOVSW (move word string) MOVSW (move word string)

MOVSD (move doubleword string) MOVSD (move doubleword string)

Page 12: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

MOV – RestriccionesMOV – Restricciones

NONO se puede mover datos… se puede mover datos…

Entre posiciones de memoriaEntre posiciones de memoria

MOV datos1, datos2 es ilegalMOV datos1, datos2 es ilegal

En su lugar se escribe:En su lugar se escribe:

MOV AX, datos2MOV AX, datos2

MOV datos1, AX (Utilización de variable MOV datos1, AX (Utilización de variable puente)puente)

Page 13: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

MOV – RestriccionesMOV – Restricciones

NONO se puede mover datos… se puede mover datos…

De un registro de segmento a otro De un registro de segmento a otro

MOV DS, ES MOV DS, ES es ilegales ilegal

En su lugar se escribe:En su lugar se escribe:

MOV AX, ES MOV AX, ES

MOV DS, AX MOV DS, AX

Page 14: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

MOV – RestriccionesMOV – Restricciones

NONO se puede mover… se puede mover…

Una constante directamente a un registro Una constante directamente a un registro de segmento. de segmento.

MOV DS, 1234H MOV DS, 1234H es ilegales ilegal

En su lugar se escribe:En su lugar se escribe:MOV AX, 1234HMOV AX, 1234HMOV DS, AXMOV DS, AX

Page 15: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

MOV – RestriccionesMOV – Restricciones

NONO se puede… se puede…

CS (code segment) no debería usarse CS (code segment) no debería usarse como operando destinocomo operando destino

Podría tener el efecto de cambiar el Podría tener el efecto de cambiar el segmento que donde se esta ejecutando segmento que donde se esta ejecutando el código.el código.

Page 16: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

XCHG (exchange)XCHG (exchange)

Intercambia el contenido de dos Intercambia el contenido de dos operandos. operandos.

No requiere una dirección temporaria.No requiere una dirección temporaria.

XCHG Dato1, Dato2XCHG Dato1, Dato2

Page 17: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

Manipulación de pila – PUSHManipulación de pila – PUSH

Decrementa el puntero de pila (ESP), Decrementa el puntero de pila (ESP), luego copia el operando al tope de la luego copia el operando al tope de la misma.misma.

Page 18: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

Manipulación de pila – POPManipulación de pila – POP

Copia el dato del tope de la pila (ESP) a la Copia el dato del tope de la pila (ESP) a la dirección especificada con el operando y dirección especificada con el operando y luego incrementa el registro ESP para luego incrementa el registro ESP para apuntar al nuevo tope de la pila.apuntar al nuevo tope de la pila.

Page 19: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

PUSHA (push all registers)PUSHA (push all registers)

Guarda el contenido de los ocho registros Guarda el contenido de los ocho registros de propósito general en la pila.de propósito general en la pila.

Los registros se ingresan el la pila en el Los registros se ingresan el la pila en el siguiente orden: EAX, ECX, EDX, EBX, el siguiente orden: EAX, ECX, EDX, EBX, el valor inicial de ESP antes de que EAX sea valor inicial de ESP antes de que EAX sea ingresado en la pila, EBP, ESI, y EDI.ingresado en la pila, EBP, ESI, y EDI.

Page 20: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

PUSHA (push all registers)PUSHA (push all registers)

Page 21: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

POPA (pop all registers)POPA (pop all registers)

Saca los últimos ocho words o Saca los últimos ocho words o doublewords del tope de la pila y los doublewords del tope de la pila y los coloca en los registros de propósito coloca en los registros de propósito general, con excepción del registro ESP.general, con excepción del registro ESP.

El registro ESP se restaura por la acción El registro ESP se restaura por la acción de retirar los elementos de la pila.de retirar los elementos de la pila.

Page 22: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

POPA (pop all registers)POPA (pop all registers)

Page 23: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

Conversión de TiposConversión de Tipos

CBW CBW (convert byte to word)(convert byte to word)

CWDE CWDE (convert word to doubleword extended)(convert word to doubleword extended) CWD CWD (convert word to doubleword)(convert word to doubleword) CDQ CDQ (convert doubleword to quadword)(convert doubleword to quadword)

Page 24: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

Instrucción Instrucción CMPCMP Realiza comparaciones entre dos

operandosSintaxis: CMP registro,registro CMP registro,memoria CMP memoria,registro CMP registro,valor CMP valor,registro

Los datos a comparar deben ser del mismo tamaño.Las comparaciones están íntimamente ligadas con los saltos condicionales.

Page 25: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

CMPS (Compare string)CMPS (Compare string)

Resta los elementos del string destino de Resta los elementos del string destino de los elementos del string origen y actualiza los elementos del string origen y actualiza las banderas de estado (CF, ZF, OF, SF, las banderas de estado (CF, ZF, OF, SF, PF, y AF) en el registro EFLAGS de PF, y AF) en el registro EFLAGS de acuerdo a los resultados. acuerdo a los resultados.

Ningún elemento del string se escribe en Ningún elemento del string se escribe en la memoria. la memoria.

Page 26: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

CMPS (Compare string)CMPS (Compare string)

CMPSB (compare byte strings) CMPSB (compare byte strings)

CMPSW (compare word strings) CMPSW (compare word strings)

CMPSD (compare doubleword strings)CMPSD (compare doubleword strings)

Page 27: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

SCAS (Scan string)SCAS (Scan string)

Resta los elementos del string destino del Resta los elementos del string destino del contenido del registro EAX, AX o AL contenido del registro EAX, AX o AL (dependiendo de la longitud del operando) (dependiendo de la longitud del operando) y actualiza las banderas de estado de y actualiza las banderas de estado de acuerdo a los resultados.acuerdo a los resultados.

Ni los elementos del string ni el contenido Ni los elementos del string ni el contenido de los registros se modifican.de los registros se modifican.

Page 28: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

SCAS (Scan string)SCAS (Scan string)

SCASB (Scan byte string) SCASB (Scan byte string)

SCASW (Scan word string) SCASW (Scan word string)

SCASD (Scan doubleword string)SCASD (Scan doubleword string)

Page 29: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

LODS (Load string)LODS (Load string) Carga los elementos del string origen Carga los elementos del string origen

identificados por el registro ESI en el registro identificados por el registro ESI en el registro EAX, AX o AL. EAX, AX o AL.

LODSB (load byte string).LODSB (load byte string).

LODSW (load word string).LODSW (load word string).

LODSD (load doubleword string)LODSD (load doubleword string)

Page 30: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

STOS (Store string)STOS (Store string) Almacena los elementos del string origen Almacena los elementos del string origen

del registro EAX, AX o AL en la dirección del registro EAX, AX o AL en la dirección de memoria identificada por el registro de memoria identificada por el registro EDI.EDI.

STOSB (store byte string).STOSB (store byte string). STOSW (store word string). STOSW (store word string).

STOSD (store doubleword string). STOSD (store doubleword string).

Page 31: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

Entrada / SalidaEntrada / Salida

IN (input from port to register)IN (input from port to register) OUT (output from register to port)OUT (output from register to port)

Transfieren datos entre un puerto de E/S y Transfieren datos entre un puerto de E/S y el registro EAX (32 bits), el registro AX (16 el registro EAX (32 bits), el registro AX (16 bits) o el registro AL (8 bits) bits) o el registro AL (8 bits)

El puerto se especifica con un operando El puerto se especifica con un operando inmediato (si esta entre 0 y 255) o con una inmediato (si esta entre 0 y 255) o con una dirección en el registro DX. dirección en el registro DX.

Page 32: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

Entrada / Salida (strings)Entrada / Salida (strings) INS (input from port to string)INS (input from port to string) OUTS (output string to port)OUTS (output string to port)

Los registros ESI y EDI se usan para Los registros ESI y EDI se usan para especificar los elementos del string en la especificar los elementos del string en la memoria y los prefijos de repetición (REP) se memoria y los prefijos de repetición (REP) se usan para repetir la instrucción para usan para repetir la instrucción para implementar una transferencia de bloque. implementar una transferencia de bloque.

Las instrucciones INS y OUTS usan una Las instrucciones INS y OUTS usan una dirección en el registro DX para especificar el dirección en el registro DX para especificar el puerto de E/S.puerto de E/S.

Page 33: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

Entrada / Salida (strings)Entrada / Salida (strings)

INSB (input byte) INSB (input byte) INSW (input word) INSW (input word) INSD (input doubleword) INSD (input doubleword)

OUTB (output byte) OUTB (output byte) OUTW (output word) OUTW (output word) OUTD (output doubleword)OUTD (output doubleword)

Page 34: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

Instrucciones Aritméticas BinariasInstrucciones Aritméticas Binarias

Operan con datos numéricos de 8, 16 y 32 bits, codificados como enteros binarios con signo y sin signo.

Básicamente Incluyen:

SumaSuma RestaResta

MultiplicaciónMultiplicación DivisiónDivisión

IncrementoIncremento DecrementoDecremento

ComparaciónComparación NegaciónNegación

Page 35: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

Instrucción Instrucción ADDADD

Sintaxis:

ADD destino, fuente

Se suma ambos operandos y el resultado se almacena en el operando destino. Si se produce overflow se indica en los flags OF y CF. El signo del resultado se indica en el flag SF.

Page 36: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

Instrucción Instrucción ADDADD

ADD AL,40 ;

le sumo al reg. AL el valor 40.

(AL+=40h ó AL=AL+40h)

Page 37: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

Instrucción Instrucción SUBSUB

Sintaxis:

SUB destino, fuente

Se suma ambos operandos y el resultado se almacena en el operando destino. Si se produce overflow se indica en los flags OF y CF. El signo del resultado se indica en el flag SF.

Page 38: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

Instrucciones de Instrucciones de Multiplicación y DivisiónMultiplicación y División

MUL Multiplicación sin signo

IMUL Multiplicación con signo

DIV División sin signo

IDIV División con signo

Page 39: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

Instrucción Instrucción MULMUL Sintaxis:

MUL fuente

Realiza la multiplicación entre el operando dado con el acumulador. El acumulador a multiplicar va a depender del operador fuente que se ingrese.

Tamaño del operando

 

Registro Fuente Destino

Byte AL r/m8 AX

Word AX r/m16 DX:AX

DoubleWord EAX r/m32 EDX:EAX

Page 40: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

Instrucción Instrucción IMULIMUL

Sintaxis:

IMUL fuente

Tiene tres formas según el número de operandos:

Un Operando

Dos Operandos

Tres Operandos

Page 41: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

Instrucción Instrucción IMULIMUL

Un Operando:

Es idéntica a la instrucción MUL

Dos Operandos:

IMUL destino, fuente

Dos Operandos:

IMUL destino, fuente1, fuente2

Page 42: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

Instrucción Instrucción DIVDIV Sintaxis:

DIV divisor

Divide el valor en los registros AX, DX:AX o EDX:EAX por el operando divisor. Esta operación arroja como resultado un cociente y un resto, el modo en que se almacena lo podemos observar en la siguiente tabla...

Tamaño del operando

Dividendo Divisor Cociente Resto Máximo Cociente

Word/byte AX r/m8 AL AH 255

Doubleword/word

DX:AX r/m16 AX DX 65,535

Quadword/doubleword

EDX:EAX r/m32 EAX EDX 232 - 1

Page 43: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

Instrucciones De Instrucciones De Incremento y DecrementoIncremento y Decremento

INC Incremento DEC Decremento

Estas instrucciones adicionan 1 o restan 1 a un operando entero.

Sintaxis INC AX o DEC AX Equivale a ADD AX,1 o SUB AX,1

(A++) (A--)

Page 44: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

Instrucciones de Instrucciones de Comparación y NegaciónComparación y Negación

Instrucción NEG Sintaxis:

NEG destino Genera el complemento a dos del

operando destino y lo almacena en este mismo operando.

MOV AX,1234h

NEG AX AX=EDCBh

Page 45: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

Instrucciones LógicasInstrucciones Lógicas

AND Conjunción de dos operandos OR Disyunción inclusiva lógica de

dos operandos XOR Disyunción exclusiva lógica de

dos operandos NOT Negación bit por bit del

operando

Page 46: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

InstrucciónInstrucción AND AND

AND destino, fuente

Cada bit del resultado se activa a 1 si ambos bits de los operandos son 1, en otro caso se pone a 0.

Fuente Destino Destino

1 1 11 0 00 1 00 0 0

Dirección de memoria

Page 47: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

InstrucciónInstrucción OR OR

OR destino, fuente

Cada bit del resultado se pone en 0 si ambos bits de los operandos son 0, en otro caso se pone a 1.

Fuente Destino Destino

1 1 11 0 10 1 10 0 0

Dirección de memoria

Page 48: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

InstrucciónInstrucción XOR XOR

XOR destino, fuente

Cada bit del resultado se activa a 1 si ambos bits de los operandos son diferentes, en otro caso es 0.

Fuente Destino Destino

1 1 0

1 0 1

0 1 1

0 0 0

Page 49: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

InstrucciónInstrucción NOT NOT

NOT destino

Cada bit 1 se pone a 0 y cada bit 0 se pone a 1

Page 50: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

Transferencia de ControlTransferencia de Control

Es un conjunto de instrucciones.Es un conjunto de instrucciones.

Permiten al programador romper el flujo Permiten al programador romper el flujo

secuencial en un programa.secuencial en un programa.

PPermite ejecutar trozos de código.ermite ejecutar trozos de código.

Page 51: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

Clasificación:Clasificación:

Saltos incondicionales (JMP).Saltos incondicionales (JMP).

Bucles (LOOP).Bucles (LOOP). Saltos condicionales (Jnnn).Saltos condicionales (Jnnn).

Llamadas a procedimientos (CALL).Llamadas a procedimientos (CALL).

Llamadas a interrupciones (INT).Llamadas a interrupciones (INT).

Page 52: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

JMP (Salto incondicional)JMP (Salto incondicional)

Desvía el flujo del programaDesvía el flujo del programa No verifica condiciones ni banderasNo verifica condiciones ni banderas Transfiere a una dirección especificadaTransfiere a una dirección especificada

Sintaxis: Sintaxis:

JMPJMP destino destino

Page 53: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

Tipos de Salto IncondicionalTipos de Salto Incondicional

Ej: Ej: ;; porción de códigoporción de código

Inicio:Inicio:

JMPJMP Ejemplo Ejemplo

MOV cx,7MOV cx,7

Ejemplo:Ejemplo:

MOV cx,6MOV cx,6

; ; continúa códigocontinúa código

Page 54: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

Salto Condicional (Jnnn)Salto Condicional (Jnnn)

Ejecuta trozos de código dependiendo del jecuta trozos de código dependiendo del valor de determinado registro o variablevalor de determinado registro o variable

Es necesario hacer una Es necesario hacer una comparacióncomparación

Page 55: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

Salto Condicional (Jnnn)Salto Condicional (Jnnn)

Page 56: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

Salto Condicional (Jnnn)Salto Condicional (Jnnn)

Page 57: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

Bucle (LOOP)Bucle (LOOP)

Sirve para ejecutar un trozo de código un número de veces dado Por ejemplo:

; porción de código MOV CX,7 INICIO_BUCLE: ADD WORD PTR BX,CX INC BX LOOP INICIO_BUCLE MOV AX,BX ; continúa código

Page 58: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

Llamada a interrupciones (INT)Llamada a interrupciones (INT)

Son las de tipo softwareSon las de tipo software Ayuda en la creación de programasAyuda en la creación de programas Una Una interrupcióninterrupción es una operación que es una operación que

invoca la ejecución de una rutina invoca la ejecución de una rutina específica específica

Su sintaxis es la siguiente:Su sintaxis es la siguiente:

INTINT numero_interrupción. numero_interrupción.

Page 59: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

Llamada a interrupciones (INT)Llamada a interrupciones (INT)

Ejemplo:Ejemplo:

INT 10H INT 10H Provocaría una llamada a la Provocaría una llamada a la interrupción 10h (16 en decimal).interrupción 10h (16 en decimal).

Page 60: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

Llamada a Procedimientos (CALL)Llamada a Procedimientos (CALL)

Trozos de código que van a ser usados en Trozos de código que van a ser usados en distintas partes del programa.distintas partes del programa.

Permiten tener un código más legible, Permiten tener un código más legible,

más estructurado.más estructurado.

Sintaxis:Sintaxis:

CALL CALL nombre_procedimientonombre_procedimiento

Page 61: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

Llamada a Procedimientos (CALL)Llamada a Procedimientos (CALL)

El formato es el siguiente:

Inicialización PROC ….. Cuerpo del procedimiento. ….. RETInicialización ENDP

Page 62: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

Llamada a Procedimientos (CALL)Llamada a Procedimientos (CALL)

Existen dos tipos de llamadas a procedimientos:Existen dos tipos de llamadas a procedimientos:

Llamadas directas (la llamada tieneLlamadas directas (la llamada tiene

el nombre del procedimiento)el nombre del procedimiento)

Llamadas indirectas (el llamado tieneLlamadas indirectas (el llamado tiene

la dirección que contiene la direcciónla dirección que contiene la dirección

de comienzo del procedimiento)de comienzo del procedimiento)

Page 63: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

DeclaraciDeclaracióón de Variablesn de Variables

Es la posibilidad de ponerle nombres a las Es la posibilidad de ponerle nombres a las posiciones de memoriaposiciones de memoria

Sintaxis:Sintaxis:

Nombre Tipo ValorNombre Tipo Valor

Page 64: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

DeclaraciDeclaracióón de Variables (Tipos)n de Variables (Tipos)

DB Para definir un byte, dice que la variable es un byte, o un array de Bytes

DW Para definir un Word o un array de Word.

DD Para definir un DWord, o un array de DWord.

DQ Para definir un QWord (QuadWord, u ocho bytes).

DT Para definir Ten Bytes (diez).

Page 65: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

DeclaraciDeclaracióón de Variablesn de Variables

Ejemplos:Ejemplos:

LETRA_A DB ‘A’ ; variable con un carácterLETRA_A DB ‘A’ ; variable con un carácter

NUMBER_1 DW 1 ; un número 1, pero wordNUMBER_1 DW 1 ; un número 1, pero word

STRING DB ‘Hola, cómo estás!!!!’ ; cadenaSTRING DB ‘Hola, cómo estás!!!!’ ; cadena

Page 66: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

Declaración de MacrosDeclaración de Macros

Permiten asignarle un nombre a una Permiten asignarle un nombre a una secuencia de instruccionessecuencia de instrucciones

Luego se utiliza el nombre de la macro Luego se utiliza el nombre de la macro en el programa como si se usase la en el programa como si se usase la secuencia de instrucciones anterior.secuencia de instrucciones anterior.

Las macros no son lo mismo que las Las macros no son lo mismo que las subrutinassubrutinas

Page 67: Assembler Set de Instrucciones. Introducción Creado para facilitar la elaboración de programas. Creado para facilitar la elaboración de programas. Al

Declaración de MacrosDeclaración de Macros

La declaración de macros se hace a La declaración de macros se hace a través de las directivas través de las directivas MACRO MACRO yy ENDMENDM..

Su sintaxis es:Su sintaxis es:

nombre nombre MACRO MACRO [[parámetrosparámetros,,,],,,]

declaracionesdeclaraciones ENDMENDM