Escolar Documentos
Profissional Documentos
Cultura Documentos
Departamento de Eletroeletrnica
Disciplina: Microprocessadores II, Arquitetura de Sistemas
Digitais
Professores: Cludio Leo, Orlando Rocha, Srgio Campos
INSTRUES DE ASSEMBLER
PGINA 1
ndice
1 - MODOS DE ENDEREAMENTO DO 8086 ................................................. 3
1.1 - MODOS DE ENDEREAMENTO DE PROGRAMA ....................................................... 3
1.2 - MODOS DE ENDEREAMENTO DE DADOS ............................................................ 3
2 - TIPOS DE DADOS (8086)....................................................................... 5
3 - INSTRUES ASSEMBLY........................................................................ 7
3.1 - INSTRUES DE MOVIMENTAO DE DADOS ....................................................... 7
3.1.1 - Instrues de movimentao de uso geral .......................................... 7
3.1.2 - Instrues para manipulao de stack ............................................... 9
3.1.3 - Instrues de converso de tipo.......................................................10
3.2 - INSTRUES ARITMTICAS BINRIAS ..............................................................10
3.2.1 - Instrues de adio e subtrao .....................................................11
3.2.2 - Instrues de comparao e mudana de sinal...................................14
3.2.3 - Instrues de multiplicao e diviso ................................................15
3.3 - INSTRUES DE ARITMTICA DECIMAL .............................................................17
3.3.1 - Instrues de alterao para BCD compactado...................................17
3.3.2 - Instrues de alterao para BCD no compactado.............................18
3.4 - INSTRUES LGICAS ...............................................................................21
3.4.1 - Instrues para operaes booleanas ...............................................21
3.4.2 - Instruo de teste de bit.................................................................22
3.4.3 - Instrues de rotao e deslocamento ..............................................23
3.5 - INSTRUES DE TRANSFERNCIA DE CONTROLE ..................................................27
3.5.1 - Instrues de transferncia de controle incondicional ..........................27
3.5.2 - Instrues de transferncia de controle condicional ............................32
3.5.3 - Instrues de LOOP .......................................................................33
3.6 - OPERAES COM STRING ............................................................................34
3.6.1 - Prefixos de repetio ......................................................................37
3.7 - INSTRUES DE CONTROLE DE FLAG ...............................................................38
3.7.1 - Instrues de controle do flag de direo, flag carry e de interrupo....38
3.7.2 - Instrues de transferncia de flags .................................................40
3.8 - INSTRUES DE ACESSO A PORTAS DE ENTRADA E SADA .......................................41
3.9 - INSTRUES DE USO GERAL ........................................................................41
INSTRUES DE ASSEMBLER
PGINA 2
INSTRUES DE ASSEMBLER
PGINA 3
code, ento o dado a ser transferido de maneira imediata vir logo aps os bytes de
endereamento.
Exemplo:
ADD
AX,1000h
* Modo Direto
O modo de endereamento direto feito somando-se os dois bytes seguintes ao
op-code, ao CS, para compor um novo endereo linear.
Exemplo: suponha que o registrador DS contenha B000h. A instruo
MOV
MOV AL,[SI+10h]
MOV [DI-1000h],DX
*Modo Implcito
O modo implcito uma verso simplificada do modo de endereamento direto
indexado. A nica diferena entre eles que, nesse modo, no especificado um
deslocamento.
Exemplo:
MOV AL,[SI]
MOV [DI],DX
MOV AX,[BX+1000h]
MOV DH,[BX+SI]
MOV [BX+DI+1000h],DL
INSTRUES DE ASSEMBLER
PGINA 4
MOV BP,SP
MOV AX,[BP+04h]
MOV [BP+DI+10h],BX
PGINA 5
INSTRUES DE ASSEMBLER
PGINA 6
3 - Instrues Assembly
Neste captulo sero apresentadas as instrues assembly do 8086, que se
aplicam a qualquer microprocessador da famlia 80XXX da Intel
3.1 - Instrues de movimentao de dados
Neste grupo de instrues esto aquelas que permitem manipular dados do tipo
byte, word, doubleword entre memria e registradores do microprocessador. So de
trs tipos:
Instrues de movimentao de uso geral
Instrues para manipulao de stack
Instrues de converso de tipo
3.1.1 - Instrues de movimentao de uso geral
a) MOV - Move
Propsito: Copiar o contedo do operando-fonte para o operando-destino. O
contedo do fonte no afetado
Formato: MOV destino,fonte
Flags: Nenhum afetado
Exemplos: H 7 tipos de instrues MOV:
1 - Do acumulador para a memria
MOV [SI], AL
MOV [BX+DI],AX
MOV [400], AL
2 - Da memria para o acumulador
MOV AL,[BX+2]
MOV AX,[SI]
MOV AL,[400]
3 - Da memria ou registrador para registrador de segmento
MOV ES,BX
MOV DS,[SI]
MOV SS,[BX]
Obs: O registrador CS no pode ser usado como destino.
4 - Do registrador de segmento para a memria ou registrador
MOV AX,CS
MOV CX,SS
INSTRUES DE ASSEMBLER
PGINA 7
MOV [500],DS
5 - De registrador para registrador / da memria ou registrador para registrador
/
INSTRUES DE ASSEMBLER
PGINA 8
PUSH SI
PUSH ES
PGINA 9
POP
AX
POP
DS
POP
[DI]
topo
da pilha
instrues
aritmticas
binrias
dos
processadores
da
famlia
adio,
subtrao,
multiplicao,
diviso,
incremento,
decremento,
PGINA 10
PGINA 11
Exemplos:
ADD
AL,04H
ADD
ADD
AX,SI
ADD
DL,[300]
ADD
[SI+BX+2],AL
da
ADC
AL,04H
ADC
ADC
AX,SI
ADC
DL,[300]
ADC
[SI+BX+2], AL
da
PGINA 12
j) SUB - Subtrao
Propsito: Executar uma subtrao entre dois operandos, um fonte e outro destino,
devolvendo o resultado no destino.
Formato: SUB destino,fonte
Flags: Afetados AF, CF, OF, PF, SF, ZF.
Exemplos:
SUB
BL,04H
SUB
byte ptr[DI],05H
memria DS:DI
SUB
AX,CX
SUB
BX,[SI]
contedo
de BX
SUB
[BX+2],DL
SBB
BL,04H
SBB
byte ptr[DI],05H
PGINA 13
SBB
AX,CX
SBB
BX,[SI]
contedo
contedo
do flag carry
SBB
[BX+2],DL
posio de memria.
Formato: INC destino
Flags: Afetados AF, OF, PF, SF, ZF.
Exemplos:
INC
BL
; Soma 1 ao contedo de BL
INC
posio de memria.
Formato: DEC destino
Flags: Afetados AF, OF, PF, SF, ZF.
Exemplos:
DEC
BX
; Subtrai 1 do contedo de BX
DEC
memria
PGINA 14
CMP
AL,57H
CMP
DI,BX
; Compara os contedos de DI e BX
CMP
[SI],AX
contedo de AX
CMP
CH,[SI+BX+3]
armazenado na
NEG CX,
CL
MOV AX,1234H
MOV BX,6000H
MUL
BX
INSTRUES DE ASSEMBLER
PGINA 15
MOV AX,1234H
MOV BX,6000H
IMUL BX
BL
DIV
BX
em
INSTRUES DE ASSEMBLER
PGINA 16
PGINA 17
AL,AH
DAA
o acumulador AL conter o valor 92H, e no 8CH.
t) DAS - Ajuste decimal aps subtrao
Propsito: Corrigir o resultado presente no acumulador AL, aps uma subtrao
entre dois valores BCD compactados (um dgito em cada nibble), para obter um par de
dgitos BCD compactados.
O procedimento dessa instruo :
1. Se os quatro bits menos significativos de AL esto entre A e F, ou se o flag AF est
ligado, subtrair 06H do contedo do acumulador AL e ligar o flag AF.
2. Se os quatro bits mais significativos de AL esto entre A e F, ou se o flag CF est
ligado, ento subtrair 60H do contedo do acumulador AL e ligar o flag CF.
Formato: DAS
Flags: Afetados AF, CF, PF, SF, ZF.
Exemplo: Suponha que AL contenha o valor 84H e DL o valor 16H. Aps a seqncia
SUB
AL,DL
DAS
o acumulador AL conter o valor 68H, e no 6EH.
3.3.2 - Instrues de alterao para BCD no compactado
u) AAA - Ajuste ASCII aps adio
Propsito: Corrigir o resultado presente no acumulador AL, aps uma soma de dois
dgitos ASCII.
O procedimento dessa instruo :
INSTRUES DE ASSEMBLER
PGINA 18
AL,CL
AAA
o acumulador AX conter o valor 0501H.
v) AAS - Ajuste ASCII aps subtrao
Propsito: Corrigir o resultado presente no acumulador AL, aps uma subtrao
entre dois dgitos ASCII.
O procedimento dessa instruo :
1. Se os quatro bits menos significativos de AL esto entre A e F e o flag AF=0, ento
execute o passo 3.
2. Se os quatro bits menos significativos de AL esto entre A e F, ou se o flag AF=1,
ento subtraia 06H do contedo do acumulador AL, subtraia 01H do contedo de
AH e ligue o flag AF.
3. Apaga os quatro bits mais significativos do registrador AL.
4. Sinaliza o flag CF com o mesmo valor do AF.
Formato: AAS
Flags: Afetados AF, CF; indefinidos, PF, SF, ZF, OF.
Exemplo: Considera que o acumulador AX contenha o valor 0935H. Aps a seqncia
SUB
AL,36H
AAS
o acumulador AX conter o valor 0809H.
x) AAM - Ajuste ASCII aps multiplicao
INSTRUES DE ASSEMBLER
PGINA 19
BL
AAM
o acumulador AX conter o valor 0702H. Observe que se a esse valor somarmos
3030H, teremos em AX dois dgitos numricos em ASCII.
w) AAD - Ajuste ASCII antes de uma diviso
Propsito: Modifica o numerador nos registradores AH ou AL a fim de prepar-lo para
a diviso de dois operandos decimais no compactados, o que resultar num nmero
decimal no compactado vlido. O registrador AH deve conter o dgito superior e o AL
o dgito inferior o resultado desta instruo armazenado no registrador AL. O
registrador AH zerado.
Procedimento executado pela instruo:
1. Multiplica o valor de AH por 10.
2. Soma o contedo de AH a AL.
3. Zera o registrador AH.
Formato: AAD
Flags: Afetados PF, SF, ZF; indefinidos, AF, CF, OF. (os flags so afetados de acordo
com o resultado em AL.)
Exemplo: Suponha que o acumulador AX contenha o valor 0902. Aps a instruo
AAD
o acumulador AX conter o valor 005CH.
INSTRUES DE ASSEMBLER
PGINA 20
NOT
word ptr[SI]
NOT
CL
suponha que no ltimo caso o valor inicial de CL seja 1FH. Aps a instruo, CL
assumiu o valor E0H.
z) AND - Operao lgica AND
Propsito: Executar a funo lgica AND (E) entre cada bit de um operando-fonte e
seu correspondente em um operando-destino, colocando o resultado no operandodestino.
Formato: AND destino,fonte
Flags: Afetados: CF, OF, PF, SF, ZF; indefinido: AF
Exemplo:
AND AL,08H
a-bit.
INSTRUES DE ASSEMBLER
PGINA 21
AND AX,CX
OR BX,0801H
BX e o
posio
XOR AL,AH
XOR DL,[BX]
DL e o
BX.
XOR CX,1234H
PGINA 22
TEST AL,AH
TEST DL,[BX]
ativos, de
memria
(1234H).
3.4.3 - Instrues de rotao e deslocamento
d1) RCL - Rotacione para a esquerda atravs do carry
Propsito: Rotacionar o contedo da locao de memria ou registrador especificado,
para a esquerda, atravs do flag carry. O nmero de vezes a rotacionar 1, ou aquele
contido no registrador CL. O contedo de CL no afetado pela instruo, quando
usado como contador.
Formato:
RCL destino,1 ou
RCL destino, CL
RCL CL,1
RCL AX,CL
de
CF
15/7
MSB
LSB
PGINA 23
RCR destino,1 ou
RCR destino, CL
RCR AL,1
RCR BH,CL
de
DS:0300,
CF
15/7
MSB
LSB
ROL destino,1 ou
ROL destino, CL
ROL DX,1
posio
ROL BH,CL
de
INSTRUES DE ASSEMBLER
PGINA 24
CF
15/7
MSB
LSB
ROR destino,1 ou
ROR destino, CL
ROR AL,CL
de
posio
para a direita.
ROR byte ptr[DI],1 ; Rotaciona o contedo da posio de memria
apontada
para a
direita.
CF
15/7
MSB
LSB
SAL destino,1 ou
SAL destino, CL
PGINA 25
Exemplos:
SAL DX,1
SAL BH,CL
CF
15/7
MSB
LSB
SAR destino,1 ou
SAR destino, CL
SAR AL,CL
SAR BH,1
CF
15/7
MSB
LSB
PGINA 26
SHR destino,1 ou
SHR destino, CL
SHR AL,CL
SHR BH,1
15/7
MSB
LSB
CF
PGINA 27
incondicional est entre -128 a +127 bytes, pode-se especificar um desvio-curto (JMP
SHORT), tambm chamado desvio incondicional relativo curto, com a vantagem de o
deslocamento para o desvio ser expresso por um nico byte, contendo um valor
sinalizado que, ao ser somado ao valor de IP gerar o endereo-alvo. Se a distncia
relativa para onde se dar o desvio for maior que +127 ou -128, ento o endereo
relativo gerado ser um valor sinalizado de 16 bits, o que possibilita desvios por todo
o segmento corrente.
Exemplo:
label1:
-----------
JMP
JMP
INSTRUES DE ASSEMBLER
PGINA 28
JMP
JMP
CX
JMP
dword ptr[BX]
de
DS:BX.
CALL sub_proxima
; Direta, intra-segmento
; Indireta, intra-segmento
; Indireta, inter-segmento
INSTRUES DE ASSEMBLER
PGINA 29
INSTRUES DE ASSEMBLER
PGINA 30
recupera
da
pilha
contedo
dos
registradores
que
foram
INSTRUES DE ASSEMBLER
PGINA 31
Descrio
JA/JNBE
(CF ou ZF)=0
Acima/No abaixo ou
igual
JAE/JNB
CF=0
Acima ou igual/No
abaixo
JB/JNAE
CF=1
Abaixo/No acima ou
igual
JBE/JNA
(CF ou ZF)=1
Abaixo ou igual/No
acima
JC
CF=1
Carry
JE/JZ
ZF=1
Igual/Zero
JNC
CF=0
No carry
JNE/JNZ
ZF=0
No igual/No zero
JNP/JPO
PF=0
Sem
paridade/Paridade
mpar
Maior/No menor ou
igual
INSTRUES DE ASSEMBLER
PGINA 32
JGE/JNL
(SF OF)=0
Maior ou igual/No
menor
JL/JNGE
(SF OF)=1
Menor/No maior ou
igual
JLE/JNG
Menor ou igual/No
maior
JNO
OF=0
Sem estouro
(overflow)
JNS
SF=0
INSTRUES DE ASSEMBLER
PGINA 33
LOOPE alvo ou
LOOPZ alvo
LOOPNE alvo ou
LOOPNZ alvo
execuo
de
uma
operao
string,
estes
registradores
so
PGINA 34
MOV SI,1000H
MOV DI,1500H
MOV CX,200H
; Contador em CX
CLD
REP MOVSW
PGINA 35
CF = 0:
por SI
r1) SCAS/SCASB/SCASW - Busca byte ou word
Propsito: Comparar o elemento indicado por DI, dentro do segmento extra, com o
contedo do acumulador. A instruo efetua a subtrao do byte ou palavra indicada
por DI do contedo do acumulador AL ou AX, afetando porm somente os flags, e no
os operandos. Aps a comparao, o registrador DI automaticamente incrementado
ou decrementado, dependendo do estado do flag de direo. O valor do incremento ou
decremento 1 ou 2, dependendo se a comparao foi realizada entre operandos do
tipo byte ou word, respectivamente.
Diante desta instruo, pode-se utilizar o prefixo REP, que provocar uma
repetio contnua, de acordo com o nmero de vezes especificado em CX, permitindo
assim repetir a comparao em uma seqncia de elementos, at encontrar um que
seja igual ou diferente ao contedo do acumulador.
Formato: SCASB ou SCASW
Flags: Afetados: AF, CF, OF, PF, SF, ZF.
Exemplo:
MOV CX,100
; Grava em CX 0100H
MOV DI,400
pesquisa
MOV AL,FF
CLD
REPNZ SCASB
PGINA 36
CLD
MOV DI,1000H
; Contador em CX
REP STOSW
LODSW
INSTRUES DE ASSEMBLER
PGINA 37
REP
instruo_string
REPZ
instruo_string
REPNZ
instruo_string
MOV CX,200
; Contador em CX
MOV DI,1000
MOV AX,2020
; Dados em AH e AL
REP
STOSW
PGINA 38
INSTRUES DE ASSEMBLER
PGINA 39
PGINA 40
Formato: POPF
Flags: Todos so afetados
3.8 - Instrues de acesso a portas de entrada e sada
g2) IN - L byte ou word de uma porta de E/S
Propsito: Transferir dados (byte ou word) de uma porta de entrada para o
acumulador AL ou AX.
A porta identificada com um valor de 8 bits que permite a acesso a portas
cujos endereos
IN
acumulador, porta
IN
acumulador, DX
ou
OUT
porta, acumulador
OUT
DX, acumulador
ou
PGINA 41
mensagem DB
Curso Assembler $
LEA
DX, mensagem
LEA
SI,[BX+DI+5]
- Trocar
Propsito: Permutar o contedo de dois operandos, que podem ser dois registradores
ou um registrador e uma posio de memria..
Formato: XCHG destino,fonte
Flags: Nenhum afetado
Exemplos:
XCHG AL,CH
XCHG
; Permuta o contedo de AL e CH
SI,DI
XCHG AL,[BX+2]
; Permuta o contedo de SI e DI
; Permute o contedo de AL com o da posio de
- Converter
INSTRUES DE ASSEMBLER
PGINA 42
Exemplo: Considere que no endereo DS:0300 de memria, haja uma tabela com os
seguintes valores:
12
14
16
18
20
22
24
26
28
30
32
34...
INSTRUES DE ASSEMBLER
PGINA 43