Académique Documents
Professionnel Documents
Culture Documents
Instruo MOV
MOV dest,orig
dest orig
A B R1 R5
Modos de movimentao
1. modo imediato
2. modo direto
3. modo indireto
1) IMEDIATO
MOV A,#03h
1
MICROPROCESSADORES
2) DIRETO
MOV A,03h
Se tivermos, por exemplo, o byte 4Dh no endereo 03h, esse valor (4Dh)
ser colocado no registrador A.
3) INDIRETO
MOV A,@R0
IMPORTANTE!!!
Esse modo usa somente os registradores RO e R1. ( @R0 e @R1 ).
2
MICROPROCESSADORES
EXERCCIOS
END. CONTEDO
0000 10 00 02 FC 49 64 A0 30
0008 1D BC FF 90 5B 40 00 00
0010 00 00 01 02 03 04 05 06
0018 07 08 09 0A FF FE FD FC
0020 FB FA A5 5A DD B6 39 1B
... ...
a) MOV A,#7EH
b) MOV A,03H
c) MOV A,0CH
d) MOV R0,#1CH
MOV A,R0
e) MOV R1,1BH
MOV A,@R1
3
MICROPROCESSADORES
acumulador
Rtemp
U.L.A.
1. INSTRUO DE SOMA
4
MICROPROCESSADORES
Exemplo:
CLR C ;carry=0
SUBB A,B ;A-B-0 = A-B
5
MICROPROCESSADORES
INSTRUES LGICAS
9EH = 10011110
AND 3BH = 00111011
1AH = 00011010
2. INSTRUO OR LGICO
9EH = 10011110
OR 3BH = 00111011
H =
6
MICROPROCESSADORES
9EH = 10011110
XOR 3BH = 00111011
H =
MSCARAS LGICAS
3BH = 00111011
AND OFH = 00001111 MSCARA
OBH = 00001011
VALOR MODIFICADO
No exemplo acima foi escolhida uma mscara com o valor 0FH para
melhor ilustrar os exemplos. Fique bem claro: a mscara pode conter
qualquer valor de 8 bits.
7
MICROPROCESSADORES
3BH = 00111011
OR OFH = 00001111
3FH = 00111111
3BH = 00111011
XOR OFH = 00001111
34H = 00110100
Isso nos permite concluir que, com o uso das mscaras podemos causar
qualquer efeito em cada um dos bits do valor original: pode-se zer-los,
set-los ou invert-los.
XXXXXXXX
AND OFH = 00001111
0000XXXX
XXXXXXXX
OR OFH = 00001111
XXXX1111
XXXXXXXX
XOR OFH = 00001111
XXXXXXXX
Para obter efeitos mesclados, como por exemplo, ter alguns bits do valor
original zerados e outros invertidos devem ser usadas duas mscaras para
obter o valor desejado.
8
MICROPROCESSADORES
3BH = 00111011
??? H = MSCARA 1
H =
??? H = MSCARA 1
H =
PROGRAMA:
0 1 0 0 1 0 1 1
1 0 0 1 0 1 1 X
Deslocamento faz com que um o ltimo bit no sentido Rotao faz com que o ltimo bit ocupe o
da rotao seja descartado e um valor predeterminado lugar do primeiro.
(normalmente 0) seja introduzido no primeiro bit.
descartado 0 1 0 0 1 0 1 1 0 0 1 0 0 1 0 1 1
1 0 0 1 0 1 1 0 1 0 0 1 0 1 1 0
RR A ;rotate right
direita
0 1 0 0 1 0 1 1
9
MICROPROCESSADORES
Faz a rotao dos bits de A uma posio em direo ao LSB. O bit LSB
colocado no lugar do MSB. As figuras ao lado exemplificam essa rotao.
0 1 0 0 1 0 1 1
1 0 1 0 0 1 0 1
RL A ;rotate left
esquerda
0 1 0 0 1 0 1 1
Faz a rotao dos bits de A uma posio em direo ao MSB. O bit MSB
colocado no lugar do LSB. As figuras ao lado exemplificam essa rotao.
Um exemplo de um byte genrico 01001011
aps sofrer rotao direita.
0 1 0 0 1 0 1 1
1 0 0 1 0 1 1 0
direita CARRY
0 1 0 0 1 0 1 1 0
Faz a rotao dos bits de A uma posio em direo ao LSB. O bit LSB
colocado no CARRY e, este, no lugar do MSB.
10
MICROPROCESSADORES
0 1 0 0 1 0 1 1 0
0 0 1 0 0 1 0 1 1
esquerda CARRY
0 1 0 0 1 0 1 1 0
Faz a rotao dos bits de A uma posio em direo ao MSB. O bit MSB
colocado no CARRY e, este, no lugar do LSB.
0 0 1 0 0 1 0 1 1
0 1 0 0 1 0 1 1 0
EXEMPLOS
RL A
RL A
RL A
RL A
MOV R4,#0
MOV A,R0
RLC A
MOV A,R4
RLC A
MOV R4,A
MOV A,R1
11
MICROPROCESSADORES
RLC A
MOV A,R4
RLC A
MOV R4,A
MOV A,R2
RLC A
MOV A,R4
RLC A
MOV R4,A
R0
R1
R2
R4
12
MICROPROCESSADORES
INC destino
Exemplo:
MOV A,#14h
INC A
Sintaxes vlidas:
INC A
INC DPL
INC 02h
INC @RO
DEC destino
Exemplo:
MOV B,#23h
DEC A
Sintaxes vlidas:
DEC R5
DEC 79h
DEC @R1
DEC #03h
EXERCCIOS
13
MICROPROCESSADORES
Instrues de desvio
LJMP endereo
Exemplo:
2. DESVIO MDIO
AJMP endereo
14
MICROPROCESSADORES
}
0000h
2 KBytes
07FFh
0800h
0FFFh
1000h
17FFh
SJMP endereo_relativo
SJMP +05h
Exemplo:
15
MICROPROCESSADORES
0169 04 INC A
016A AE F0 MOV R6,A
Outro exemplo:
Pergunta: para onde ser feito o desvio quando for executada a instruo
SJMP acima?
resp.: ___________________
Exemplo 1:
0150 74 03 MOV A,#03h
0152 75 F0 02 MOV B,#02h
0155 25 F0 ADD A,B
0157 80 01 SJMP -09 (______h)
0159 04 INC A
015A AE F0 MOV R6,A
Exemplo 2:
0290 74 03 MOV A,#03h
0292 75 F0 02 MOV B,#02h
0295 25 F0 ADD A,B
0297 80 01 SJMP -09 (______h)
0299 04 INC A
029A AE F0 MOV R6,A
16
MICROPROCESSADORES
17
MICROPROCESSADORES
DESVIOS CONDICIONAIS
JZ endereo_relativo
MOV A0
A,#15h
se JZ passa se A = 0
repete: JZ passa
DEC A DEC A
LJMP repete
passa: MOV A,37h
passa:
JNZ endereo_relativo
soluo:
MOV B,#1
MOV A,#9
repete: INC B
18
MICROPROCESSADORES
DEC A
JNZ repete
outra soluo:
MOV B,#1
repete: INC B
MOV A,B
XRL A,#0Ah ; poderia ser XRL A,#10
JNZ repete
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
soluo:
repete: MOV A,P1 ;l o contedo
das chaves
JZ repete ;se nada for
pressionado,
repete
JC endereo_relativo
JNC endereo_relativo
JB end-bit,endereo_relativo
19
MICROPROCESSADORES
JNB end-bit,endereo_relativo
0000H
Causa o desvio se o o contedo
do endereo de bit = 0.
Para compreender o
001EH funcionamento dessas duas
001FH instrues devemos analisar um
0020H 07H 06H 05H 04H 03H 02H 01H 00H
0021H 0FH 0EH 0DH 0CH 0BH 0AH 09H 08H novo conceito: Os 8051 foram
0022H 17H
1FH
16H
1EH
15H
1DH
14H
1CH
13H
1BH
12H
1AH
11H
19H
10H
18H
construdos para terem dois
0023H
0024H 27H 26H 25H 24H 23H 22H 21H 20H modos de endereamento da
0025H 2FH
37H
2EH
36H
2DH
35H
2CH
34H
2BH
33H
2AH
32H
29H
31H
28H
30H
memria RAM interna:
0026H Regio onde
0027H 3FH 3EH 3DH 3CH 3BH 3AH 39H 38H ocorre o endereamento de byte
0028H 47H 46H 45H 44H 43H 42H 41H 40H endereamento endereamento de bit
0029H 4FH 4EH 4DH 4CH 4BH 4AH 49H 48H de bit
002AH 57H 56H 55H 54H 53H 52H 51H 50H Endereamento de byte o que
002BH 5FH 5EH 5DH 5CH 5BH 5AH 59H 58H vimos at ento; exemplo: MOV
002CH 67H 66H 65H 64H 63H 62H 61H 60H
002DH 6FH 6EH 6DH 6CH 6BH 6AH 69H 68H A,1CH.
002EH 77H 76H 75H 74H 73H 72H 71H 70H
002FH 7FH 7EH 7DH 7CH 7BH 7AH 79H 78H
0030H O endereamento de bit ocorre a
0031H partir do endereo 0020H at
0032H
002FH. Observe o esquema a
seguir (figura 2):
O endereo de byte usado nas instrues que acessam todos os 8 bits que
compem um byte nesse local da memria (ver figura 3a). O endereo de
bit usado por outras instrues que acessam 1 nico bit nesse local da
memria (ver figura 3b).
20
MICROPROCESSADORES
0020H C5H = 1 1 0 0 0 1 0 1
00H
Endereo de byte 01H
02H
03H
04H Endereo de bit
05H
06H
07H
Figura 3a. Acesso ao endereo de byte 0020H.
0020H C5H = 1 1 0 0 0 1 0 1
00H
Endereo de byte 01H
02H
03H
04H Endereo de bit
05H
06H
07H
Figura 3b. Acesso ao endereo de bit 03H.
JB 00H,+12
nome exemplo
JB JB 03H,+0CH
JNB JNB 03H,+0CH
CLR CLR 03H
SETB SETB 03H
CPL CPL 03H
ANL ANL C,03H
ORL ORL C,03H
XRL XRL C,03H
MOV MOV C,03H
MOV MOV 03H,C
21
MICROPROCESSADORES
CLR endereo_de_bit
SETB endereo_de_bit
CPL endereo_de_bit
ANL C,endereo_de_bit
ORL C,endereo_de_bit
XRL C,endereo_de_bit
MOV C,endereo_de_bit
MOV endereo_de_bit,C
MOV 20H,#C5H
ou
SETB 00H
CLR 01H
SETB 02H
CLR 03H
CLR 04H
CLR 05H
22
MICROPROCESSADORES
SETB 06H
SETB 07H
Parece muito melhor usar uma nica instruo que manipula byte do que
usar 8 instrues que manipulam bit. Entretanto, se desejarmos zerar
apenas um determinado bit (o terceiro) teramos que fazer:
MOV A,20H
ANL A,#11111011B ; o mesmo que ANL A,#FBH
MOV 20H,A
ou
CLR 02H
CJNE param1,param2,endereo_relativo
Exemplo:
DJNZ param,endereo_relativo
23
MICROPROCESSADORES
MOV B,#valor2 ;val.inicial
MOV R2,#valor3 ;val.inicial
MOV R7,#5 ;num.de repeties
pt ADD A,B ;procedimento
SUBB A,R2 ;procedimento
DJNZ R7,pt ;controla a repetio dos
procedimentos
...prximas instrues
EXERCCIOS
24
MICROPROCESSADORES
Para que uma estrutura seja apropriada ela deve ser eficiente de acordo
com o necessrio. Por exemplo: uma lista telefnica com os nomes de
pessoas de uma cidade inteira precisa ser bem organizada para permitir um
acesso rpido informao desejada. No apropriado usar uma estrutura
seqencial pois se a informao for uma das ltimas da seqncia
demorar muito para ser encontrada. Por outro lado, quando pouca
informao estiver envolvida, no necessrio usar estruturas complexas
que acabam gastando muito espao somente com seus indexadores.
1. FILA
Tambm conhecida como memria FIFO (First In, First Out). uma
estrutura seqencial.
ENTRADA SADA
inicio inicio
25
avana E S
E=S? fila vazia
MICROPROCESSADORES
INI = 30H
FIM = 37H
2. PILHA
Tambm conhecida como memria LIFO (Last In, First Out). Como a fila,
a pilha tambm uma estrutura seqencial.
26
MICROPROCESSADORES
ENTRADA SADA
inicio inicio
S S
S=FIM? pilha cheia S=INI? pilha vazia
N N
armazena retorna S
byte no
endereo S
l byte no
avana S fim fim
endereo S
INI = 30H
FIM = 37H
Nesse exemplo, os byte foram colocados na ordem: 9Dh, F1h, 00h, 3Fh,
20h e 1Ah. Quando se deseja retirar as informaes dessa estrutura
comea-se pela ltima que entrou. Os bytes so retirados na ordem: 1Ah,
20h, 3Fh, 00h, F1h e 9Dh.
A caracterstica mais importante dessas estruturas de memria:
_________________________.
27
MICROPROCESSADORES
EXERCCIOS:
ENDER. CONTEDO
0000 10 00 02 FC 49 64 A0 30
0008 1D BC FF 90 5B 40 00 00
0010 00 00 01 02 03 04 05 06
0018 07 08 09 0A FF FE FD FC
0020 FB FA A5 5A DD B6 39 1B
28
MICROPROCESSADORES
Subrotinas
1. CALL longnquo:
CALL x
Desse modo, possvel fazer vrias chamadas a uma mesma subrotina sem
que o P se perca, pois o endereo de retorno estar armazenado na PILHA
e nunca deixar o P se perder.
29
MICROPROCESSADORES
Observe agora:
30
MICROPROCESSADORES
31
MICROPROCESSADORES
0100 74 7D refaz: MOV A,#7Dh
0102 75 F0 55 MOV B,#55h
A prxima instruo :
Novamente ocorre uma chamada a uma subrotina, somente que agora essa
chamada ocorreu dentro da subrotina sub_1. A chamada feita para sub_2.
Para executar essa instruo, o P realiza os seguintes passos:
1) Pega o endereo da prxima instruo (011Fh) e coloca-o na PILHA.
2) desvia para o endereo onde est sub_2 (0122h)
32
MICROPROCESSADORES
que faz a operao AND (A AND 0Fh). O valor de A fica sendo 0Eh.
Depois disso, vem a instruo:
012B 22 RET
0126 15 F0 DEC B
A prxima instruo :
0128 22 RET
A prxima instruo :
0121 22 RET
33
MICROPROCESSADORES
ERROS DE PROGRAMAO
34
MICROPROCESSADORES
35
MICROPROCESSADORES
1 0030 ORG 0030H
2
3 0030 E5 90 inicio MOV A,P1
4 0032 12 00 3B LCALL verif_letra
5 0035 20 00 00 parte_2 JB 00H,pula
6
7 ;(instrues que colocam a letra no visor)
8
9 0038 02 00 30 pula LJMP inicio
10
11 003B verif_letra
12 003B C2 00 CLR 00H ;bit 0 = 0 (sinaliza no-letra)
13 003D C0 E0 PUSH A ;guarda reg A
14 003F C3 CLR C ;no influir na subtrao
15 0040 94 41 SUBB A,#41H ;< 41H = 'A' ?
16 0042 50 09 JNC nao_e ;sim: no letra
17 0044 D0 E0 POP A ;resgata A
18 0046 C3 CLR C ;no influir na subtrao
19 0047 94 5B SUBB A,#5BH ;> 5AH = 'Z' ?
20 0049 40 02 JC nao_e ;sim: no letra
21 004B D2 00 SETB 00H ;bit 0 = 1 (sinaliza letra)
22 004D 22 nao_e RET ;retorna
36