Вы находитесь на странице: 1из 18

UNIVERSIDAD NACIONAL DE JUJUY

FACULTAD DE INGENIERÍA

CÁTEDRA DE LABORATORIO DE COMPUTADORAS

LENGUAJE ASSEMBLER
(SET DE INSTRUCCIONES)

CARRERAS DE:
INGENIERÍA INFORMÁTICA
LICENCIATURA EN SISTEMAS
ANALISTA PROGRAMADOR UNIVERSITARIO
LENGUAJE ASSEMBLER
JUEGO DE INSTRUCCIONES

1- Instrucciones de transferencia de datos: Mueven información entre registros y posiciones de memoria o puertos de entrada/salida.

INSTRUC DES CRIPCIÓN FORMATO EJ EMPLO


IN AX, 12h ;leer sobre AX una palabra de la puerta 12 h
IN Entrada de byte o palabra IN acu mulador, puerta IN A L, DX ;leer sobre AL un byte de la puerta especificada en DX

LAHF Carga el AH con las banderas LAHF ; Carga los ocho bits de más a la derecha del registro de banderas y los envía al A H

LEA Cargar dirección efectiva LEA destino, fuente LEA AX, XX[SI] ; si XX=1234h y SI = 0006h, AX=123Ah

LDS, LES,
Carga el Registro de LDS/LES/LFS/ LGS/LSS ; se cargan al registro DS y al puntero una dirección de
LFS, LGS, LDS puntero, AX
Segmento registro, memoria memo ria especificada por AX
LSS
; AX = FEDCh - BX = 1234h
MOV Mover MOV destino, fuente MOV AX, BX ; AX = 1234h - BX = 1234h

OUT 12h, AX ; transferir el valor de AX al puerto 12h


OUT Salida de byte o palabra OUT puerta, acu mu lador
OUT DX, A L ; transferir el valor de A L al puerto especificado en DX

POP Recuperar palabra de la pila POP destino POP AX ; elemento de la p ila a AX

Transfiere b its específicos de la palabra que se encuentra en lo alto de la p ila (apuntado por el
POPF Recuperar banderas de la pila POPF registro SP) a las banderas, reemplazando así los valores que contenían previamente. El reg istro SP
se incrementa luego en 2

PUS H Depositar palabra en la pila PUS H fuente PUS H AX ; poner AX en la p ila

Decrementa el puntero de pila (SP) en 2 y luego transfiere los valores de las banderas a bits
PUS HF Depositar banderas en la pila PUS HF
específicos de la palabra de la pila d ireccionada por el reg istro SP

SAHF Almacenar AH en banderas SAHF Transfiere b its específicos del reg istro AH a los registros de banderas SF, ZF, AF, PF y CF

Ing. Sánchez Rivero Laboratorio de Computadoras – F. I. – U.N.Ju Pág. 1


INSTRUC DES CRIPCIÓN FORMATO EJ EMPLO
; AX = 1234h - BX = 5678h
XCHG Intercamb iar dos operandos XCHG destino, fuente XCHG AX, B X
; AX = 5678h - BX = 1234h
TABLA DB 5,56,14,44,74,84 ;TABLA
Traslada bytes de una tabla a MOV BX, despl. TABLA ; Dsplazamiento de TABLA
XLAT XLAT (mem)8 , XLATB
AL MOV A L, 2 ;AL apunta al elemento 3
XLAT TA BLA ;A L=0EH

2- Instrucciones aritméticas: Realizan operaciones aritméticas sobre números binarios o números BCD (decimal codificado en binario)

INSTRUC DES CRIPCIÓN FORMATO EJ EMPLO


; AL = 08h AH = 00h
; BL = 06h
Ajuste ASCII en suma. ADD A L, BL ; AL = 0Eh AF = 0
AAA Corrige el resultado en AL de una suma de dos números decimales desempaquetados , AAA
convirtiéndolo en un valor decimal desempaquetado ; BL = 06h
AAA ; AX = 0104h AF = 1 CF = 1
; BL = 06h

; AX = 0103h = 25910
Ajuste ASCII en d ivisión AAD ; BL = 04h = 410
Realiza un ajuste del dividendo en AL antes de hacer la división de dos números ; AX = 000Dh
AAD decimales desempaquetados, para que el resultado de esta división (cociente) sea un AAD
DIV BL ; AH = 01h (resto)
valor decimal desempaquetado. ; AL = 03h (cociente)

; AL = 09h = 910
; BL = 07h = 710
Ajuste ASCII en mu ltip licación MUL BL ; AX = 003Fh = 6310
AAM Corrige el resultado en AX del producto de dos números decimales desempaquetados, AAM
convirtiéndolo en un valor decimal desempaquetado. ; BL = 07h
AAM ; AX = 0603h
; BL = 07h
; AL = 09h AH = 00h
; BL = 06h
Ajuste ASCII en resta SUB A L,BL ; AL = 03h AF = 0
AAS Corrige el resultado en AL de la resta de dos números decimales desempaquetados, AAS
; BL = 06h
convirtiéndolo en un valor decimal desempaquetado .
AAS ; AX = 0003h AF = 0
; BL = 06h

Ing. Sánchez Rivero Laboratorio de Computadoras – F. I. – U.N.Ju Pág. 2


INSTRUC DES CRIPCIÓN FORMATO EJ EMPLO
; AL = FEh = 1111 1110b
; BL = 12h = 0001 0010b
;-------------------------------
Sumar con acarreo ; AL = 10h = 0001 0000b CF=1
Suma los dos operandos. Suma uno si está activada la bandera de acarreo (CF=1). El
ADC resultado se almacena en el operando destino. Los operandos deben ser del mismo ADC destino, fuente ADC AL, BL ; CF = 1b
tipo (byte o palabra). ;-------------------------------
; AL = 11h = 0001 0001b
; AL = 11h
; BL = 12h

; AL = FEh = 1111 1110b


; BL = 12h = 0001 0010b
Sumar sin acarreo ;-------------------------------
ADD Suma los dos operandos. El resultado se almacena en el operando destino. Los ADD destino, fuente ADD AL, BL
operandos deben ser del mismo tipo (byte o palabra). ; AL = 10h = 0001 0000b
; AL = 10h
; BL = 12h
Convierte byte a palabra.
MOV A L, 86h
CBW Extiende un número de un byte con signo a una palabra duplicando el bit de CBW
CBW ;AX = FF86h
signo (bit 7) del A L a los bits en el AH.
Co mpara operandos
Resta fuente de destino, pero no retorna el resultado. Los operandos quedan
CMP AX, BX ; comparar AX con BX
CMP inalterados, pero las banderas se actualizan, pudiéndose consultar a continuación CMP destino, fuente
mediante una instrucción de bifurcación condicional. Los operandos deben ser del JL M ENOR ; bifurcar a M ENOR si AX < BX
mismo tipo (byte o palabra).

Convierte palabra en palabra doble.


Extiende un número de una palabra con signo a una palabra doble en DX:AX MOV AX, C234h
CWD CWD
duplicando el bit de signo (bit 15) del AX por medio del DX, por lo regular CWD ; DX = FFFFh
para generar un dividendo de 32 bits.
AH = 00h
Ajuste decimal en suma ; AL = 68h
Corrige el resultado en AL de la suma de dos números decimales empaquetados, ADD A L, BL ; BL = 17h
AF = 0
DAA convirtiéndolo en un valor decimal empaquetado. DAA ; AL = 7Fh
Si bits 3 a 0 de AL > 9 o AF = 1, AL = AL + 6, AF = 1; ; AX = 85h
Si AL > 9Fh o CF = 1, AL = AL + 60h, CF = 1. DAA AF = 1
; BL = 17h

Ing. Sánchez Rivero Laboratorio de Computadoras – F. I. – U.N.Ju Pág. 3


INSTRUC DES CRIPCIÓN FORMATO EJ EMPLO
; AL = 68h AH = 00h
Ajuste decimal en resta ; BL = 19h
Corrige el resultado en AL de la resta de dos números decimales empaquetados, SUB A L, BL ; AL = 4Fh AF = 0
DAS convirtiéndolo en un valor decimal empaquetado. DAS
Si bits 3 a 0 de AL > 9 o AF = 1, AL = AL - 6, AF = 1; ; BL = 19h
Si AL > 9Fh o CF = 1, AL = AL - 60h, CF = 1. DAS ; AX = 49h AF = 1
; BL = 19h
; AX = 0123h
DEC Decrementar destino en uno DEC destino
DEC A X ; AX = AX – 1 = 0122h
Div idir sin signo.
Divide, sin considerar el signo, un número contenido en el acumulador y su extensión ; AX = 0013h = 1910 (div idendo)
entre el operando fuente. ; BL = 02h = 210 (divisor)
El cociente se almacena en el acumulador (AL o AX según que el operando fuente sea DIV BL ; AX = 0109h (resultado)
DIV de tipo byte o palabra).
DIV fuente
; AH = 01h = 110 (resto)
El resto se almacena en la extensión del acumulador (AH o DX, según que el ; AL = 09h = 910 (cociente)
operando fuente sea de tipo byte o palabra). ; BL = 02h

Div idir con signo


Divide, considerando el signo, un número contenido en el acumulador y su extensión ; AX = FFEDh = -1910 (dividendo)
entre el operando fuente. ; BL = 02h = 210 (divisor)
El cociente se almacena en el acumulador (AL o AX según que el operando fuente sea IDIV BL ; AX = 01F7h (resultado)
IDIV de tipo byte o palabra). IDIV fuente
; AH = 01h = 110 (resto)
El resto se almacena en la extensión del acumulador (AH o DX, según que el ; AL = F7h = -910 (cociente)
operando fuente sea de tipo byte o palabra). ; BL = 02h

Multiplicar con signo ; AL = FEh = -210


Multiplica, considerarando el signo, el acumulador (AL o AX) por el operando fuente. ; BL = 12h = 1810
Si la mitad superior del resultado (AH para el caso de operando tipo byte o DX para
IMUL el caso de operando de tipo palabra) no es la expansión del signo del resultado, se IMUL fuente IMUL BL ; AX = FFDCh (resultado)
activan las banderas CF y OF, indicando que esta mitad superior contiene dígitos ; BL = 12h
significativos del resutlado. ; CF = OF = 0

; AX = 1234h
INC Incrementar destino en uno INC destino
INC AX ; AX = AX + 1 = 1235h
; AL = 64h = 10010
Multiplicar sin signo ; BL = 02h = 210
Multiplica, sin considerar el signo, el acumulador (AL o AX) por el operando fuente.
; 00C8h = 20010
MUL Si la mitad superior del resultado (AH para el caso de operando tipo byte o DX para MUL fuente
el caso de operando de tipo palabra) no es cero, se activan las banderas CF y OF, MUL BL ; AX = 00C8h (resultado)
indicando que esta mitad superior contiene dígitos significativos del resultado. ; BL = 02h
; CF = OF = 0

Ing. Sánchez Rivero Laboratorio de Computadoras – F. I. – U.N.Ju Pág. 4


INSTRUC DES CRIPCIÓN FORMATO EJ EMPLO
Negar/formar co mplemento a 2. ; FFh = 1111 1111b
Calcula el valor negativo del operando destino, es decir, resta el operando de ; AL = F2h = 1111 0010b
NEG cero y devuelve el resultado en el mis mo operando (byte o palabra). NEG destino NEG AL ; 0Dh = 0000 1101b
Para hacer esto, el operando destino se resta del número co mpuesto por todos ; +1b
unos y se le añade 1. Esto es lo mis mo que el co mplemento a 2 del nú mero. ; AL = 0Eh = 0000 1110b

; AL = FEh = 1111 1110b


Restar con acarreo ; BL = 12h = 0001 0010b
Resta el operando fuente del operando destino. ; ECh = 1110 1100b
SBB Resta uno si está activada la bandera de acarreo (CF). El resultado se almacena en el SBB destino, fuente ; CF = 01h = - 1b
operando destino. SBB AL, BL
; EBh = 1110 1011b
Los operandos deben ser del mismo tipo (byte o palabra) ; AL = EBh
; BL = 12h
; AL = FEh = 1111 1110b
Restar sin acarreo ; BL = 12h = 0001 0010b
Resta el operando fuente del operando destino.
SUB El resultado se almacena en el operando destino.
SUB destino, fuente SUB AL, BL ; ECh = 1110 1100b
Los operandos deben ser del mismo tipo (byte o palabra) ; AL = ECh
; BL = 12h

3- Instrucciones de manejo de bits: Realizan operaciones de desplazamiento, rotación y lógicas sobre registros o posiciones de memoria.

INSTRUC DES CRIPCIÓN FORMATO EJ EMPLO


; AX = FEDCh = 1111 1110 1101 1100b
Y lógico ; BX = 1234h = 0001 0010 0011 0100b
AND Operación “y lógica” a nivel de bit entre los dos operandos. El resultado se AND destino, fuente ; 1214h = 0001 0010 0001 0100b
almacena en destino. AND A X, BX ; AX = 1214h
; BX = 1234h
NO lógico
Cambia los bits unos por ceros y los bits ceros por unos, es decir, realiza el ; AL = F2h = 1111 0010b
NOT NOT destino
complemento a unos del operando y devuelve el resultado en el mismo operando (byte NOT A L ; AL = 0Dh = 0000 1101b
o palabra)
; AX = FEDCh = 1111 1110 1101 1100b
O lógico ; BX = 1234h = 0001 0010 0011 0100b
OR Operación “o lógico inclusivo” a nivel de bit entre los dos operandos. El OR destino, fuente ; FEFCh = 1111 1110 1111 1100b
resultado se almacena en destino. OR A X, BX ; AX = FEFCh
; BX = 1234h

Ing. Sánchez Rivero Laboratorio de Computadoras – F. I. – U.N.Ju Pág. 5


INSTRUC DES CRIPCIÓN FORMATO EJ EMPLO
Rotar a la izquierda a t ravés de acarreo
Rotar a la izquierda los bits del operando destino junto con la bandera de acarreo MOV CL, 3 ; rotar 3 bits
RCL (CF) el número de bits especificado en el segundo operando. RCL destino, contador ; AL = 0101 1110b, CF = 0
Si el número de bits a desplazar es 1, se puede especificar directamente. Si es mayor RCL A L, CL ; AL = 1111 0001b, CF = 0
que 1, su valor debe cargarse en CL y especificar CL como segundo operando.

Rotar a la derecha a través de acarreo


Rotar a la derecha los bits del operando destino junto con la bandera de acarreo (CF) MOV CL, 3 ; rotar 3 bits
RCR el número de bits especificado en el segundo operando. RCR destino, contador ; AL = 0101 1110b, CF = 0
Si el número de bits a desplazar es 1, se puede especificar directamente. Si es mayor RCL A L, CL ; AL = 1000 1011b, CF = 1
que 1, su valor debe cargarse en CL y especificar CL como segundo operando.

Rotar a la izquierda
Rotar a la izquierda los bits del operando destino el número de bits especificado en el MOV CL, 2 ; rotar 2 bits
ROL segundo operando. ROL destino, contador ; AL = 1100 1100b, CF = 0
Si el número de bits a desplazar es 1, se puede especificar directamente. Si es mayor RCL A L, CL ; AL = 0011 0011b, CF = 1
que 1, su valor debe cargarse en CL y especificar CL como segundo operando.

Rotar a la derecha
Rotar a la derecha los bits del operando destino el número de bits especificado en el MOV CL, 2 ; rotar 2 bits
ROR segundo operando. ROR destino,contador ; AL = 1100 1100b, CF = 0
Si el número de bits a desplazar es 1, se puede especificar directamente. Si es mayor RCR A L, CL ; AL = 0011 0011b, CF = 0
que 1, su valor debe cargarse en CL y especificar CL como segundo operando.
SAL Desplazamiento arit mét ico a la izquierda
* Desplazamiento lógico a la izquierda (igua a SAL) MOV CL, 2 ; desplazar 2 bits
SAL destino, contador
Desplazan a la izquierda los bits del operando destino el número de bits especificado ; AL = 1100 1100b, CF = 0
SHL SHL destino, contador
en el segundo operando. SAL A L, CL ; AL = 0011 0000b, CF = 1
Los bits de la derecha se rellenan con cero
Desplazamiento arit mét ico a la derecha MOV CL, 2 ; desplazar 2 bits
Desplaza a la derecha los bits del operando destino el número de bits especificado en
SAR el segundo operando.
SAR destino, contador ; AL = 1100 1100b, CF = 0
Los bits de la isquierda se rellenan con el bit de signo del primer operando. SAR A L, CL ; AL = 1111 0011b, CF = 0

Desplazamiento lógico a la derecha MOV CL, 2 ; desplazar 2 bits


Desplazar a la derecha los bits del operando destino el número de bits especificado
SHR SHR destino, contador ; AL = 0011 0011b, CF = 0
en el segundo operando.
Los bits de la izquierda se rellenan con cero. SHR A L, CL ; AL = 0000 1100b, CF = 1

Co mparación lógica.
TES T
Efectúa la operación lógica AND, b it a b it, entre los dos operandos de que TES T AX, ; Co mparación lógica, bit por bit, entre
TES T {reg/ mem},{reg/in m/
dispone. El resultado se pierde y sólo quedan afectados los señalizadores SF, FFFFH el contenido del AX y el valo r FFFFh.
mem}
ZF y PF, mientras que OF=CF=0 quedando indefinido AF.

Ing. Sánchez Rivero Laboratorio de Computadoras – F. I. – U.N.Ju Pág. 6


INSTRUC DES CRIPCIÓN FORMATO EJ EMPLO
; AX = FEDCh = 1111 1110 1101 1100b
O lógico exclusivo ; BX = 1234h = 0001 0010 0011 0100b
XOR Operación “o lógico exclusivo” a nivel de bit entre los dos operandos. El resultado se XOR destino, fuente ; ECD8h = 1110 1100 1110 1000b
almacena en destino. XOR AX, BX ; AX = ECD8h
; BX = 1234h

4- Instrucciones de transferencia de control: Sirven para controlar la secuencia de ejecución de las instrucciones del programa.

INSTRUC DES CRIPCIÓN FORMATO EJ EMPLO


Llamar a un procedimiento
Bifurca a un procedimiento fuera de línea, salvando previamente en la pila la
CALL dirección de la instrucción siguiente, para poder volver a esta instrucción una vez CALL destino CALL Proc1 ; llamada directa al procedimiento Proc1
ejecutado el procedimiento
JA Bifurcar si superior
CMP AX, BX ; comparar AX con BX
* Bifurcar si no in ferior ni igual (igual a JA) JA desplazamiento
JA ETIQUETA ; bifurcar a ETIQUETA si A X > BX
Transfiere el control a la instrucción (IP + desplazamiento) si se cumple la condición JNB E desplazamiento
JNB E ; (sin considerar el signo)
CF = 0 y ZF = 0.
Si CF = 1 o ZF = 1, no hay transferencia de control.
JAE Bifurcar si superior o igual
CMP AX, BX ; comparar AX con BX
* Bifurcar si no in ferior (igual a JA E) JAE desplazamiento
Transfiere el control a la instrucción (IP + desplazamiento) si se cumple la condición JAE ETIQUETA ; bifurcar a ETIQUETA si A X >= BX
JNB JNB desplazamiento
CF = 0 . ; (sin considerar el signo)
Si CF = 1, no hay transferencia de control.
JB Bifurcar si inferior
JNAE * Bifurcar si no superior ni igual (igual a JB) JB desplazamiento CMP AX, BX ; comparar AX con BX
* Bifurcar si acarreo (igual a JB) JNAE desplazamiento JB ETIQUET A ; bifurcar a ETIQUETA si A X < BX
Transfiere el control a la instrucción (IP + desplazamiento) si se cumple la condición JC desplazamiento ; (sin considerar el signo)
JC
CF = 1 .
Si CF = 0, no hay transferencia de control.
JBE Bifurcar si inferior o igual
* Bifurcar si no superior (igual a JBE) CMP AX, BX ; comparar AX con BX
JBE desplazamiento
Transfiere el control a la instrucción (IP + desplazamiento) si se cumple la condición JBE ETIQUET A ; bifurcar a ETIQUETA si A X <= BX
JNA JNA desplazamiento
CF = 1 o ZF = 1. ; (sin considerar el signo)
Si CF = 0 y ZF = 0, no hay transferencia de control.

Bifurcar si CX es cero
Transfiere el control a la instrucción (IP + desplazamiento) si se cumple la condición DEC CX ; CX = CX – 1
JCXZ JCXZ desplazamiento
CX = 0. JCXZ ET IQUETA ; bifurcar a ETIQUETA si CX = 0
Si CF <> 0, no hay transferencia de control

Ing. Sánchez Rivero Laboratorio de Computadoras – F. I. – U.N.Ju Pág. 7


INSTRUC DES CRIPCIÓN FORMATO EJ EMPLO
JE Bifurcar si igual
CMP AX, BX ; comparar AX con BX
* Bifurcar si igual a cero (igual a JE) J E desplazamiento J E ETIQUETA1 ; bifurcar a ETIQUETA1 si AX= BX
Transfiere el control a la instrucción (IP + desplazamiento) si se cumple la condición
JZ JZ desplazamiento S UB AX, BX ; AX = AX – BX
ZF = 1. JZ ETIQUETA2 ; bifurcar a ETIQUETA2 si AX es 0
Si ZF = 0, no hay transferencia de control

JG Bifurcar si mayor

* Bifurcar si no menor ni igual (igual a JG) JG desplazamiento CMP AX, BX ; comparar AX con BX
Transfiere el control a la instrucción (IP + desplazamiento) si se cumple la condición JNLE desplazamiento JG ETIQUETA ; bifurcar a ETIQUETA si A X >BX
JNLE ZF = 0 y SF = OF.
Si ZF = 1 o SF<>OF, no hay transferencia de control

JGE Bifurcar si mayor o igual


* Bifurcar si no menor (igual a JGE) CMP AX, BX ; comparar AX con BX
JGE desplazamiento
Transfiere el control a la instrucción (IP + desplazamiento) si se cumple la condición JGE ETIQUETA ; bifurcar a ETIQUETA si A X >=BX
JNL JNL desplazamiento
SF = OF. ; (considerando el signo)
Si SF<>OF, no hay transferencia de control.
JL Bifurcar si menor
* Bifurcar si no mayor ni igual (igual a JL) CMP AX, BX ; comparar AX con BX
JL desplazamiento
Transfiere el control a la instrucción (IP + desplazamiento) si se cumple la condición JL ETIQUETA ; bifurcar a ETIQUETA si A X < BX
JNGE JNGE desplazamiento
SF <> OF. ; (considerando el signo)
Si SF=OF, no hay transferencia de control.
JLE Bifurcar si menor o igual
* Bifurcar si no mayor (igual a JLE) CMP AX, BX ; comparar AX con BX
JLE desplazamiento
Transfiere el control a la instrucción (IP + desplazamiento) si se cumple la condición JLE ETIQUETA ; bifurcar a ETIQUETA si A X <=BX
JNG JNG desplazamiento
ZF = 1 o SF<>OF. ; (considerando el signo)
Si ZF = 0 y SF = OF, no hay transferencia de control.
* Bifurcar si no acarreo (igual a JA E)
Transfiere el control a la instrucción (IP + desplazamiento) si se cumple la condición ADD A L, BL ; AL = A L + BL
JNC CF = 0. JNC desplazamiento
JNC ETIQUETA ; bifurcar a ETIQUETA si no acarreo
Si CF = 1, no hay transferencia de control.
JNE Bifurcar si no igual CMP AX, BX ; comparar AX con BX
* Bifurcar si no cero (igual a JNE) JNE desplazamiento JNE ETIQUETA1 ; bifurcar a ETIQUETA1 si distintos
Transfiere el control a la instrucción (IP + desplazamiento) si se cumple la condición S UB AX, BX
JNZ ETIQUETA2 ; AX = AX – BX
JNZ JNZ desplazamiento
ZF = 0. ; bifurcar si AX es distinto de 0
Si ZF = 1, no hay transferencia de control.

Ing. Sánchez Rivero Laboratorio de Computadoras – F. I. – U.N.Ju Pág. 8


INSTRUC DES CRIPCIÓN FORMATO EJ EMPLO

Bifurcar si no desbordamiento (overflow) ADD A L, BL ; AL = A L + BL


Transfiere el control a la instrucción (IP + desplazamiento) si se cumple la condición
JNO JNO desplazamiento JNO ETIQUETA ; bifurcar si no desbordamiento
OF = 0.
Si OF = 1, no hay transferencia de control. ; (overflo w)

JNP Bifurcar si no paridad


* Bifurcar si paridad impar (igual a JNP) JNP desplazamiento
Transfiere el control a la instrucción (IP + desplazamiento) si se cumple la condición JNP ETIQUETA ; bifurcar si paridad impar
JPO JPO desplazamiento
PF = 0.
Si PF = 1, no hay transferencia de control
Bifurcar si no signo/si positivo SUB A X, BX ; AX = AX – BX
Transfiere el control a la instrucción (IP + desplazamiento) si se cumple la condición
JNS SF = 0. JNS desplazamiento JNS ETIQUETA ; bifurcar a ETIQUETA si no signo,
Si SF = 1, no hay transferencia de control ; es decir si AX >=BX

Bifurcar incondicinalmente.
JMP Transfiere el control incondicionalmente al operando. JMP desplazamiento JMP ETIQUETA ; bifurcación directa a ETIQUETA

Bifurcar si desbordamiento (overflow) ADD A X, BX ; AX = AX – BX


Transfiere el control a la instrucción (IP + desplazamiento) si se cumple la condición
JO JO desplazamiento JO ETIQUETA ; bifurcar a ETIQUETA si desbord.
OF = 1.
Si CF = 0, no hay transferencia de control. ; (overflo w)

JP Bifurcar si paridad
* Bifurcar si paridad par (igual a JP) JP desplazamiento
Transfiere el control a la instrucción (IP + desplazamiento) si se cumple la condición JP ETIQUETA ; bifurcar si paridad par
JPE JPE desplazamiento
PF = 1.
Si PF = 0, no hay transferencia de control.

Bifurcar si signo SUB A X, BX ; AX = AX – BX


Transfiere el control a la instrucción (IP + desplazamiento) si se cumple la condición
JS SF = 1. JS desplazamiento JS ETIQUETA ; bifurcar a ETIQUETA si signo, es
Si SF = 0, no hay transferencia de control. ; decir, si AX < 0

Bucle hasta que se acabe el contador


Decrementa el registro contador (CX). Si CX es distinto de cero, entonces IP = IP +
LOOP LOOP desplazamiento
desplazamiento (expandiendo el signo a 16 bits). Si CX es cero, entonces se ejecuta la
siguiente instrucción.

LOOPE Bucle mientras igual


* Bucle mientras cero (igual a LOOPE) LOOPE desplaza miento
Decrementa el registro contador (CX) LOOPZ desplazamiento
LOOPZ Si ZF = 1 y CX <> 0, entonces IP = IP + desplazamiento
Si ZF = 0 o CX = 0, entonces se ejecuta la instrucción siguiente.

Ing. Sánchez Rivero Laboratorio de Computadoras – F. I. – U.N.Ju Pág. 9


INSTRUC DES CRIPCIÓN FORMATO EJ EMPLO
LOOPNE Bucle mientras no igual
* Bucle mietnras no cero (igual a LOOPNE) LOOPNE desplazamiento
Decrementa el registro contador (CX) LOOPNZ desplazamiento
LOOPNZ Si ZF = 0 y CX <> 0, entonces IP = IP + desplazamiento
Si ZF = 1 o CX = 0, entonces se ejecuta la instrucción siguiente.

Retornar de un procedimiento
Retorna de un procedimiento, previamente invocado mediante CALL, utilizando como RET ; retorno de procedimiento
RET RET [valor]
dirección de retorno la dirección salvada en la pila por CALL, que corresponde a la ; (no hay parámetros)
instrucción siguiente a dicha sentencia CALL.

5- Instrucciones de manejo de cadenas (strings): Realizan operaciones sobre series de bytes o palabras como mover, comparar y explorar.

INSTRUC DES CRIPCIÓN FORMATO EJ EMPLO


CMPS Co mparar cadenas de bytes o palabras CMPS destino, fuente
LEA SI, FUENTE ; SI = desplazamiento de FUENTE
LEA DI, DESTINO ; DI = desplazamiento de DESTINO
CMPSB * Co mparar cadenas de bytes (igual a CM PS) CMPSB destino, fuente
CMPS [DI], [SI] ; comparar FUENTE con DESTINO
JL PEPE bifurca si FUENTE < DESTINO
CMPSW * Co mparar cadenas de palabras (igual a CMPS) CMPSW destino, fuente
CLD ; DF = 0 (incrementar SI)
LODS Cargar cadena de bytes o palabras LODS cadena_fuente
LEA SI, FUENTE ; SI = desplazamiento de FUENTE
LODS FUENTE ; AL = FUENTE, o
LODSB * Cargar cadena de bytes (igual a LODS) LODSB cadena_fuente
LODSB FUENTE ; AL = DS:[SI], SI = SI + 1, o
LODSW FUENTE ; AL = DS:[SI], SI = SI + 2
LODSW * Cargar cadena de palabras (igual a LODS) LODSW cadena_fuente
; según FUENTE sea byte o palabra

MOVS Mover cadena de bytes o palabras MOVS destino, fuente CLD ; DF = 0


LEA SI, FUENTE ; SI = desplazamiento de FUENTE
LEA DI, DESTINO ; DI = desplazamiento de DESTINO
MOVSB * Mover cadena de bytes (igual a M OVS) MOVSB destino, fuente MOV CX, 100 ; CX = 100 (número de elementos)
REP MOVS [DI], [SI] ; mover los elementos indistintos, o
REP MOVSB [DI], [SI] ; mover los elementos de tipo byte, o
MOVSW * Mover cadena de palabras (igual a MOVS) MOVSW destino,fuente REP MOVSW [DI],[SI] ; mover los de tipo palabra

Ing. Sánchez Rivero Laboratorio de Computadoras – F. I. – U.N.Ju Pág. 10


INSTRUC DES CRIPCIÓN FORMATO EJ EMPLO
REP Repetir operación de cadena REP
MOV CX, 100 ; CX = longitud de las tablas
REPE Repetir operación de cadena, mientras igual REPE LEA SI, TA BLA1 ; SI = desplazamiento de TABLA1
; (segmento de datos)
REPNE Repetir operación de cadena, mientras no igual REPNE
LEA DI, TABLA 2 ; DI = desplazamiento de TABLA 2
REPNZ * Repetir operación de cadena, mientras no cero (igual a REPNE) REPNZ ; (segmento extra)
REP MOVS [DI], [SI] ; copiar elementos
REPZ * Repetir operación de cadena, mientras cero (igual a REPE) REPZ
SCAS Exp lorar cadena de bytes o palabras SCAS cadena_destino CLD ; DF = 0 (incrementar DI)
LEA DI, DESTINO ; DI = desplazamiento de DESTINO
SCASB * Exp lorar cadena de bytes (igual a SCAS) SCASB cadena_destino MOV CX, 100 ; CX = 100 (número de elementos)
MOV A L, 50 ; AL = 50 (valo r a buscar)
SCASW * Exp lorar cadena de palabras (igual a SCAS) SCASW cadena_destino REPE SCAS DESTINO ; explorar cadena
STOS Almacenar cadena de bytes o palabras STOS cadena_destino CLD ; DF = 0 (incrementar DI)
LEA DI, DESTINO ; DI = desplazamiento de DESTINO
STOSB * Almacenar cadena de bytes (igual a STOS) STOSB cadena_destino STOS DESTINO ; DESTINO = A L o A X, o
STOSB DESTINO ; AL = ES:[DI], DI = DI + 1, si byte
STOSW * Almacenar cadena de palabras (igual a STOS) STOSW cadena_destino STOSW DESTINO ; AX = ES:[DI], DI = DI + 2, si palab

6- Instrucciones de interrupción: Provocan la interrupción del microprocesador para que realice un servicio determinado.

INSTRUC DES CRIPCIÓN FORMATO EJ EMPLO


Interrupción. Interru mpe el procesamiento y transfiere el control a uno de las 256
direcciones (vector) de interrupción empezando en el segmento 0, desplazamiento
0. realiza lo siguiente: (1) guarda el la pila las banderas y restablece las banderas IF
INT INT tipo_interrupción INT 23 ; interrupción 23
y TF; (2) guarda el la p ila el CS y co loca la palabra de orden alto de la dirección
de interrupción en el CS; y (3) guarda en la pila el IP y llena el IP con la palabra de
orden bajo de la dirección de interrupción.
Interru mpe un desbordamiento. Provoca una interrupción (generalmente
inofensiva) si ha ocurrido un desbordamiento (la OF está en 1) y realiza una INT ; provoca una interrupción si el señalizador OF
INTO INTO
04h. La dirección de interrupción está en la localidad 10h de la tabla de servicio de =1
interrupción.
Retorno de interrupción. Realiza el siguiente procedimiento: (1) saca de la pila la
palabra de la parte superior de la p ila al IP, incrementa en 2 el SP y saca de la parte
IRET
superior de la pila al CS; (2) incrementa en 2 el SP y saca de la p ila al registro de IRET ; retorno de interrupción
IRETD
bandera. Este proceso deshace los pasos de la interrupción or iginal y realiza un
regreso.

Ing. Sánchez Rivero Laboratorio de Computadoras – F. I. – U.N.Ju Pág. 11


7- Instrucciones de control del microprocesador: Activan y desactivan banderas y cambian el estado de ejecución del microprocesador.

INSTRUC DES CRIPCIÓN FORMATO EJ EMPLO


CLC Borrar bandera de acarreo CLC CLC ; CF = 0
Borrar bandera de dirección
Poner a 0 la bandera de dirección (DF), por lo que en la ejecución de ; incrementar índices en
CLD CLD CLD
las instrucciones de manejo de cadenas los registros índices SI y/o DI ;instrucciones de manejo de cadenas
se autoincrementan de modo automático
; desactivar interrupciones
CLI Borrar bandera de interrupción CLI CLI
;enmascarables
Co mplementar bandera de acarreo
CMC CMC CMC ; complementar CF
Pone la bandera de acarreo en el estado contrario.
WAIT ; esperar a que el coprocesador
; acabe con la operación en curso
ES C Escape (transmitir in formación a un coprocesador) ES C código, fuente
ES C 21h, TA BLA ; bus de datos = contenido de
; TABLA
HLT Parar el p rocesador HLT HLT ; para el procesador
; ejecuta la instrucción completa sin
posibilidad de ser interru mp ida por
LOCK Impide acceso al bus. LOCK instrucción LOCK SCHG AX, M EM
una petición del bus de otro
maestro.
NOP No operación. NOP NOP ; no realiza ninguna operación

STC Poner bandera de acarreo STC STC ; CF = 1

Poner bandera de dirección


Poner a 1 la bandera de acarreo (DF), por lo que en la ejecución de las ; decrementar índices en
STD STD STD
instrucciones de manejo de cadenas los registros ínidces SI y/o DI se ;instrucciones de manejo de cadenas
autodecrementan de modo automático
; activar interrupciones
STI Poner bandera de permitir interrupciones STI STI
; enmascarables
WAIT ; esperar a que el coprocesador esté
WAIT Esperar que acabe un coprocesador WAIT ; disponible
ES C 21h, TA BLA ;pasar información al coprocesador

Ing. Sánchez Rivero Laboratorio de Computadoras – F. I. – U.N.Ju Pág. 12


DIRECTIVAS
Las directivas o pseudooperaciones se pueden dividir en cuatro grupos funcionales:

1.- Directivas de Datos 3.- Directivas de Listado

2.- Directivas Condicionales 4.- Directivas de macros (no incluidas)

1- DIRECTIVAS DE DATOS: A su vez se dividen en las categorías siguientes:

Definición de Símbolos: sirven para asignar nombres simbólicos a expresiones. Una vez definido el símbolo se puede usar dicho símbolo
en lugar de la expresión equivalente.

DIRECTIVA DES CRIPCIÓN FORMATO EJ EMPLO


COLUM NAS EQU 80 ; longitud de una línea
FILAS EQU 25 ; número de filas
Asigna un símbolo a una expresión fija PANTA LLA EQU FILAS* COLUM NAS ; tamaño de la pantalla
La utilidad de esta directiva reside en hacer
EQU nombre EQU expresión CR EQU 13 ; retorno de carro
más claras las sentencias fuentes
ensamblador. LF EQU 10 ; alimentación de línea
CONTA DOR EQU CX ; nombre alternativo de CX
MOVER EQU M OV ; nombre alternativo de MOV

Asigna un símbolo a una expresión fija VA LOR = 10 ; nombre de la constante 10


= Es similar a EQU, excepto que “nombre” nombre = exp resión VA LOR = VA LOR + 1 ; utiliza la defin ición anterio r, ahora
puede redefinirse. ; VALOR es 11

Ing. Sánchez Rivero Laboratorio de Computadoras – F. I. – U.N.Ju Pág. 13


Definición de Datos: sirven para reservar memoria para las variables del programa. Opcionalmente se puede dar un valor inicial a cada
variable.

DIRECTIVA DES CRIPCIÓN FORMATO EJ EMPLO


VA LORES DB 30, -15, 20
MAXSS DB 255 ; número máximo sin signo
Definir byte DB 0Dh ; retorno de carro
DB Reserva memoria para una variable tipo byte [variable] DB exp resión [,...]
(8 bits) DB 12 * 3 ; expresión de constantes
DB 4 DUP (0) ; es equivalente a DB 0,0,0,0
DB 4 DUP (3 DUP (4),7) ; es equivalente a DB 4 DUP (4,4,4,7)
VA LORES DW 300, -150, 2000
Definir pal abra MAXSS DW 65535 ; numero máximo sin signo
DW Reserva memoria para una variable tipo [variable] DW expresión [,...] DW 120 * 3 ; expresión de constantes
palabra (16 bits) DW 4 DUP (0) ; es equivalente a DD 0,0,0,0
TABLA DW 4, ?, 650 ; no se define el segundo valor

VA LORES DD 300, -150, 2000


Definir doble palabra MAXSS DD 4294967295 ; numero máximo sin signo
DD Reserva memoria para una variable tipo [variable] DD expresión [,...] DD 120 * 3 ; expresión de constantes
doble palabra (32 bits) DD 4 DUP (0) ; es equivalente a DD 0,0,0,0
TABLA DD 4, ?, 650 ; no se define el segundo valor

VA LORES DQ 300,-150,2000
Definir cuádruple pal abra MAXSS DQ 18446744073709551615 ; número máximo sin signo
DQ Reserva memoria para una variable tipo [variable] DQ expresión [,...] DQ 120 * 3 ; expresión de constantes
doble palabra (64 bits) DQ 4 DUP (0) ; es equivalente a DQ 0,0,0,0
TABLA DQ 4,?,650 ; no se define el segundo valor

Definir diez bytes NMAS DT 0123456789 ; reserva 10 bytes


Reserva diez bytes de memoria para
DT [variable] DT exp resión [,...] ; equivale a
almacenar dígitos decimales empaquetados
(dos dígitos decimales por byte) NMAS DB 00h,4 DUP(?),01h,23h,45h,67h,89h

Ing. Sánchez Rivero Laboratorio de Computadoras – F. I. – U.N.Ju Pág. 14


Control del Ensamblador

DIRECTIVA DES CRIPCIÓN FORMATO EJ EMPLO


Fin del módulo fuente END ; fin del modulo fuente
END El operando “expresión” indica la dirección de comienzo del programa fuente. END [exp resión]
Normalmente, se especifica una etiqueta. END EMPEZA R ; fin del módulo fuente principal

Definición de segmentos y procedimientos

DIRECTIVA DES CRIPCIÓN FORMATO EJ EMPLO


nombre S EGMENT PILA S EGMENT STACK ; comienzo segmento PILA
SEGMENT Comienzo de segmento
...
Fin de segmento o fi n de ...
ENDS nombre ENDS
estructura PILA ENDS ; fin segmento PILA
DATOS SEGM ENT ; comienzo segmento DATOS
...
...
DATOS ENDS ; fin segmento DATOS
ASSUME reg_seg:nom_seg[,...]
ASSUME Suponer registro de segmento o
CODIGO SEGM ENT ; comienzo segmento CODIGO
ASSUME NOTHING
ASSUME CS:CODIGO,DS:DATOS,ES:NOTHING
...
...
CODIGO ENDS ; fin segmento CODIGO
PROC Comienzo de procedi miento nom_proc PROC [atributo]
PROC1 PROC FAR ; comienzo procedimiento
...
ENDP Fin de procedi miento nom_proc ENDP ...
RET
PROC1 ENDP ; fin procedimiento

Ing. Sánchez Rivero Laboratorio de Computadoras – F. I. – U.N.Ju Pág. 15


2- DIRECTIVAS CONDICIONALES:

DIRECTIVA DES CRIPCIÓN FORMATO EJ EMPLO


IF condicion1
....
If [condición]
....
....
IF condicion2
If ....
Sirven para que el ensamblador incluya o ignore ciertas porciones del programa ....
ELS E [ELS E
fuente, según que una cierta condición sea cierta o falsa en tiempo de ensamblaje. ....
ENDIF ....
ENDIF
....]
...
ENDIF
...
ENDIF

3- DIRECTIVAS DE LISTADO: indican al ensamblador la información a obtener en el listado de salida y el formato de esa información.

Formato de Listado

DIRECTIVA DES CRIPCIÓN FORMATO EJ EMPLO


PAGE ; 66 líneas de 80 caracteres
PAGE 88, 132 ; 88 líneas de 132 caracteres
PAGE Formato de la página del listado PAGE [op1][,op2] PAGE 88 ; 88 líneas de 80 caracteres
PAGE ,132 ; 66 líneas de 132 caracteres
PAGE + ; nuevo capítulo

Títul o del listado


Especifica un título que aparecerá en el listado como primera línea en cada
TITLE ESTRUCTURAS DE HORMIGON
TITLE TITLE texto El nombre del módulo objeto generado será ESTRUC.OBJ
página

Subtítul o del listado


SUB TTL Especifica un subtítulo que aparecerá en el listado como segunda línea en SUB TTL texto SUB TTL CA LCULO DE ESFUERZOS
cada página, detrás del título.

Ing. Sánchez Rivero Laboratorio de Computadoras – F. I. – U.N.Ju Pág. 16


Comentarios

DIRECTIVA DES CRIPCIÓN FORMATO EJ EMPLO


Comentario COMMENT * Esto es un comentario que puede ocupar muchas líneas de texto.
Permite insertar comentarios en
....
COMMENT el programa sin tener que COMMENT delimitador texto delimitador
especificar el carácter “;” en ...
cada línea hasta que vuelva a aparecer el carácter in icial, en este caso, *

La cátedra agradece la colaboración de la profesora Laura Garay, docente de la UCSE- DASS, para la realización de esta guía.

Ing. Sánchez Rivero Laboratorio de Computadoras – F. I. – U.N.Ju Pág. 17