Vous êtes sur la page 1sur 16

I

I

I

V etq r)

€,fu

Gntpo de Arquitectt¿ra. de Computadores y Diseño li§co. UEX. I997

http!/tatc.unex.es/gacdl

Repertorio de instrucciones del 8086/8088

Germán Galwzzo Gil. Juan A, Góme: Puildo

Descripción: Pone a 0 la bandera de direción (DF), por lo que en la ejecución de las instrucciones de manejo de cadenas los registros índices Sl y/o Di se autoincrementan en una unidad si el (los) operando(s) son de tipo byte, y en dos, si son de tipo word.

CLI - Borrar {desactivar) bandera de interrupc iones (Ctear lntenupt Ftag)

uso: CLI

Flags que modifica: lF

Descripción: Borra la bandera de activación de interrupciones (lF) y desactiva las inlerrupciones enmascarables (las que aparecen sobre la línea INTR del procesador). Las interrupciones enmascarables se pueden activar (permitir) o desa'ctivar (no permilir). Las intenupciones no

enmascarables (las que apare€n sobre la llnea NMI) no se pueden desactivar.

CMC - Complementar bandera de acarreo (Comptement Carry Ftag)

Uso: CMC

Flags que modifica: CF

Descripción: Complementa la bandera de acarreo (CF): es decir, la pone en el estado contrario.

CMP -

Comparar dos operandos (Compare)

Uso: CMP dest,src

F¡ags qu€ modifica: AF CF OF PF SF ZF
'

Descripción: Resta fuenle de destino, pero no retoma el resultado. Los operandos quedan ¡nallerados,

' pero las banderas se actual¡zan, pudiéndose consultar a continuación mediante una

instrucción de bifurcación condicional. Los operandos pueden ser de tipo byte o palabra, pero arnbos del mismo tipo.

CMPS - Comparar cadenas (Compare String -Byte, Word or Doubleword)

Uso.' CMPS dest,src CMPSB CMPSW

Flags que modifica: AF CF OF PF SF ZF

Descripción: Sirve para comparar dos operandos de memoria (t¡po byte o palabra). Para ello realiza la operación:

Cadena fuente - cadena destino

afeclando a las banderas, pero sin almacenar el resultado. La cadena fuente está direccionada por Sl en el segmento de datos, es decir, DS:[Sll. La cadena dest¡no está d¡rec¡onada por Dl en el segmento extra, es decir, ES:[D!]. Los registros Sl y Dl se actualizan para que apunlen al siguiente elemento de la cadena. Si la bandera de dirección es cero (DF=0), ambos Sl y Dl se ¡ncrementan. Si DF=1, ambos se decrementan.

En la instrucción CMPSB, se realiza la resta entre bytes DS:[Slt - ES:[Dll.

En la instrucción CMPSW. se realiza la resta entre palabras DS:[Sll - ES:[D|].

"

'

:,

CWD - Convertir palabra en doble palabra (Convert Word to Doubleword)

Uso.' CWD

Flags que modifica; Ninguno

Descripción: Expande el bit de signo del registro AX (bit 15) sobre el registro DX.

DAA - Ajuste decimal 6n suma (Decimal Adjust for Addition)

Uso.'DAA

Flags que modifica: AF CF PF SF ZF (OF indefinidos)

zL

Grupo de Arquitecfura de Computadores y Diseño Lógico. L|EX. 1997. llttp:l/atc.unex.es/gacdl

Repertorio de iwtrucciones del 8086/8088

Germán Galeano Gil. Juan A. Gótne: Puildo

Descripción: Conige el resultado en AL de la suma de dos números decimales empaquelados,

conürtiéndolo en un valor decimal empaquetado.

DAS - Ajuste deeimal en resta (Decimal Adiust for Subtraction)

Uso: DAS

Flags que modifica: AF CF PF SF ZF (OF indefinidos)

Descripción: Conige el resultado en AL de la resta de dos número decimales empaquelados,

convirt¡éndolo en una valor decimal empaquetado.

DEC - Decrementar destino en uno (Decremenl)

Uso: DEC dest

Flags que modifica: AF OF PF SF ZF

Descripción: Resta una unidad del operando destino. El operando puede ser byte o palabra.

DIV - División (Divide)

Uso: DIV src

Flags que mod¡fica: (AF,CF,OF,PF,SF,ZF indefin¡dos)

Descripción: Dividie, sin considerar el s¡gno, un número contenido en el acumulador y su extensión (AH, AL si el operando es de t¡po byte o DX,AX s¡ el operando es de t¡po palabra) enlre el operando fuente. El cocienle se almacena en el acumulador (AL o AX, según que el operando fuente sea de tipo byte o palabra). El resto se almacena en la extensión del acumulador (AH o DX, según que el operando fuente sea de tipo byte o palabra).

ESC - Escape (Escape)

Uso: ESC immed,src

Flags que modifica: Ninguno

'

Descripción: Esta instrucc¡ón suminista un rnecanismo de comunicación con otros coprocesadores. Se

usa para indicar a un coprocesador que comienza a realizar alguna tarea. A su vez, el

8086/8088 continúa ejecutando la inslrucción siguiente. Se usa en combinación con WAIT.

El primer operando es un valor inmedialo de 6 bits (0 a 63) y sirve para denotar, a la vez, al coprocesador y la operación a ejecutar. El segundo operando es tipo regislro o memoria y

especifica el dato a pasar al coprocesador.

HLT - Detener CPU - (Hatt CPU)

Uso: HLT

Flags que modifica: N¡nguno

':i Descripción: El procesador se para. Sólo abandona ese estado en uno de estos casos:

- Se restaura el sislema (adivación de la lfnea RESET).

- Se recibe una interrupción no enmascarable sobre la línea NML

- Se recibe una intenupción enmascarable sobre la línea INTR (si las interrupciones están

r

permitidas).

]

Grupo de Arquitecflu'a de Conzputadores.v Diseño Lógico. UEX. 1997

http:iiatc.unex esigacdl

Repertoio de instraceiones del 8086/8088

Cermán Gal*ano Gil. Juan A. Cótnez Puildo

lDlV - Dividir con s¡gno (Signed tnteger Division)

Uso: lDlV src

Flags que modifica: (AF,CF,OF,PF,SF,ZF indefinidos)

Descripción: Divide, considerando el signo, un número conlenido en el acumulador y su extensión

(AH, AL si el operando es de tipo byte o DX, AX si es de lipo palabra) enlre el operando fuente. El cociente se almacena en el acumulador (AL o AX, según que el operando fuente sea de l¡po byte o palabra). El resto se almacena en la extensión del acumulador (AH c DX, según que el operando fuente sea de tipo byte o palabra).

IMUL - Multiplicar con s¡gno (Signed Multiply)

Uso: IMUL src

Flags que modifica: CF OF (AF,PF,SF,ZF indelinidos)

Descripclón: Multiplica, considerando el signo, el acumulador (AL o AX) por el operando fuente, según que el tipo de este operando fuenle sea byte o palabra. Si el operando tuente es de tipo byte,

el resultado se almacena en AX. Si el operando fuente es de tipo palabra, el resultado se

almacena en AX (palabra inferior) y DX (palabra superior).

lN - Entrada de byte o palabra ¡tnput áyte or Word From Port)

Uso: lN

accum,puerlo

Flags que modifica: Ninguno

Descripción: Transfiere un byte o una palabra de una puerta de entrada del procesador al registro AL o AX, respectivamente. El número de la puerta se puede especif¡car mediante:

- un valor fijo (de 0 a 255).

- un valor variable, el contenido en

acceder a 64K

puertas de entrada.

el registro DX (de 0 a 65535), pudiéndose

¿

INC - lncremcnto (lncrement)

Uso: INC dest

Flags que modiñca: AF OF PF SF ZF

tlescripción: Sunra una unidad del operando desüno. El operando puede ser byte o palabra.

INT - lntem¡ pcaón (lrrterupt)

Uao: INT num

Flags que modifica: TF lF

pgscripción: INT activa el proced¡m¡ento

''i

de intemrpción especificado por el operando. La dirección del

vector de interupción se calcula multiplicando por 4 el operando, que es un vator entre 0 y

255. El vector de interrupción se compone de dos palabras: desplazamiento y segmento. Se

bifurca a la dirección especificada por el vector de intemrpción, salvando preüamente las

banderas y la dirección de retomo (CS,IP).

INTO * lnterrupción si desbordam¡ento (lntemtpt on Oveñow)

Uso: INTO

Flags que modifica: lF TF

Descripción: Genera una interrupción üpo 4 si exisle desbordamienlo

caso confrario se cont¡núa

procedimiento de intenupción.

la

es decir, si OF= t. En

ejecución con la instrucción siguiente, sin ejecutar el

{overfloul¡,

L3

Grupo de Arquitectura

Repeñorio de instrucciones det 8086/8088

de Computadores

¡;

Diseño Lógtco. UEX. 1997. http)iatc'unex'esigacdl

Germán Galeano Gil luan A' Gómez Puildo

IRET - Retornar de una interrupciÓn (lntenupl Return)

Uso: IRET

Flags que modifica: AF CF DF lF PF SF TF ZF

Descripción: Dewdve el control a la d¡rección

interrupción previa y restaura los

Procedimiento de

intenuPción

de retomo salvada en la pila por una op-eración de

registros de banderas. IRET se utiliza para finalizar un

j

Jxx - Saltos cond¡cionales Conditional Jumps

lnstrucción

JA

JAE

JB

JBE

JC

JCXZ

JE

JG

JGE

JL

JLE

JNA

JNAE

JNB

JNBE

JNC

JNE

JNG

JNGE

JNL

JNLE

JNO

JNS

JNZ

JO

JP /JPE

JPO/JNP

JS

JZ

Dsscriocién

Saltar

si Superior

Saltar

Superior o lgual

Saltar si lnferior Saltar si lnferior o lqual

Saltar si hav acarreo

Saltar si CX es cero Saltar lqual Saltar si Mavor (con siqno) Saltar si Mavor o lqual (con signo) Saltar si Menor (con signo) Safiar si Menor o lgual (con signo) Saltar si No Superior Saltar si No SuPerior o lgual Saltar si No lnferior

Saitar

si No lnferior o lqual

Saltar

si No hay acaneo

Saltar si No lqual

Saltar

Sáltar si No Mavor o lqual (con signo) Sattar si No Menor (con signo) Saltar si No Menor o lgual (con signo) Saltar si No Overflow (con signo) Saltar si Positivo

si No Mayor (con signo)

Saltar si No Cero Saltar si Overflow Saltar si Par Saltar si lmoar Saltar si neqativo Saltar si cero

t a r si Overflow Saltar si Par Saltar si lmoar S a l t a

(con signo)

(si hay signo)

G<¡ndición,de.salto

§6=Q y lF=O

CF=0

CF=1

CF=1 oZF=1

CF=1

CX=0

7F=1

ZF=0 y SF=OF SF=OF SF != OF ZF=1 o SF l= OF

CF=1 oZF=1

CF=1

CF=0

CF=O y ZF=0

CF=0

7F=0

ZF=1 o SF != OF

SF != OF SF=OF ZF=Ov SF=OF

OF=0

SF=0

ZF=O

OF='1

PF=1

PF=0

SF=1

ZF=1

JCXZ- Bifurcar si CX es crlro (Jump if Register CX is Zero)

'ú"o, JCXZ label

Flags que mod¡l¡ca: Ninguno

Descripción: fransfiere el control a la instrucción lP + desplazamiento si se cumple la condiciÓn de CX

transferencia de control. El desplazamineto debe estar comprendido

= 0. Si CX no es O, no hay

entre-128 y +'127'bytes áe esta inslrucción, es dec¡r, desplazamiento es un valor con signo de

8 bits (1 bYte).

r

JMP - Salto incondicional (uncondit¡onal Jump)

'

Uso: JMP dirección

Flags que modifica: Ninguno

Descripción:

Transfiere el control incondicionalmente a la direcciÓn ind¡cada. El salto puede ser

@rcano (dentro del mismo segmento) o ¡ejano (a otro segmento)'

Grupo de Arquitectura de Computadores y Diseño

Repertoio de instrucciones det B0t6/t08t

Lógico. L|EX. 1997.

Germán Galeano Gil-

ht tp ! i,ia tc. unex. e siga c dI

Juan A. Gó¡ne: Puildo

LAHF - Cargar AH con banderas {Load Register AH From Flags)

Flags que modif¡ca: Ninguno

Descripción: Copia tas banderas SF, zF, AF,

PF y CF en los bits 7,6, 4,2 y 0, respectivamente conlenido de AH queda, entoáces, así:

registro AH. Los otros bits quedan indefinidos. El

AH é SF ZF xx AF ¡o< pF n« CF

del

LDS - Cargar registro de segmento de datos (Load pointer Llsing DS)

Uso: LDS dest,src

Flags que modifica: Ninguno Descripción: Transfiere un

puntero de 32 bits (direccién completa compuesta por desplazamiento y

correspondiente al segundo operando (que debse sei un operandó

segmento, en este orden)

de memoria de doble palabra).

LEA - Cargar dirección efectiva (Load Effective Address)

Uso

LEA dest,src

Flags que mod¡f¡ca: N¡nguno

Descripción: Transfiere

el desplazamiento del operando fuente al operando destino. El

operanclo

palabra). EI operando destino ei un regísfro

fuente debe ser un operando de memoria (byte o

de 16 bits, pero no un registro de segmento. Permite

operando fuente, al contrario que con el operador OFFSET.

especificar registros lno¡ces en el

LES - Cargar reg¡stro de segmento extra (Load pointer lJsing ES)

Uso: LES dest,src

Flags que modlfica: Ninguno Descripción: Transfiere un

puntero de 32 bits (dirección corñfleta compuesla por

desplazam¡ento y

segrnento, en este orden)

correspondiente al segundo operando (que ciebe sei un operandó

de memoria de doble palabra).

LOCK - Bloquear el bus (Lock Bus)

Uso: LOCK

Flags que modffica: Ninguno Descripcién: L0CK es un prefjo de un

byte que acompaña a una ¡nstrucción y que activa la señal

se ejecuta; es decir, impide

comparlidos por éstos. En

LOCK míentras dicha ínstrucción

la ut¡t¡zacíon oá oü"-po, otro"

procesadores, impidiendo de esta forma el acceso a los iecursos

sistemas de múltiples procesadores con recursos compartidos es necesario un mecanismo de

.]

LODS - Cargar cadena (Load String - Byte, Word or Doubte-)

Uso: LODS src

LODSB

LODSW

Flags que mod¡f¡ca: Ninguno

Descripción: Tralsfiere un byte o una palabra de la cadena

fuente (clireccionada por DS:SI) al registro

apunte al siguünte eeníento ce la

acumulador AL o AX. Actualiza el registro Sl para que

cadena iElXit;*rndo es de ripo byre, se transfiere un b)fte y er registro st cambia una

unidad. Si el operando es

de tipo palabra, se transfiere una palabra y el registro Sl cambia

dos unidades.

31

Grupo de Arqaitecfura de Computadores -v Diseño

Repertorio de inst¡ucciones del 8086/8088

Lógico. L|EX. 1997.

Ger¡nán Galeano Gil.

http : //atc. unex. e s/gacd I

Jtmn'A. Gómez Puildo

- si la bandera de dirección es cero (DF=o), sl se incrementa- DF='|, se

decrementa (véanse las instrucciones CLD y STD)'

En ta ¡nstrucción LODSB se transfiere el byte

unidad- En la instrucción LODSW se transfiere en dos unidades.

DS:(S|) al registro AL. Sl se actuEliza en una

la palabra DS:(S|) al registro AX. Sl se actualiza

El operando especificado

(byte o páUOri) y

reatmenÉ á

la instrucción.

en LODS lo utiliza el ensamblador úni@mente para verificar el tipo

de segmento. LODS rru¡eve

para ver si se ha especificado un-registro

OÉá'pataUra de DS:(SI) al iegistro AL o AX, sin

usar realmente el operando de

LOOP - Bucle (Deuement CX and Loop if CX Not ZerQ

Uso: LOOP label

Flags que modifica: Ninguno

Descripción: Decrementa el reg¡stro contador

(CX). S¡

desplazamiento (expanáiendo

sigu¡ente instrucción.

el

signo a 16

CX es distinto de cero, entonces lP = lP + bits)- si cX es cero, entonces se ejecuta la

El desplazamiento

decir,

debe estar comprend¡do entre -128 y +'lt'7 bytes de esta instrucción' es

áesplazamiento es un valor con signo de 8 bits (1 byte)'

Medianle esta ¡nstruccién

instrucciones que §e

es posible ¡mplementar bucles' Un bucle es un coniunlo de

eiecutan una §er¡e de veces- El esquema es el siguiente:

MOv Cx,contadoil

BUCT,E:

Cx = número de veces que se va a

; ejecutar eI bucle'

Cx =cx-l

;sicxÉ0

ybifurca a BÜCIE

"Oor""u""g,

Es posible realiz?l. bucles anidados, es decir,

uno dentro de otro. El esquema para dos bucles

es:

Mov cx,conLadorl ; cx : contador

bucle I

BUCLE1: - - .

 

PUSH CT

MOv C:{,contador2

BUCLE2:

, salvar

; = cStltador bucle 2

Cx

cx

ioóp "u.t"z

cx

:::

iáó" uuc""r

cx = CX-l y bifurca

; ; SAUÁFU

; recuperar CX

; CX = CX-1 y bifurca

; sic;{*0

a BL'CLE2

a BUCLEI

LOOPE LOOPZ - Bucle s¡ ¡gual / Bucle s¡ cero (Loop While Equal / Loop tlvhile Zero)

\

L

Uso: LOOPE label LOOPZ label

ÉÉg" qu" modifica: Ninguno

Descripción:

Decrementa el reg¡stro contador (CX). Si ZF = 1 y CX es disiinto de cero, entonces lP =

CX = O,

lp

+ desplazamiento (e-xpandiendo el signo del desplazamiento a 16 bits). Si ZF = 0

-o

EI desplazamiento debe estar comprendido

entoncej se ejecula lá instrucción siguiente.

12gy +121 b¡es de esta instrucción, es

ente -

decir, desplazamiento es un valor con signo

de I bits

(1 byte).

LOOPNZ - Bucle si no cero (Loop lNhile Not Zero) LOOPNE ucle si dist¡nto (Loap ttwtile Not Equal)

Uso: LOOPNZ label LOOPNE label

Flags que modifica: Ninguno

Gntpo de ArqaitecttÍa de Comptttadores y- Diseño Lógtco. UEX. 1997. http://atc.unex.esigacdl

Repertorio de instrucciones del 8A86/8088 Germátt Galeano Gil- Juan A- Góme: Puildo

Descripción:

Decrementa el registro contador (CX).

(eipandiendo et signo

Si ZF = O

y CX es distinio de cero, entonces lP =

lp + desplazamiento

entonces se ejecuia la instrucción siguiente'

El clesplazamiento

decir,

del desplazamiento a 16 bits). Sl ZF = 'l o CX = 0,

debe eslar comprencl¡do entre -128.y +127 bytes de esta instrucciÓn' es

desplazam¡ento es un valor con signo de 8 bits (1 byte)'

ItllOV -ttllover (Move Byte orWord)

Uso: MOV dest,src

Flags que modifi€: Ninguno

Descripción:

Transfiere un byte o una palabra ctesde el. operando

o. un elemento

fuente al operando destino- El

de memoria (byte o palabra). El

operando destino puáde se, un registro

operando fuente püede ser un registro, un

operandos

gl

elemento de memoria o un vaior ¡nmed¡ato. Ambos

debe ser del mismo tipo (byte o palabra)'

conteniOo éspecif¡cado por ét etemento

fuente se copia sobre el elemento de destino,

quedando inalterado el elemento fuente'

MOVS - ñllover cadena (Move String - Byte orWord)

Uso: MOVS dest'src

MOVSB

MOVSW

Flags que modifica: Ninguno

Descripción: Transfiere un byte o una palabra

de datos a la cadena de

Actualiza

de la cadena fuente (direccionada por Sl) en el

destino (direccionada por Dl) en el segmento extra.

segmento

un byte y los regisiros Sl y Dl cambian una

Si los operandjs son de-tipo

uniOaO.-Si fos operando son

cambian dos unidades.

Si la bandera de direcc¡ón es cero (DF = 0), ambos.Sl y Dl se incrementan- Si DF = '!. ambos se decrementan (véanse las instrucciones CLD y STD)'

En la ¡nstrucctón MQVSB, se transfiere el byte DS:[SI] a ES:[Dli. En la instrucción MOVSW' se transfiere la palabra DS:[SI] a ES:[D|]'

Los operandos especificados en MOVS los utiliza el ensamblador Únicamente para verifcar el

restlqo_dg segmento. MOVS mueve

tipo (6yte o palabia)

los registros Sl y Dl para que apunten al siguiente elemento de la cadena:

byte, se transfiere

detipo palabra, se transf¡ere una palabra y los registros Sl y Dl

y para ver si se ha especificarln

redmehte et

O¡e'o tá pabOra apuntada

por DS:[Sll a ES:[D|], sin usar realmente los

,n

oPerandos cle la instrucciÓn-

Cuando se usa oon REP, se realiza una transferencia de una cadena completa (de bytes o de palabras), siendo el número de elementos a mover el especificado en el registro CX.

En MOVS se puede reasignar el elemenlo fuente, pero no el dest¡no; es dec¡r, se puede

especificar'porejemplo' MovsDEST'N

ES:FUENTE

En esle caso, habría mismo segmento.

una transferencia de un elemento del segmento, direccionado por ES, al

Para mover elementos dentro del segmento direccionado por DS' habría

que hacer ES = DS'

ItllUL - Multiplicar sin signo (Unsigned Multiply)

Uso: MUL src

Flags que modiflca: CF OF (AF,PF'SF,ZF indefinidos)

Descripción: Multiplica, s¡n cons¡derar el signo, el acumulador (AL o AX) por el operando tuente, según

que el tipó Oe este operando

óáluOr",

Ll resultado sL

tueñte sea byte o patabra. Si

operando fuente es de tipo

atmacena en Ax (palabra ¡nfer¡or) y DX (palabra superior)- Si la mitad

DX para el caso de operando

.el.

lupertoi del resultado

fipb pahbra) no es ceü,

(AH para el caso operando tiOg!{e 9

sé activan las banderas CF y OF, ind¡cando que esla m¡tad super¡or

contiene dígitos significativos del resultado'

35

Grupo de ArqttitecÍura de Computadores y Diseño Lógico. IJE.Y, 1997. http:i/atc.unex.eslgacdl

Reperlorio de instruccion¿s del 8086/8088

Germán Galeano Gil. J¡mn A. Gómez Puildo

NEG -

Complemento a dos (Two's Comptement Negafion)

Uso: NEG dest

Flags que modif¡ca: AF CF OF PF SF ZF

Descripción: Calcula el valor negativo del operando, es decir, resta el operando de cero y devuelve el

'

resullado en el mismo operando (byte o palabra). Para hacef esto, el

resta del número compuesto por todo unos y se le añade 1. Esto es lo mismo que el

operando destino se

complemento a 2 del número.

NEG destino es equivalente a las instrucciones

NOT destino

INC dest¡no

NOP - No operación (No Operation -90h)

Uso: NOP

Flags que modif¡ca: Ninguno

Descripción: El procesador no hace nada. Pasa a ejecutar la instrucción siguiente-

NOT - No lógico (One's Compliment Negation -Log¡cat NOT-)

Uso-' NOT dest

Flags que modifica: Ninguno

Descripcién: Cambia los bits unos por ceros y los bits ceros por unos, es decir, realiza el complemento a uno del operando y devuelve el resultado en el mismo operando (byte o palabra).

OR * O lógico inclusivo (nctusive Logicat OR)

Uso: OR dest,src

Flags que modifica: CF OF PF SF ZF (AF indefinidos)

Descripción: Realiza la operación "o lógico inclusivo" a

t-

nivel de b¡t entre los dos operandos. El

resultado se almacena en destino.

La tabla de la operación OR (para las cuatro combinaciones posibles de bits) es:

oú2,.

gé§t

0

0

0

0

1

o

1

1

OUT; Salida de byte o pa¡abra (Output Data to Port)

,

Uso: OUT port,accum

Élags que modlflca: Ninguno Descripción: Transfiere un byte o una palabra del registro.AL o AX a una puerta de salida del

procesador. El número de la puerta se puede especÍficar mediante:

Ir

t

- un valor fijo (de 0 a 255); - un valor variable, el contenido en el regístro DX (de 0 a 65535), pudiéndose acceder a 64K puertos de salida.

OUTS - Salida de cadena (Output String to port) (80188+)

Uso: OUTS port,src OUTSB OUTSW

Flags que modifica: Ninguno

10

---------)j

Grupo de Arquitectura de Computadorcs y Diseño

Repertorio de instrucciones del 8086/8088

Lógtco. UEX, 1997.

Germán Galeano Gil.

h up ! r1atc. un ex. e s/gacdl

Juan A. Gémez Puildo

Descripción: Transfiere un byte (OUT§B) o un urord (OUTSW) desde src al puerto

especificado. En las

instrucciones OUTSB y OUTSW el operando se encuentra en DS:SI, y el registro Sl se

inbrementa o decrementa con el tamaño del dato leído según el valor del flag DF.

POP - Quitar palabra de la pila (Pop Word off Stack)

Uso: POP dest

Flags que modifica: Ninguno

Descripción: Transfiere el elemento (tipo palabra) que se encuentra en lo alto de la pila (apuntando por

el regislro SP) al operando destino (tipo palabra), y luego incrementa en dos

el registro SP. El

la func¡ón

registro CS no se puede especificar como destino. La instrucción que realiza

opuesta de POP es PUSH.

POPA - Quitar registros de la pila (Pop Alt RegisteÍsontoslacg (80188+)

Uso: POPA

Flags que modifica: Ninguno

Descripción: Transdiere los I regislros de propósito general desde la pila, en el siguiente orden: Dl; Sl; BP; SP, DX, CX y AX.

POPF - Quitar banderas de la pila (Pop Flags off Stack)

Uso: POPF

Flags que modiflca: all flags

Descrlpción: Transliere biis especíñcos de la palabra que se encuentra en lo alto de la pila (apuntado por el registro SP) a las banderas, reemplazando así los valores que contenían previamente. El reg¡stro SP se incrementa luego en 2.

biL

11 --

OF

bit

10 --

DF

bit

9--Ir

bit

I

--

TF

bit

7 --

sG

bir

6 --

zt

bit

4

ii: 3

-- AF

ií

I

La instrucción que realiza la funcién opuesta de POPF es PUSHF.

PUSH - Poner palabra en la p¡la {Push Word onto Stack)

Uso: PUSH STc

PUSH immed (80188+ only)

Flags que modif¡ca: N¡nguno

Descripcién: Decrementa el puntero de la pila (SP) en 2 y luego transfiere la palabra especificada en

el operando fuenle a lo atlo de puede espec¡ficar como fuente.

La instrucción que realiza la función opuesta de PUSH es POP.

la pila (ahora apunlada por el registro SP). El registro CS no se

PUSHA - Poner registros en la pila (Push Alt Registers ontosrac*7 (80188+)

Uso: PUSHA

Flags gue modifica: Ninguno

Descripción: Transdiere a la pila los I registros de propósito general, en el siguiente orden: Dl; Sl; BP; SP, DX, CX y AX.

11

Z6

I

Grupo de Arquitectura de Computadores y Diseño logico. UEX, 1997. hftp:/./afc.unex.esigacdl

Germán Galeano Gil. Juah A. Gómez Puildo

Repertorio de insfrucciones del 8086/80E8

PUSHF - Poner banderas en la p¡¡a (Push Flags onto Stack)

Uso: PUSHF

Flags que modifica: N¡nguno

Descripclón: Decrementa el puntero de la pila (SP) en 2 y luego translier€ los valores de las banderas a bits específicos de la palabra de la pila direccionada por el registro SP:

La instrucción que realiza la funciÓn opuesta de PUSHF es POPF-

RCL - Rotar a la izquierda a través del acarreo (Rotate Thrdugh Carry Left)

Uso: RCL dest,count

Flags que modifica: CF OF

Descripclón: Rotar a la izquierda los bits del operando destino junto con la bandera de acarreo (CF) el número de bits especificado en el segundo operando-

Si el número de bits a desplazar es 1, se puede especificar directamente. Si es mayor que '1, su vafor debe cargarse en GL y especificar CL como segundo operando.

RCR - Rotar a la derecha a través del acarreo (Rotate Through Carry Right)

Uso: RCR dest,count

Flags que modifica: CF OF

Descripción: Rotar a la derecha los bits del operando destino junto con la bandera de acarreo (CF) el número de b¡ts especificado en el segundo operando.

Si el número de b¡ts a desplazar es 1, se puede especificar d¡rectamente. Si es mayor que 1, su valor debe cargarse en CL y especificar CL como Segundo operando-

REP - Repetir operación de cadena (Repeat Sting Operation)

Uso: REP

Flags que modifica: Ninguno

Descripción: Hace que la siguiente instrucción de cadena se repita un determinado número de veces, el especificado en el registro contador (CX).

, tí

REP se usa en cnnjunción con las instrucciones MOVS (mover cadena) y STOS (almacenar cadena).

REPE y REPZ son idénticas y gerwran el mismo código (un byte) que REP, pero se utilizan en

las instrucciones CMPS

pero necesitan que ZF

= 1 (es dec¡r, que el resultado de la comparac¡ón o exploración haya dado igual o cero).

REPNE y REPNZ son idénticas y generan el mismo código (un byte). Se utilizan como (REPE

y REPQ en las instrucciones CMPS y SCAS, pero necesitan que ZF = 0 {es decir, que el

resultado de la comparación o exploración haya dado diferente o distinto de cerb).

(comparar cadena) y SCAS (eplorar cadena),

En resumen:

Las operaciones repetitivas con cadenas son intermrmpibles, es decir, el procesador

reconocerá la interrupción antes de procesar el siguiente elemento. Esta instrucción genera un byte prefijo. Otros bytes preftjos son:

t*

'-.LOCK.

12

--4

@

GnEo de .Arquitecturn de Computadores 1: Diseño

Reperltorio de instrucciones del 8086/80t8

bgr*.UEX. 1997.

Germán Galeano Gil.

h f tp : /iaÍc. un ex. e sigacdl

Juan A. Géme: Puildo

-. especificación de regístro de segmento.

Se pueden combinar diferentes prefijos,

interrupciÓn devuelve el control a la instrucción interrumpida o al prefijo anterior a esa

pues la

instrucción.

pero deben desactivarse las interrupciones,

REPETREPZ - Repetir operación

de cadena si igual / si cero

(Repeat Equal / Repeat Zero)

Uso: REPE

REPZ

Flags que modifica: Ninguno

Descripción: (Ver ¡nstrucción REP)

REPNETREPNZ - Repetir operac¡ón de cadena s¡ d¡snt¡nto / si no cero

(Repeat Not Equal / Repeat Not Zero)

Uso: REPNE

REPNZ

Flags gue modifica: Ninguno

Bescripción: (Ver instrucción REP)

RET/RETF - Retornar de un procedimiento (Retum From procedure)

'

Uso: RET nBytes

RETF nBytes

RETN nBytes

Flags que mod¡r¡ca: N¡nguno

Descripción: Retorna de un

procedimiento, previamente ¡n!&cado mediante CALL, utilizando como

salvada en la pila por CALL, que corresponde a la ínstrucción

dirección de retorno la dirección siguiente a dícha sentencia CALL.

El ensamblador genera un retorno distinto, según se haya definido el procedimiento:

- Procedímiento del¡nido como NEAR:

En este caso, se quita de la pila una pa¡abra, gue conesponde al

la dirección de relomo. Se genera un retorno dentro del mismo segmento.

ctesplazamiento de

- Procedimiento definido como FAR:

En este caso, se quitan de la pila dos palabras,

que corresponden al desplazamiento

{primera palabra) y al segmento (segunda palabra} de la dirección de retorno. se

genera un retorno a un segmento distinto.

El valor

opc¡onal que se especifica en RET es el valor

que hay que sumar al registro Sp, con

mÉmoria, cada

' objeto de

de§cartar parámetros. Si los parámetros son d¡recciones de

parámetro ocupa:

- 1 palabra (desplazamíento), si procedimiento NEAR. - 2 palabras (desplazamiento y segmento), si procedim¡ento FAR.

ROL - Rotación a la izquierda (Rotate Left)

Uso: ROL dest,count

Flags que modifica: CF OF

Descripción: Rotar a la izquierda los bits del operand