Sei sulla pagina 1di 3

Apndice I - Tabela de Instrues do 8086

Instrues para transferncia de dados:


MOV

copia um byte ou word de uma fonte especificada para um
destino especificado.
MOV destino, fonte

PUSH copia word especificada para o topo da pilha.
POP copia word do topo da pilha para local especificado.
PUSHA copia todos os registradores para a pilha
(80186 emdiante).

POPA copia words da pilha para todos os registradores.
XCHG Exchange bytes ou words.
XLAT

substitui AL por um byte de uma tabela, endereado por
[BX+AL]
MOV BX, 2800 ; end inicial da tabela.
XLAT ; AL =[BX+AL]
Instrues para entrada/sada de dados:
IN

copia um byte ou word de uma porta especificada para o
acumulador (a porta sempre uma cte ou DX).
IN AL, OC8H
IN AX, DX
OUT

copia umbyte ou word do acumulador para uma porta especificada
(a porta sempre uma cte ou DX).
OUT OC8H, AL
OUT DX, AX
Instrues para transferncia de endereo especial:
LEA carrega emumregistrador de 16 bits, o endereo (offset) de uma varivel. LEA BX, [BP]DELTA
LDS carrega DS e umreg de 16 bits comumendereo FAR (32 bits). LDS SI, SEGMENTO[DI]
LES carrega DS e umreg de 16 bits comumendereo FAR (32 bits). LES DI, [BX]BUFFER
Instrues para transferncia para flags:
LAHF copia a parte baixa do registrador de flags (FL) para AH.
SAHF copia o byte contido emAH, para a parte baixa do registrador de flags (FL).
PUSHF copia o registrador de flags para a pilha.
POPF copia o topo da pilha para o registrador de flags.
Instrues para adio:
ADD

adio: ADD destino, fonte

ADD AL, 74H
ADD DX, BX
ADC

adio comcarry

ADC DX, BX
ADC AL, 45H
INC

incrementa umbyte ou word especificada

INC BL
INC VARIVEL
AAA

ajuste ASCII do acumulador depois da adio. converte umvalor BCD para ASCII
aps a adio, somente para o reg AL.

DAA ajuste para BCD, aps uma soma, somente reg AL.
Instrues para subtrao:
SUB subtrao SUB AL, VARIAVEL
SUB DX, BX
SBB subtrao comcarry. SUB AL, 74H
SUB BX, [BX]
DEC

decrementa umbyte ou word especificada

DEC CL
DEC VARIVEL
NEG inverte o sinal de umnmero.(complemento de 2)
CMP

comparao: CMP destino, fonte

CMP AL, 01H
CMP BH, CL
CMP CX, VARIVEL_16BITS
CMP VARIVEL_8BITS, BH
AAS

ajuste ASCII para subtrao.

antes: ASCII 5 - ASCII 9 =>AL=FCH (-4)
depois: result =04H, CF =1
DAS ajuste para BCD, aps uma subtrao, somente reg AL.
Instrues para multiplicao:
MUL

multiplicao no sinalizada
byte x byte ou word x word
MUL BH ; AL x BH =>result emAX
MUL CX ; AX x CX =>result emDX e AX
IMUL multiplicao sinalizada
AAM

converte binrio para BCD aps a multiplicao antes: BCD 5 X BCD 9 =>AX =002DH
depois: AX =0405H
Instrues para diviso:
DIV

diviso semsinal:DIV fonte AL=quociente e AH=resto DIV BH =>AX/BH
DIV CX =>DXeAX/CX
IDIV

diviso comsinal:DIV fonte AL=quociente e AH=resto DIV BL =>AX/BL
DIV CX =>DXeAX/CX
AAD

converte BCD para binrio antes da diviso. antes: AX=0607 (BCD)
depois: AX =43H (67 emdecimal)
CBW

converte umbyte sinalizado emuma word sinalizada. antes: AX =00000000 10011011 =-15510
depois: AX =11111111 10011011 =-15510
CWD

converte uma word sinalizada em uma doubleword
sinalizada.
antes: DX=0000H e AX=F0C7H (-389710)
depois: DX=FFFFH e AX=F0C7H (-389710)
Instrues lgicas:
NOT inverte todos os bits do destino NOT AX
NOT [SI+06H]
AND

AND destino, fonte

AND BX, 00FFH
AND CX, [SI]
OR OR destino, fonte

OR CL, BH
OR AH, 0H
XOR XOR destino, fonte

XOR BX, FFH
XOR AL, AL
TEST AND fonte, fonte
resultado somente nos flags.
TEST DX, AX
TEST VARIAVEL, 0FH
Instrues para deslocamento:
SHL deslocameto esquerda
SHL destino, contagem
SHL DX, 1
SHL AX, CL
SHR deslocameto direita
SHR destino, contagem
SHR BX, 1
SHR [BX], CL
SAL deslocameto esquerda
SAL destino, contagem
SAL [SI+BX], 1
SAL AX, CL
SAR deslocameto direita
SAR destino, contagem
SAR SI, 1
SAR DX, CL
Instrues para rotao:
ROL

rotao esquerda
ROL destino, contagem
ROL BH, 1
ROL BX, CL
ROR

rotao direita
ROR destino, contagem
ROR CX, 1
ROR DX, CL
RCL

rotao esquerda comflag carry
RCL destino, contagem
RCL [DI+BX], 1
RCL AX, CL
RCR

rotao direita comflag carry
RCR destino, contagem
RCR BX, 1
RCR [BX], CL
Instrues para string:
REP repete operao_string o nmero de vezes contido emCX.
REPE/REPZ
REPNE/REPNZ
repete operao_string enquanto condio for verdadeira ou enquanto CX maior que zero.
MOVS/MOVSB/MOVS
W
transfere string ( [ES:DI] <=[DS:SI] ) emblocos de byte (MOVSB), palavra (MOVSW)
ou pela definio destino/fonte.
CMPS/CMPSB/CMPSW comparao de strings
INS/INSB/INSW entrada de string por uma porta. A partir do 80186
OUTS/OUTSB/OUTSW
SCAS/SCASB/SCASW varre o string apontado por ES:DI procurando o contedo de AL (SCASB), AX
(SCASW).
LODS/LODSB/LODSW carrega AL ou AX como byte (LODSB), a palavra (LODSW) ou o objeto designado por
fonte (LODS) localizado embloco de memria apontado por DS:SI.
STOS/STOSB/STOSW carreaga o bloco de memria apontado por DS:DI comAL, AX.
Instrues para set/reset de flags:
STC set carry flag CF =1
CLC clear carry flag CF =0
CMC complement the carry flag inverte CF
STD set direction flag DF =1 (decrementa apontador de string)
CLD clear direction flag DF =0 (incrementa apontador de string)
STI set interrupt flag IF =1 (habilita interrupes)
CLI clear interrupt flag IF =0 (desabilita interrupes)
Instrues incondicionais para saltos e subrotinas:
CALL

chamada de subrotina

- sub-rotinas NEAR (perto): altera somente IP
CALL LABEL => IP =LABEL
CALL BX => IP =BX
CALL WORD PTR [BX] => IP =[BX+3] e [BX+2]
- sub-rotinas FAR (distante): altera CS e IP
CALL SUBROT => SUBROT PROC FAR
CALL DWORD PTR [BX] => CS =[BX+1] e [BX]
IP =[BX+3] e [BX+2]
RET Retorno de subrotina
J MP

J ump incondicional

J MP LABEL
J MP BX
J MP WORD PTR [BX] - near jump
J MP DWORD PTR [SI] - far jump
Instrues condicionais para saltos:
J A
J NBE
J ump if above
J ump if not below or equal
salta se superior
salta se no inferior ou igual
CF=0 e ZF=0

J AE
J NB
J ump if above or equal
J ump if not below
salta se superior ou igual
salta se no inferior
CF=0

J B
J NAE
J ump if below
J ump if not above or equal
salta se inferior
salta se no superior ou igual
CF=1

J BE
J NA
J ump if below or equal
J ump if not above
salta se inferior ou igual
salta se no superior
CF=1 ou ZF=1

J C J ump if carry salta se ocorrer carry CF=1
J E
J Z
J ump if equal
J ump if zero
salta se igual
salta se resultado zero
ZF=1

J G
J NLE
J ump if greater
J ump if not less or equal
salta se maior (>)
salta se no menor ou igual
ZF=0 e CF =OF

J GE
J NL
J ump if greater or equal
J ump if not less
salta se maior ou igual (>=)
salta se no menor
SF =OF

J L
J NGE
J ump if less
J ump if not greater or equal
salta se menor (<)
salta se no maior ou igual
SF OF

J LE
J NG
J ump if less or equal
J ump if not greater
salta se menor ou igual (<=)
salta se no maior
ZF=1 ou SF OF

J NC J ump if no carry salta se no ocorreu carry CF=0
J NE
J NZ
J ump if not equal
J ump if not zero
salta se no igual
salta se no ocorreu zero
ZF=0

J NO J ump if no overflow salta se no ocorreu overflow OF=0
J NP
J PO
J ump if no parity
J ump if parity odd
salta se no ocorreu paridade
salta se paridade mpar
PF=0

J NS J ump if not signed salta se positivo SF=0
J O J ump if overflow salta se ocorreu overflow OF=1
J P
J PE
J ump if parity
J ump if parity even
salta se ocorreu paridade
salta se paridade par
PF=1

J S J ump if signed (if negative) salta se negativo SF=1
Instrues especiais para saltos:
LOOP dec CX e salta enquanto CX 0
LOOPE/LOOPZ dec CX e salta enquanto CX 0 e Z=1 (LOOPE/LOOPZ)
LOOPNE/LOOPNZ dec CX e salta enquanto CX 0 e Z=0 (LOOPNE/LOOPNZ)
J CXZ salta se CX =0h
Instrues de interrupes:
INT executa uma rotina de interrupo. INT n
INTO interrupo quando ocorrer overflow (OF =1). INTO ==>executa a interrupo 4 se OF=1
IRET retorno de interrupo
Instrues para sincronizao como hardware externo:
HLT cessa a execuo do processador aguardando uma interrupo.
WAIT suspende a operao do processador at o recebimento de umsinal do coprocessador (pino TEST). Evita o
acesso simultneo de de mais de umprocessador a ummesmo endereo de memria.
ESC Usado para enviar instrues para o coprocessador.
LOCK impede o acesso de outros processadores ao barramento durante a execuo da prxima instruo.
NOP nenhuma operao

Potrebbero piacerti anche