Você está na página 1de 21
UNIVERSIDADE FEDERAL DE ITAJUBÁ

UNIVERSIDADE FEDERAL DE

ITAJUBÁ

CONJUNTO DE REGISTROS

UNIVERSIDADE FEDERAL DE ITAJUBÁ CONJUNTO DE REGISTROS TAMANHO DE DADOS Tipo Quantidade Quantidade   de
UNIVERSIDADE FEDERAL DE ITAJUBÁ CONJUNTO DE REGISTROS TAMANHO DE DADOS Tipo Quantidade Quantidade   de
UNIVERSIDADE FEDERAL DE ITAJUBÁ CONJUNTO DE REGISTROS TAMANHO DE DADOS Tipo Quantidade Quantidade   de
UNIVERSIDADE FEDERAL DE ITAJUBÁ CONJUNTO DE REGISTROS TAMANHO DE DADOS Tipo Quantidade Quantidade   de
UNIVERSIDADE FEDERAL DE ITAJUBÁ CONJUNTO DE REGISTROS TAMANHO DE DADOS Tipo Quantidade Quantidade   de
UNIVERSIDADE FEDERAL DE ITAJUBÁ CONJUNTO DE REGISTROS TAMANHO DE DADOS Tipo Quantidade Quantidade   de
UNIVERSIDADE FEDERAL DE ITAJUBÁ CONJUNTO DE REGISTROS TAMANHO DE DADOS Tipo Quantidade Quantidade   de

TAMANHO DE DADOS

Tipo

Quantidade

Quantidade

 

de Bits

de Bytes

 
de Bits de Bytes    
 

Nibbles

4

0,5

 
Nibbles 4 0,5    
 

Bytes

8

1

Bytes 8 1

Words

16

2

   
                           
     
                           
       
                           
     
                           
   

Double Words

32

4

Quad Words

64

8

Quad Words 64 8

TBytes

80

10

 
TBytes 80 10    
TBytes 80 10    
 
 
     
 
     
 

Paragraph

128

16

Tipo

Qtd. Bits

Significado

 

LS

Least Significant

LS Least Significant
LS Least Significant

LSB

1

Bit Menos Significativo

LSNibble

4

Nibble Menos Significativo

LSByte

8

Byte Menos Significativo

LSWord

16

Palavra Menos Significativa

MS

Most Significant

MSB

1

Bit Mais Significativo

MSNibble

4

Nibble Mais Significativo

MSByte

8

Byte Mais Significativo

MSWord

16

Palavra Mais Significativa

 
U NI F E I E ngenhari@ omputação i A P X 8 6 /

U NI F E I

Engenhari@

omputação

i

A

P

X

8

6

/

8

8

ENDEREÇAMENTO DA MEMÓRIA

P X 8 6 / 8 8 ENDEREÇAMENTO DA MEMÓRIA CONVERSÃO DE ENDEREÇO LÓGICO EM ENDEREÇO
P X 8 6 / 8 8 ENDEREÇAMENTO DA MEMÓRIA CONVERSÃO DE ENDEREÇO LÓGICO EM ENDEREÇO

CONVERSÃO DE ENDEREÇO LÓGICO EM ENDEREÇO FÍSICO

CONVERSÃO DE ENDEREÇO LÓGICO EM ENDEREÇO FÍSICO CONVERSÃO DE ENDEREÇO FÍSICO EM ENDEREÇO LÓGICO
CONVERSÃO DE ENDEREÇO LÓGICO EM ENDEREÇO FÍSICO CONVERSÃO DE ENDEREÇO FÍSICO EM ENDEREÇO LÓGICO

CONVERSÃO DE ENDEREÇO FÍSICO EM ENDEREÇO LÓGICO NORMALIZADO

CONVERSÃO DE ENDEREÇO LÓGICO EM ENDEREÇO FÍSICO CONVERSÃO DE ENDEREÇO FÍSICO EM ENDEREÇO LÓGICO NORMALIZADO
CONVERSÃO DE ENDEREÇO LÓGICO EM ENDEREÇO FÍSICO CONVERSÃO DE ENDEREÇO FÍSICO EM ENDEREÇO LÓGICO NORMALIZADO
CONVERSÃO DE ENDEREÇO LÓGICO EM ENDEREÇO FÍSICO CONVERSÃO DE ENDEREÇO FÍSICO EM ENDEREÇO LÓGICO NORMALIZADO
CONVERSÃO DE ENDEREÇO LÓGICO EM ENDEREÇO FÍSICO CONVERSÃO DE ENDEREÇO FÍSICO EM ENDEREÇO LÓGICO NORMALIZADO
CONVERSÃO DE ENDEREÇO LÓGICO EM ENDEREÇO FÍSICO CONVERSÃO DE ENDEREÇO FÍSICO EM ENDEREÇO LÓGICO NORMALIZADO
CONVERSÃO DE ENDEREÇO LÓGICO EM ENDEREÇO FÍSICO CONVERSÃO DE ENDEREÇO FÍSICO EM ENDEREÇO LÓGICO NORMALIZADO
CONVERSÃO DE ENDEREÇO LÓGICO EM ENDEREÇO FÍSICO CONVERSÃO DE ENDEREÇO FÍSICO EM ENDEREÇO LÓGICO NORMALIZADO
CONVERSÃO DE ENDEREÇO LÓGICO EM ENDEREÇO FÍSICO CONVERSÃO DE ENDEREÇO FÍSICO EM ENDEREÇO LÓGICO NORMALIZADO

MODOS DE ENDEREÇAMENTO

MODO ESPECÍFICO DE ENDEREÇAMENTO

CATEGORIA GERAL DE ENDEREÇAMENTO

Por registro

Modo registro

Imediato

Modo registro ou memória

Direto

 

Indireto por registro

Por base

Modo memória

Indexado

Por base indexado

Modo registro : A instrução não possui operando memória. Modo memória : A instrução possui um operando memória.

MODOS DE ENDEREÇAMENTO MEMÓRIA

 
 
 
 
  ● Deslocamentos de 8 (oito) bits são interpretados de forma sinalizada. ● No cálculo do
  ● Deslocamentos de 8 (oito) bits são interpretados de forma sinalizada. ● No cálculo do
  ● Deslocamentos de 8 (oito) bits são interpretados de forma sinalizada. ● No cálculo do
  ● Deslocamentos de 8 (oito) bits são interpretados de forma sinalizada. ● No cálculo do

Deslocamentos de 8 (oito) bits são interpretados de forma sinalizada.

No cálculo do offset (16 bits) qualquer carry do bit mais significativo é ignorado.

MODO DE

ENDEREÇO EFETIVO

COLUNAS

REGISTRO

ENDEREÇAMENTO

 

[OFFSET]

SEGMENTO

direto

[deslocamento de 16 bits]

 

C

DS

indireto por registro

[BX]

 

A

DS

[SI]

 

B

DS

[DI]

 

B

DS

por base

[BX

+ deslocamento]

A

e C

DS

[BP

+ deslocamento]

A

e C

SS

indexado

[SI

+ deslocamento]

B

e C

DS

[DI

+ deslocamento]

B

e C

DS

por base indexado

[BX

+ SI]

A

e B

DS

[BX

+ DI]

A

e B

DS

[BX

+ SI + deslocamento]

A, B e C

DS

[BX

+ DI + deslocamento]

A, B e C

DS

[BP

+ SI]

A e B

SS

[BP

+ DI]

A e B

SS

[BP

+ SI + deslocamento]

A, B e C

SS

[BP

+ DI + deslocamento]

A, B e C

SS

SINTAXE DAS INSTRUÇÕES

MNEMÔNICO

MNEMÔNICO

MNEMÔNICO

MNEMÔNICO

operando destino , operando fonte

operando destino

operando fonte

INSTRUÇÕES COM DOIS OPERANDOS

operando

destino

destino

ò

operando

OPERAÇÃO

operando

fonte

ò

 

Registro

OPERAÇÃO

Registro

 
 

Registro

OPERAÇÃO

Memória

 

Registro

OPERAÇÃO

Imediato

 

Memória

OPERAÇÃO

Registro

 

Memória

OPERAÇÃO

Imediato

Não existe:

Memória

OPERAÇÃO Memória

Imediato

Reg. Segmento

OPERAÇÃO

OPERAÇÃO

Operando

Imediato

CONJUNTO DE INSTRUÇÕES

OPERANDO

DESCRIÇÃO

[mem]

operando memória de 8 ou 16 bits

[mem16]

operando memória de 16 bits

[mem32]

operando memória de 32 bits

AF

estado do flag auxiliar (auxiliary carry flag)

Byte PTR

operando memória referenciado na forma de byte

CF

estado do flag de carry (carry flag)

desl16

número binário absoluto de 16 bits

desl8

número binário sinalizado de 8 bits

dest

operando destino

EA

endereço efetivo (Effective Address) ou offset

Flags

registro de flags (16 bits)

fonte

operando fonte

fonte16

operando fonte (registro ou memória) de 16 bits

fonte8

operando fonte (registro ou memória) de 8 bits

LSByte

byte menos significativo (Least Significant Byte)

LSNibble

nibble menos significativo (Least Significant Nibble)

MSNibble

nibble mais significativo (Most Significant Nibble)

offset

endereço efetivo (offset)

porta

número binário absoluto de 8 bits

reg

registro de propósito geral de 8 ou 16 bits

reg16

registro de propósito geral de 16 bits

RSeg

registro de segmento default do operando memória

seletor

endereço de segmento (seletor)

tipo8

número binário absoluto de 8 bits

Word PTR

operando memória referenciado na forma de word

x

DIV y

quociente inteiro da divisão de x por y (x ÷ y)

x

MOD y

resto inteiro da divisão de x por y (x ÷ y)

ZF

estado do flag zero (zero flag)

FLAG

DESCRIÇÃO

x

afetado conforme operação

0

assume o nível lógico 0 (zero)

1

assume o nível lógico 1 (um)

?

estado indefinido

 

não afetado

INSTRUÇÕES DE TRANSFERÊNCIA DE DADOS

INSTRUÇÃO

OPERAÇÃO

FLAGS:

O

S

Z

A

P

C

MOV dest,fonte

dest ¬ fonte

           

XCHG dest,fonte

dest « fonte

           

XLAT

AL

¬ DS:[BX + AL]

           

(AL = número absoluto)

LEA reg16,[mem]

dest

¬ EA de [mem]

           

(EA = endereço efetivo)

LDS reg16,[mem32]

reg16 ¬ RSeg:[mem32]

           

DS

¬ RSeg:[mem32 + 2]

LES reg16,[mem32]

reg16 ¬ RSeg:[mem32]

           

ES

¬ RSeg:[mem32 + 2]

INSTRUÇÕES ARITMÉTICAS BÁSICAS

 

INSTRUÇÃO

OPERAÇÃO

FLAGS:

O

S

Z

A

P

C

ADD dest,fonte

dest ¬ dest + fonte

x

x

x

x

x

x

ADC dest,fonte

dest ¬ dest + fonte + CF

x

x

x

x

x

x

SUB dest,fonte

dest ¬ dest – fonte

x

x

x

x

x

x

SBB dest,fonte

dest ¬ dest – fonte – CF

x

x

x

x

x

x

INC dest

dest ¬ dest + 1

x

x

x

x

x

 

DEC dest

dest ¬ dest – 1

x

x

x

x

x

 

CMP dest,fonte

¬ dest – fonte

x

x

x

x

x

x

NEG dest

dest ¬ 0 – dest

x

x

x

x

x

x

INSTRUÇÕES DE MANIPULAÇÃO DE FLAG

 

INSTRUÇÃO

OPERAÇÃO

FLAGS:

O

S

Z

A

P

C

CLC

(Carry Flag) CF ¬ 0

         

0

STC

(Carry Flag) CF ¬ 1

         

1

CMC

(Carry Flag) CF ¬ NOT(CF)

         

x

CLI

(Interrupt Flag) IF ¬ 0

           

STI

(Interrupt Flag) IF ¬ 1

           

CLD

(Direction Flag) DF ¬ 0

           

STD

(Direction Flag) DF ¬ 1

           

LAHF

LAHF
LAHF
LAHF

SAHF

SAHF x x x x x
SAHF x x x x x
SAHF x x x x x

x

x

x

x

x

INSTRUÇÕES DE AJUSTE DECIMAL (BCD COMPACTADO)

INSTRUÇÃO

OPERAÇÃO

FLAGS:

O S

 

Z

A

P

C

DAA

Se LSNibble(AL) > 9 ou AF=1:

? x

 

x

x

x

x

AL = AL + 06h

AF = 1

 

Se MSNibble(AL) > 9 ou CF=1:

AL = AL + 60h

CF = 1

 

DAS

Se LSNibble(AL) > 9 ou AF=1:

? x

 

x

x

x

x

AL = AL – 06h

AF = 1

 

Se MSNibble(AL) > 9 ou CF=1:

AL = AL – 60h

CF = 1

 

INSTRUÇÕES DE AJUSTE NO FORMATO ASCII (BCD NÃO COMPACTADO)

 

INSTRUÇÃO

OPERAÇÃO

FLAGS:

O S

 

Z

A

P

C

AAA

Se LSNibble(AL) 9 e AF=0:

? ?

 

?

x

?

x

AL = AL AND 0Fh

Se LSNibble(AL) > 9 ou AF=1:

AL = AL + 06h

AH = AH + 01h

AL = AL AND 0Fh

CF = AF = 1

AAS

Se LSNibble(AL) 9 e AF=0:

? ?

 

?

x

?

x

AL = AL AND 0Fh

Se LSNibble(AL) > 9 ou AF=1:

AL = AL – 06h

AH = AH – 01h

AL = AL AND 0Fh

CF = AF = 1

AAM

AH ¬ AL DIV 10(0Ah)

? x

 

x

?

x

?

AL ¬ AL MOD 10(0Ah)

AAD

AL ¬ AH × 10(0Ah) + AL

? x

 

x

?

x

?

AH ¬ 00h

 
 

INSTRUÇÕES DE CONTROLE DO

 
 

PROCESSADOR

 

INSTRUÇÃO

OPERAÇÃO

FLAGS:

O

S

Z

A

P

C

NOP

nenhuma operação

           

HLT

parar a CPU

             
 

INSTRUÇÕES LÓGICAS

 

INSTRUÇÃO

OPERAÇÃO

FLAGS:

O

S

Z

A

P

C

AND dest,fonte

dest ¬ dest AND fonte

0

x

x

?

x

0

OR

dest,fonte

dest ¬ dest OR fonte

0

x

x

?

x

0

XOR dest,fonte

dest ¬ dest XOR fonte

0

x

x

?

x

0

NOT dest

dest ¬ NOT dest

           

TEST dest,fonte

 

¬ dest AND fonte

0

x

x

?

x

0

INSTRUÇÕES DE DESLOCAMENTO

INSTRUÇÃO

OPERAÇÃO

 

FLAGS:

O

S

Z

A P

C

SHL dest,1

 
SHL dest,1     x x x ? x x
 

x

x

x

? x

x

SHL dest,CL

x

x

x

? x

x

SHR dest,1

 
SHR dest,1     x x x ? x x
 

x

x

x

? x

x

SHR dest,CL

x

x

x

? x

x

SAL dest,1

 
SAL dest,1     x x x ? x x
 

x

x

x

? x

x

SAL dest,CL

x

x

x

? x

x

SAR dest,1

 
SAR dest,1     x x x ? x x
 

x

x

x

? x

x

SAR dest,CL

x

x

x

? x

x

INSTRUÇÕES DE ROTAÇÃO

 

INSTRUÇÃO

OPERAÇÃO

 

FLAGS:

O

S

Z

A P

C

ROL dest,1

 
ROL dest,1      
 
ROL dest,1      
 
x x
x x
x x

x

x

ROL dest,CL

       

x

x

   
     
 

ROR dest,1

 
ROR dest,1     x x
 
ROR dest,1     x x
ROR dest,1     x x

x

x

ROR dest,CL

 
ROR dest,CL       x x
   

x

x

RCL dest,1

RCL dest,1 x x

x

x

RCL dest,CL

x

x

RCR dest,1

RCR dest,1 x x

x

x

RCR dest,CL

x

x

INSTRUÇÕES DE REPETIÇÃO CÍCLICA (LOOPS)

 

INSTRUÇÃO

OPERAÇÃO

 

FLAGS:

O

S

Z

A P

C

LOOP desl8

CX

¬

 

CX – 1 (sem afetar flags)

         

Se

CX 0:

 

IP ¬ IP + desl8

 

LOOPE desl8

CX

¬

 

CX – 1 (sem afetar flags)

         

LOOPZ desl8

Se

(CX 0) e (ZF = 1):

 

IP ¬ IP + desl8

 

LOOPNE desl8

CX

¬

 

CX – 1 (sem afetar flags)

         

LOOPNZ desl8

Se

(CX 0) e (ZF = 0):

 

IP ¬ IP + desl8

 

INSTRUÇÕES DE SALTO (JUMP) CONDICIONAL

INSTRUÇÃO

OPERAÇÃO

FLAGS:

O

S

Z

A

P

C

Jcondição desl8

Se condição for verdadeira:

           

IP ¬ IP + desl8

MNEMÔNICO

CONDIÇÃO DO JUMP

JUMP OCORRE SE:

JNC

não carry

CF = 0

JC

 

carry

CF = 1

JNP

JPO

não paridade / paridade impar

PF = 0

JP

JPE

paridade / paridade par

PF = 1

JNZ

JNE

não zero / não igual

ZF = 0

JZ

JE

zero / igual

ZF = 1

JNS

 

não sinal

SF = 0

JS

 

sinal

SF = 1

JNO

 

não overflow

OF = 0

JO

 

overflow

OF = 1

JCXZ

 

registro CX é igual a zero

registro CX = 0

JA

JNBE

acima / não abaixo nem igual

CF OR ZF = 0

JBE

JNA

abaixo ou igual / não acima

CF OR ZF = 1

JAE

JNB

acima ou igual / não abaixo

CF = 0

JB

JNAE

abaixo / não acima nem igual

CF = 1

JG

JNLE

maior / não menor nem igual

(SF XOR OF) OR ZF = 0

JLE

JNG

menor ou igual / não maior

(SF XOR OF) OR ZF = 1

JGE

JNL

maior ou igual / não menor

SF XOR OF = 0

JL

JNGE

menor / não maior nem igual

SF XOR OF = 1

Ver na página 8 os teste alternativo

das instruções de salto condicional

OR

XOR = operação lógica ou exclusivo

= operação lógica ou inclusivo

Instruções de salto que se baseiam em comparações:

CONDIÇÃO

OPERAÇÃO COM NÚMERO

 

ABSOLUTO

SINALIZADO

J

= Jump

= JE

   

JE

 

E

= Equal

JNE

   

JNE

 

N

= Not

> JA

 

JNBE

JG

JNLE

A

= Above

JAE

 

JNB

JGE

JNL

B

= Below

< JB

 

JNAE

JL

JNGE

G

= Greater

JBE

 

JNA

JLE

JNG

L

= Less

≤ JBE   JNA JLE JNG L = Less Instruções que não fazem análise do estado

Instruções que não fazem análise do estado do ZF (Zero Flag)

INSTRUÇÕES DE SALTO (JUMP) INCONDICIONAL

Tipo intrassegmento (NEAR):

INSTRUÇÃO

OPERAÇÃO

FLAGS:

O

S

Z

P

A C

JMP desl8

IP ¬ IP + desl8

       

JMP desl16

IP ¬ IP + desl16

       

JMP reg16

IP ¬ reg16

       

JMP [mem16]

IP ¬ RSeg:[mem16]

       

Tipo intersegmento (FAR):

 

INSTRUÇÃO

OPERAÇÃO

FLAGS:

O

S

Z

P

A C

JMP seletor:offset

IP ¬ offset

       

CS ¬ selector

JMP [mem32]

IP ¬ RSeg:[mem32]

       

CS ¬ RSeg:[mem32 + 2]

INSTRUÇÕES DE MULTIPLICAÇÃO

INSTRUÇÃO

MUL fonte8

IMUL fonte8

MUL fonte16

IMUL fonte16

OPERAÇÃO

FLAGS:

O

S

Z

A

P

C

MUL fonte16 IMUL fonte16 OPERAÇÃO FLAGS: O S Z A P C x x ? ?

x

x

?

?

?

?

?

?

?

?

x

x

IMUL fonte16 OPERAÇÃO FLAGS: O S Z A P C x x ? ? ? ?

x

x

?

?

?

?

?

?

?

?

x

x

INSTRUÇÕES DE DIVISÃO

INSTRUÇÃO

DIV fonte8

IDIV fonte8

DIV fonte16

IDIV fonte16

OPERAÇÃO

fonte8 IDIV fonte8 DIV fonte16 IDIV fonte16 OPERAÇÃO C FLAGS: Z O S ? ? A
fonte8 IDIV fonte8 DIV fonte16 IDIV fonte16 OPERAÇÃO C FLAGS: Z O S ? ? A

C

FLAGS:

Z

O

S

?

?

A

?

?

P

?

?

?

?

IDIV fonte16 OPERAÇÃO C FLAGS: Z O S ? ? A ? ? P ? ?
IDIV fonte16 OPERAÇÃO C FLAGS: Z O S ? ? A ? ? P ? ?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

IDIV fonte16 OPERAÇÃO C FLAGS: Z O S ? ? A ? ? P ? ?
IDIV fonte16 OPERAÇÃO C FLAGS: Z O S ? ? A ? ? P ? ?
IDIV fonte16 OPERAÇÃO C FLAGS: Z O S ? ? A ? ? P ? ?
IDIV fonte16 OPERAÇÃO C FLAGS: Z O S ? ? A ? ? P ? ?
IDIV fonte16 OPERAÇÃO C FLAGS: Z O S ? ? A ? ? P ? ?
IDIV fonte16 OPERAÇÃO C FLAGS: Z O S ? ? A ? ? P ? ?

INSTRUÇÕES DE EXTENSÃO DO BIT DE SINAL

INSTRUÇÃO

OPERAÇÃO

FLAGS:

O

S

Z

A

P

C

CBW

CBW

CWD

CWD

INSTRUÇÕES DE MANIPULAÇÃO DA PILHA (STACK)

 

INSTRUÇÃO

OPERAÇÃO

FLAGS:

O

S

Z

A

P

C

PUSH reg16

SP

¬ SP – 2

           

SS:[SP] ¬ reg16

PUSH [mem16]

SP

¬ SP – 2

           

SS:[SP] ¬ RSeg:[mem16]

PUSHF

SP

¬ SP – 2

           

SS:[SP] ¬ Flags

POP reg16

Reg16 ¬ SS:[SP]

           

SP

¬ SP + 2

POP [mem16]

RSeg:[mem16] ¬ SS:[SP]

           

SP

¬ SP + 2

POPF

Flags ¬ SS:[SP]

x

x

x

x

x

x

SP

¬ SP + 2

D=x

I=x

T=x

INSTRUÇÕES DE CHAMADA DE SUB-ROTINAS

Tipo intrassegmento (NEAR):

INSTRUÇÃO

OPERAÇÃO

FLAGS:

O

S

Z

P

A C

CALL desl16

SP

¬ SP – 2

       

SS:[SP] ¬ IP

 

IP

¬ IP + desl16

CALL reg16

SP

¬ SP – 2

       

SS:[SP] ¬ IP

 

IP

¬ reg16

CALL [mem16]

SP

¬ SP – 2

       

SS:[SP] ¬ IP

 

IP

¬ RSeg:[mem16]

Tipo intersegmento (FAR):

 

INSTRUÇÃO

OPERAÇÃO

FLAGS:

O

S

Z

P

A C

CALL seletor:offset

SP

¬ SP – 2

       

SS:[SP] ¬ CS

 

SP

¬ SP – 2

SS:[SP] ¬ IP

 

IP

¬ offset

CS

¬ seletor

CALL [mem32]

SP

¬ SP – 2

       

SS:[SP] ¬ CS

 

SP

¬ SP – 2

SS:[SP] ¬ IP

 

IP

¬ RSeg:[mem32] ¬ RSeg:[mem32 + 2]

CS

INSTRUÇÕES DE RETORNO DE SUB-ROTINAS

 

Tipo intrassegmento (NEAR):

 

INSTRUÇÃO

OPERAÇÃO

FLAGS:

O

S

Z

P

A C

RETN

IP ¬ SS:[SP] SP ¬ SP + 2

         

RETN desl16

IP ¬ SS:[SP] SP ¬ SP + 2 SP ¬ SP + desl16

       

Tipo intersegmento (FAR):

 

INSTRUÇÃO

OPERAÇÃO

FLAGS:

O

S

Z

P

A C

RETF

IP ¬ SS:[SP] SP ¬ SP + 2 CS ¬ SS:[SP] SP ¬ SP + 2

         

RETF desl16

IP ¬ SS:[SP] SP ¬ SP + 2 CS ¬ SS:[SP] SP ¬ SP + 2 SP ¬ SP + desl16

       

INSTRUÇÕES STRINGS

Instruções strings de transferência:

INSTRUÇÃO

OPERAÇÃO

 

FLAGS:

O

S

Z

A

P

C

MOVSB

ES:[DI] ¬ Byte PTR DS:[SI]

           
 

SI

¬

SI ±

1

DI

¬

DI ±

1

MOVSW

ES:[DI] ¬ Word PTR DS:[SI]

           
 

SI

¬

SI ± 2

DI

¬

DI ± 2

LODSB

AL

¬ DS:[SI]

             

SI

¬

SI ±

1

LODSW

AX

¬ DS:[SI]

             

SI

¬

SI ± 2

STOSB

ES:[DI] ¬ AL

             
 

DI

¬

DI ±

1

STOSW

ES:[DI] ¬ AX

             
 

DI

¬

DI ± 2

Instruções strings de comparação:

 

INSTRUÇÃO

OPERAÇÃO

 

FLAGS:

O

S

Z

A

P

C

CMPSB

 

Byte PTR Byte PTR

x

x

x

x

x

x

 

¬

ES:[DI] – DS:[SI]

SI

¬

SI ±

1

DI

¬

DI ±

1

CMPSW

 

Word PTR Word PTR

x

x

x

x

x

x

 

¬

ES:[DI] – DS:[SI]

SI

¬

SI ± 2

 

DI

¬

DI ± 2

SCASB

 

¬

ES:[DI] – AL

x

x

x

x

x

x

DI

¬

DI ±

1

SCASW

 

¬

ES:[DI] – AX

x

x

x

x

x

x

DI

¬

DI ± 2

 

Prefixo de repetição das instruções strings:

INSTRUÇÃO

 

INSTRUÇÃO

STRING

REP

Enquanto CX 0:

MOVSB MOVSW

InstruçãoString

executar InstruçãoString

LODSB LODSW

CX ¬

CX – 1 (sem afetar flags)

STOSB STOSW

repetir a estrutura

REPE

Enquanto CX 0:

CMPSB CMPSW

InstruçãoString

executar InstruçãoString

SCASB SCASW

CX ¬

CX – 1 (sem afetar flags)

REPZ

se ZF =

0: sair do loop

InstruçãoString

repetir a estrutura

REPNE

Enquanto CX 0:

CMPSB CMPSW

InstruçãoString

executar InstruçãoString

SCASB SCASW

CX ¬

CX – 1 (sem afetar flags)

REPNZ

se ZF =

1: sair do loop

InstruçãoString

repetir a estrutura

Flag de direção – DF (Direction Flag):

INSTRUÇÃO

OPERAÇÃO

AÇÃO

 

INSTRUÇÃO STRING (RegÍnd = SI ou DI)

     

Se DF=0

e inst. de 8 bits:

RegÍnd ¬ RegÍnd + 1

CLD

DF ¬ 0

Incrementar

Se DF=0 e inst. de 16 bits:

RegÍnd ¬ RegÍnd + 2

     

Se DF=1

e inst. de 8 bits:

STD

DF ¬ 1

Decrementar

RegÍnd ¬ RegÍnd – 1

Se DF=1

e inst. de 16 bits:

RegÍnd ¬ RegÍnd – 2

INSTRUÇÕES DE INTERRUPÇÃO POR SOFTWARE

INSTRUÇÃO

OPERAÇÃO

FLAGS:

O

S

Z

A

P

C

INT tipo8

SP

¬ SP – 2

           

SS:[SP] ¬ Flags

Flag IF ¬ 0 (interrupção)

Flag TF ¬ 0 (armadilha)

SP

¬ SP – 2

SS:[SP] ¬ CS

 

SP

¬ SP – 2

SS:[SP] ¬ IP

 

IP ¬ 0000h:[4×tipo8]

CS ¬ 0000h:[4×tipo8 + 2]

INT

Equivale a INT 03h

           

INTO

Se OF = 1:

             
 

Equivale a INT 04h

Se OF = 0:

 
 

Ignora a instrução (não gera interrupção)

IRET

IP

¬ SS:[SP]

x

x

x

x

x

x

SP

¬ SP + 2

D=x

I=x

T=x

CS

¬ SS:[SP]

 

SP

¬ SP + 2

Flags ¬ SS:[SP]

SP

¬ SP + 2

INSTRUÇÕES DE INTERFACE COM HARDWARE

 

INSTRUÇÃO

OPERAÇÃO

FLAGS:

O

S

Z

A

P

C

ESC

Usada para acionar o co-processador iAPX87.

           

WAIT

Verifica o estado da linha #TEST e caso ela esteja com nível lógico 1 (alto) suspende a operação do processador.

           

LOCK Instrução

Faz com que a linha #LOCK permaneça ativa durante a execução da próxima instrução.

           

INSTRUÇÕES DE ENTRADA E SAÍDA DE DADOS

INSTRUÇÃO

OPERAÇÃO

FLAGS:

O

S

Z

A

P

C

IN AL,porta

AL ¬ [porta] (00h porta FFh)

           

IN AX,porta

AX ¬ [porta] (00h porta FFh)

           

IN AL,DX

AL ¬ [porta DX] (0000h DX FFFFh)

           

IN AX,DX

AX ¬ [porta DX] (0000h DX FFFFh)

           

OUT porta,AL

[porta] ¬ AL (00h porta FFh)

           

OUT porta,AX

[porta] ¬ AX (00h porta FFh)

           

OUT DX,AL

[porta DX] ¬ AL (0000h DX FFFFh)

           

OUT DX,AX

[porta DX] ¬ AX (0000h DX FFFFh)

           

TESTE ALTERNATIVO DAS INSTRUÇÕES DE SALTO CONDICIONAL

 

INSTRUÇÃO

TESTE

TESTE ALTERNATIVO

ABSOLUTO

 

JAE

JNB

CF = 0

CF = 0

< JB

 

JNAE

CF = 1

CF = 1

> JA

 

JNBE

CF OR ZF = 0

(ZF = 0) AND (CF = 0)

 

JBE

JNA

CF OR ZF = 1

(ZF = 1) OR (CF = 1)

SINALIZADO

 

JGE

JNL

SF XOR OF = 0

SF = OF

< JL

 

JNGE

SF XOR OF = 1

SF OF

> JG

 

JNLE

(SF XOR OF) OR ZF = 0

(ZF = 0) AND (SF = OF)

 

JLE

JNG

(SF XOR OF) OR ZF = 1

(ZF = 1) OR (SF OF)

CÓDIGO DE MÁQUINA DAS INSTRUÇÕES