• Nenhum resultado encontrado

Parte 1 IDE DEFINIÇÃO 1. DEFINIÇÃO 2. ASSEMBLY 3. INSTRUÇÕES PIC16F CONJUNTO DE INSTRUÇÕES 5. BITS DE CONFIGURAÇÃO 6. LITERATURA.

N/A
N/A
Protected

Academic year: 2021

Share "Parte 1 IDE DEFINIÇÃO 1. DEFINIÇÃO 2. ASSEMBLY 3. INSTRUÇÕES PIC16F CONJUNTO DE INSTRUÇÕES 5. BITS DE CONFIGURAÇÃO 6. LITERATURA."

Copied!
32
0
0

Texto

(1)

1 25/04/2017

Parte 1

IDE

2 25/04/2017

1. DEFINIÇÃO

2. ASSEMBLY

3. INSTRUÇÕES PIC16F877

4. CONJUNTO DE INSTRUÇÕES

5. BITS DE CONFIGURAÇÃO

6. LITERATURA

DEFINIÇÃO

1

3 25/04/2017

DEFINIÇÃO

DEFINIÇÃO

1

4 25/04/2017

• Editor de texto para entrada do código. • Debugging do código.

• Simulador de dispositivo. • Assembler (montador). • Compilador.

• Outros itens (opcionais).

Componentes

DEFINIÇÃO

1

5 25/04/2017

Editor de texto

• Os montadores e compiladores atuais possuem seus próprios editores de texto.

• Os primeiros montadores e compiladores não possuíam editor de texto.

• Era necessário chamar o utilitário IDE na linha de comando (DOS, por exemplo), usando, como argumento, o arquivo texto contendo o programa a ser gravado no dispositivo. • Editores de texto embutidos em IDE usam cores pra auxiliar

a criação ou edição do programa.

DEFINIÇÃO

1

6 25/04/2017

Assembler

• As primeiras versões de IDE para gravação de P’s e MCU’s permitiam, apenas, o uso dos códigos binários (opcodes).

• Versões de IDE para gravação de P’s e MCU’s permitiam, apenas, o uso dos códigos Assembler.

• Versões atuais permitem o uso de pseudocódigos, que facilitam a criação ou edição do programa.

• O IDE converte o programa contendo os pseudocódigos para o programa em linguagem assembler pura.

(2)

DEFINIÇÃO

1

7 25/04/2017

Debugger

• As primeiras versões de IDE para

gravação de P’s e MCU’s possuíam, apenas, o procedimento de gravação do chip.

• Não era fornecido utilitário para verificação de erros básicos na programação. • Versões atuais fornecem opções para a

busca por erros básicos.

DEFINIÇÃO

1

8 25/04/2017

Debugger

• Estrutura: O texto é reconhecido como um programa. • Sintaxe: Os mnemônicos, códigos e números estão corretos. • Escopo de variáveis: Nenhum número é maior do que a maior capacidade de representação para o tipo de variável em questão.

• Escopo de endereços do chip: Os tamanhos das memórias, das portas, etc, são respeitados. É preciso identificar o modelo do chip. • Outros.

DEFINIÇÃO

1

9 25/04/2017

Simulador

• No passado, não havia como prever se o programa estava correto ou não.

• A única forma de verificar era por meio da gravação do chip e da execução no próprio chip.

• A gravação pode ser bastante demorada, tornando o trabalho de criação/edição/correção bastante tedioso.

• Posteriormente, foi acrescentado o recurso da

simulação do chip no computador.

• Somente depois de concluídas todas as verificações no simulador é que se parte para a verificação na execução pelo chip.

DEFINIÇÃO

1

10 25/04/2017

Compilador

• A inclusão de compilador no IDE permite o uso de linguagens de alto nível.

• Estas linguagens são mais compreensíveis ao ser humano. • Qualquer linguagem de alto nível pode ser usada em

qualquer chip.

• A vantagem do uso de um compilador específico para o modelo de chip em questão é que o debugger observa os limites de endereçamento e os periféricos disponíveis.

DEFINIÇÃO

1

11 25/04/2017

Compilador

• Compiladores para chips específicos podem ser pacotes de grande valor comercial.

• Há casos nos quais são oferecidos o ambiente de programação em linguagem de alto nível e, como brinde, recebe-se o kit com o módulo gravador, junto com o chip.

DEFINIÇÃO

1

12 25/04/2017

(3)

DEFINIÇÃO

1

13 25/04/2017

Compilação

Código em linguagem C Código em linguagem de máquina

DEFINIÇÃO

1

14 25/04/2017

Exemplo de compilador C para PIC

®

DEFINIÇÃO

1

15 25/04/2017

Compiladores C, Basic e Pascal

DEFINIÇÃO

1

16 25/04/2017

Compilador de alto nível

DEFINIÇÃO

1

17 25/04/2017

Linguagem

• A linguagem de compilação não depende do chip. • Qualquer linguagem de compilação pode ser usada para

qualquer MCU, desde que haja compilador compatível. • Um compilador usa uma linguagem específica pra um

chip específico.

ASSEMBLY

2

18 25/04/2017

ASSEMBLY

(4)

ASSEMBLY

2

19 25/04/2017

• Linguagem de máquina: O dispositivo entende.

• Linguagem humana: O ser humano entende.

Linguagens

• Linguagem de máquina: Zeros e uns.

• Linguagem humana: Palavras e números.

• Assembly: Mnemônicos e números hexadecimais. • Linguagem de máquina: Montado.

• Linguagem humana: Não montado.

ASSEMBLY

2

20 25/04/2017

• “To Assemble”: Montar, organizar, reunir.

• Assembler: Linguagem de montagem.

• Assembly: Código de montagem (não montado).

• Disassembly: Assembly obtido a partir do código montado. • Assembly é a linguagem humana de mais baixo nível. • Assembly depende do P, da MCU ou da DSP usada.

Definição

ASSEMBLY

2

21 25/04/2017

• Mnemônicos são palavras fáceis de entender. • Mnemônicos usam, apenas, letras.

• As letras devem ser maiúsculas. • Mnemônicos são palavras curtas.

• Os mnemônicos são específicos para o dispositivo. • Dispositivos diferentes podem usar mnemônicos diferentes. • Os mnemônicos são digitados pelo programador.

• Cada instrução recebe um mnemônico.

• Disassembly: Assembly obtido a partir do código montado. • Preferencialmente, usar fonte courier new.

Mnemônicos

ASSEMBLY

2

22 25/04/2017

• É a conversão da linguagem de montagem (assembler) para linguagem de máquina.

• É a conversão do código assembly para o código montado. • Código montado é o código binário.

• A linguagem de montagem (assembler) usa: • Mnemônicos de instrução.

• Parâmetros numéricos para as instruções. • A linguagem de máquina usa bits.

Montagem

ASSEMBLY

2

23 25/04/2017

• A relação entre o código em linguagem de montagem e o código em linguagem de máquina é biunívoca. • A relação entre a instrução e seu opcode é

biunívoca.

• Em alguns dispositivos processadores, a tabela de montagem possui algumas irrelevâncias (don’t care – X) em alguns bits de algumas instruções.

• Essas irrelevâncias fazem com que a relação biunívoca seja quebrada.

• Geralmente, os montadores substituem as

irrelevâncias por zero.

Montagem

ASSEMBLY

2

24 25/04/2017

• A conversão do código feito em linguagem assembly para o código em linguagem de máquina é chamado de montagem. • A conversão do código feito em linguagem de compilação para

o código em linguagem de máquina é chamado de compilação.

• Compiladores empregam códigos específicos da própria

linguagem.

• A linguagem de compilação não depende do dispositivo empregado, não usa os seus mnemônicos.

• Compiladores não permitem que o usuário lide com opcodes e instruções de máquina.

• Compiladores, geralmente, não fornecem o código assembly sobre o qual a montagem foi realizada.

• Compiladores podem ser de baixo nível e de alto nível.

(5)

ASSEMBLY

2

25 25/04/2017

• A compilação é feita pelo compilador (Basic, Pascal, C, C++, Delphy, Java, etc).

• A montagem é feita pelo montador (assembler).

• O programa editor de assembly pode ser constituído de um simples editor de textos.

• O programa montador consiste de um programa separado do editor assembly e alguns montadores não possuem o editor, o arquivo texto é carregado como parâmetro da montagem.

Montagem

ASSEMBLY

2

26 25/04/2017

• Cada dispositivo necessita ter seu próprio montador. • Dispositivos diferentes podem ter montadores compatíveis. • Para aumentar a compatibilidade entre programas, os P’s

são agrupados em famílias com montadores compatíveis. • Exemplos:

• IA32 ou i386 ou x86-32 (32 bits).

• IA32-EM64T ou x86-64 (64 bits).

Montagem

ASSEMBLY

2

27 25/04/2017

• Alguns editores assembly permitem a inclusão de códigos que não fazem parte do assembly puro, chamados de pseudocódigos (diretivas de montagem, comentários, etc). • Estes pseudocódigos permitem que se utilize nomes no

lugar de endereços.

• Endereços podem se referir a registradores, a bits de registradores e à program memory.

• Estas diretivas tem a função de guiar a criação do código a ser montado, de modo que o usuário não precise lidar diretamente com o código assembly, mas, sim, com um

código que apresenta algumas características de

linguagem de compilação.

• Evitaremos o uso de certas diretivas para proporcionar o aprendizado da linguagem assembler.

Pseudocódigos

ASSEMBLY

2

28 25/04/2017

• Sabendo qual o modelo do dispositivo, pode-se converter o seu código de máquina em código de montagem.

• Esta operação é chamada de desmontagem (disassembly). • O código desmontado somente pode ser obtido usando o

assembly puro, sem os recursos adicionais do montador.

Desmontagem

ASSEMBLY

2

29 25/04/2017

• Uma e, somente, uma instrução por linha. • A instrução começa pelo mnemônico.

• O mnemônico é uma palavra, não contém números. • O mnemônico usa somente letras maiúsculas. • Após o mnemônico, vem os argumentos da instrução. • Os argumentos são numéricos.

• Os números são hexadecimais.

• Pode haver zero, um ou dois argumentos.

Código assembly puro

Estrutura

ASSEMBLY

2

30 25/04/2017

• Qualquer outra informação que não seja o mnemônico da instrução e seus argumentos numéricos não fazem parte do código assembly puro.

• O código assembly puro pode ser obtido no disassembly. • O disassembly fornece, apenas, o código assembly puro. • Informações adicionais não podem ser obtidas no disassembly. • A relação entre o código disassembly e o código montado é

biunívoca.

(6)

ASSEMBLY

2

31 25/04/2017

• O código assembly pode conter outras informações

além do assembly puro que facilitam a

elaboração/compreensão do programa.

• Estas extensões facilitam a elaboração do programa.

• Essas extensões podem ser diretivas de

programação, variáveis, constantes, etc.

• Essas extensões são específicas do fabricante do programa montador. Cada fabricante pode ter o seu conjunto próprio de extensões.

• Essas extensões são perdidas no código

disassembly.

• Cores são usadas para facilitar o desenvolvimento de programas no ambiente assembler.

Código assembly

ASSEMBLY

2

32 25/04/2017

Debuging

Assembly com extensões Assembly puro

Conversão feita manualmente

ou automaticamente pelo ambiente de desenvolvimento. Impossível Digitação

ASSEMBLY

2

33 25/04/2017

Debuging

• Tanto o código assembly com extensões como o código assembly puro estão em linguagem humana. • É na conversão do código assembly com extensões

para o código assembly puro que a verificação de erros é realizada.

• Se o código pôde ser escrito como assembly puro, é porque nenhum erro de sintaxe e de escopo foi encontrado.

• Uma vez “debugado”, o código já pode ser montado.

ASSEMBLY

2

34 25/04/2017

Ambiente assembler

Assembly com extensões Assembly puro Linguagem de máquina Montagem Desmontagem Chip Programação Leitura Usuário Automático 001101101011 101001001010 101010001010 101010000110

ASSEMBLY

2

35 25/04/2017

Ambiente assembler

Editor de texto ou de hipertexto Debugger

Montador Gravador do chip

ASSEMBLY

2

36 25/04/2017

Ambiente compiler

Linguagem de alto nível Linguagem de montagem Linguagem de máquina Chip Montagem Desmontagem Programação Leitura Compilação Usuário

A parte em vermelho geralmente não é disponibilizada.

0011 01101011 1010 01001010 1010 10001010 1010 10000110

(7)

ASSEMBLY

2

37 25/04/2017

• Sintaxe:

• Mnemônico de instrução inválido. • Escopo:

• Dado inválido. • Endereço inválido. • Parâmetro inválido.

• Erro em parâmetros além do assembly puro.

Debugger

Tipos de erro

ASSEMBLY

2

38 25/04/2017

• O debugger realiza a descoberta de erros porque ele sabe qual o modelo de P/MCU/DSP a ser usado. • É preciso definir o modelo do dispositivo.

• É preciso que o montador seja compatível com o modelo. • O montador compatível possui todos os parâmetros necessários do dispositivo para que seja feita a busca por erros de sintaxe ou de escopo.

Debugger

ASSEMBLY

2

61. JA 62. JAE 63. JB 64. JBE 65. JNA 66. JNAE 67. JNB 68. JNBE 69. JC 70. JNC 39 25/04/2017

Mnemônicos P x86-32 (resumido)

1. MOV 2. XCHG 3. STC 4. CLC 5. CMC 6. STD 7. CLD 8. STI 9. CLI 10. PUSH 11. PUSHF 12. PUSHA 13. POP 14. POPF 15. POPA 16. CBW 17. CWD 18. CWDE 19. IN 20. OUT 21. ADD 22. ADC 23. SUB 24. SBB 25. DIV 26. IDIV 27. MUL 28. IMUL 29. INC 30. DEC 31. CMP 38. NEG 39. NOT 40. AND 41. OR 42. XOR 43. SHL 44. SHR 45. NOP 46. LEA 47. INT 48. CALL 49. JMP 50. JE 51. JZ 52. JCXZ 53. JP 54. JPE 55. RET 56. JNE 57. JNZ 58. JECXZ 59. JNP 60. JPO Transfer 32. SAL 33. SAR 34. RCL 35. RCR 36. ROL 37. ROR

Arithmetic Logic Misc

Jumps Jumps Unsigned 71. JG 72. JGE 73. JL 74. JLE 75. JNG 76. JNGE 77. JNL 78. JNLE 79. JO 80. JNO 81. JS 82. JNS Jumps Signed http://w w w.jegerlehner.ch/intel/IntelCodeTable.pdf CISC

ASSEMBLY

2

40 25/04/2017

Exemplos de P x86-32

1. Intel®Pentium processor

2. Intel®Pentium Pro processor

3. Intel®Pentium II processor

4. Intel® Pentium II Xeon processor

5. Intel® Celeron processor

6. Intel® Pentium III processor

7. Intel® Pentium III Xeon processor

8. AdvancedMicroDevices©Athlon processor

9. AdvancedMicroDevices©Opteron processor

http://docs.oracle.com/cd/E19253-01/817-5477/817-5477.pdf CISC

ASSEMBLY

2

41 25/04/2017

Mnemônicos ARM

1. ABS 2. ACS 3. ADC 4. ADD 5. ADF 6. ADR 7. ADRL 8. ALIGN 9. AND 10.ASL 11.ASN 12.ASR 13.ATN 14.B 15.BIC 16.BKPT 17.BL 18.BLX 19.BX 20.CDP 21.CDP2 22.CLZ 23.CMF 24.CMN 25.CMP 26.CNF 27.COS 28.DCx 29.DVF 30.EOR 31.EQUx 32.EXP 33.FABS 34.FADD 35.FCMP 36.FCVTDS 37.FCVTSD 38.FCPY 39.FDIV 40.FDV 81.LDRSB 82.LDRSH 83.LFM 84.LGN 85.LOG 86.LSL 87.LSR 88.MCR 89.MCR2 90.MCRR 91.MLA 92.MNF 93.MOV 94.MRC 95.MRC2 96.MRRC 97.MRS 98.MSR 99.MUF 100. MUL 101. MVF 102. MVN 103. NEG 104. NOP 105. NRM 106. OPT 107. ORR 108. ORR 109. PLD 110. POL 111. POP 112. POW 113. PUSH 114. QADD 115. QDADD 116. QDSUB 117. QSUB 118. RDF 119. RFC 120. RFS 41.FIX 42.FLD 43.FLDMDB 44.FLDMIA 45.FLT 46.FMAC 47.FMDHR 48.FMDLR 49.FMRDH 50.FMRDL 51.FML 52.FMSC 53.FMRS 54.FMSR 55.FMUL 56.FMRX 57.FMSTAT 58.FMXR 59.FNEG 60.FNMAC 61.FNMSC 62.FNMUL 63.FRD 64.FSITO 65.FSQRT 66.FST 67.FSTMDB 68.FSTMIA 69.FSUB 70.FTOSI 71.FTOUI 72.FUITO 73.LDC 74.LDC2 75.LDF 76.LDM 77.LDMIA 78.LDR 79.LDRB 80.LDRH 121. RMF 122. RND 123. ROR 124. RPW 125. RRX 126. RSB 127. RSC 128. RSF 129. SBC 130. SFM 131. SIN 132. SMLA 133. SMLAL 134. SMLAW 135. SMUL 136. SMULL 137. SMULW 138. SQT 139. STC 140. STC2 141. STF 142. STM 143. STMIA 144. STR 145. STR 146. STRB 147. STRH 148. STRSB 149. STRSH 150. SUB 151. SUF 152. SWI 153. SWP 154. TAN 155. TEQ 156. TST 157. UMLAL 158. UMULL 159. URD 160. WFC 161. WFS h ttp :// w w w .h e yr ic k. c o .u k/ a s se m b le r/q fin d e r.h tm l

ASSEMBLY

2

42 25/04/2017

Mnemônicos AVR

1. ADD 2. ADC 3. SUB 4. SUBI 5. SBC 6. SBCI 7. AND 8. ANDI 9. OR 10. ORI 11. EOR 12. COM 13. NEG 14. SBR 15. CBR 16. INC 17. DEC 18. TST 19. CLR 20. SER 53. LD 54. ST 55. MOV 56. LDI 57. IN 58. OUT 59. LPM 21. RJMP 22. CALL 23. RET 24. RETI 25. CPSE 26. CP 27. CPC 28. CPI 29. SBRC 30. SBRS 31. SBIC 32. SBIS 33. BRBS 34. BRBC 35. BREQ 36. BRNE 37. BRCS 38. BRCC 39. BRSH 40. BRLO 41. BRMI 42. BRPL 43. BRGE 44. BRLT 45. BRHS 46. BRHC 47. BRTS 48. BRTC 49. BRVS 50. BRVC 51. BRIE 52. BRID 60. SBI 61. CBI 62. LSL 63. LSR 64. ROL 65. ROR 66. ASR 67. SWAP 68. BSET 69. BCLR 70. BST 71. BLD 72. SEC 73. CLC 74. SEM 75. CLN 76. SEZ 77. CLZ 78. SEI 79. CLI 80. SES 81. CLS 82. SEV 83. CLV 84. SET 85. CLT 86. SEH 87. CLH 88. NOP 89. SLEEP 90. WDR h ttp :// e n .w ik ip e d ia .o rg /w ik i/A tm e l_ A V R _ in s tru ct io n _ s e t Aritmética Desvio Transferência Sobre bits

(8)

ASSEMBLY

2

43 25/04/2017

Mnemônicos 8-bit MCU Intel

®

8051

h ttp :// w w w .w in .tu e .n l/~ a e b /c o m p /8 0 5 1 /s e t8 0 5 1 .h tm l 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x00 NOP AJMP LJMP RR INC INC INC INC INC INC INC INC INC INC INC INC 0x10 JBC ACALL LCALL RRC DEC DEC DEC DEC DEC DEC DEC DEC DEC DEC DEC DEC 0x20 JB AJMP RET RL ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD 0x30 JNB ACALL RETI RLC ADDC ADDC ADDC ADDC ADDC ADDC ADDC ADDC ADDC ADDC ADDC ADDC 0x40 JC AJMP ORL ORL ORL ORL ORL ORL ORL ORL ORL ORL ORL ORL ORL ORL 0x50 JNC ACALL ANL ANL ANL ANL ANL ANL ANL ANL ANL ANL ANL ANL ANL ANL 0x60 JZ AJMP XRL XRL XRL XRL XRL XRL XRL XRL XRL XRL XRL XRL XRL XRL 0x70 JNZ ACALL ORL JMP MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV 0x80 SJMP AJMP ANL MOVC DIV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV 0x90 MOV ACALL MOV MOVC SUBB SUBB SUBB SUBB SUBB SUBB SUBB SUBB SUBB SUBB SUBB SUBB 0xa0 ORL AJMP MOV INC MUL ? MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV 0xb0 ANL ACALL CPL CPL CJNE CJNE CJNE CJNE CJNE CJNE CJNE CJNE CJNE CJNE CJNE CJNE 0xc0 PUSH AJMP CLR CLR SWAP XCH XCH XCH XCH XCH XCH XCH XCH XCH XCH XCH 0xd0 POP ACALL SETB SETB DA DJNZ XCHD XCHD DJNZ DJNZ DJNZ DJNZ DJNZ DJNZ DJNZ DJNZ 0xe0 MOVX AJMP MOVX MOVX CLR MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV 0xf0 MOVX ACALL MOVX MOVX CPL MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV

ASSEMBLY

2

44 25/04/2017 Instructions OpCode INC A 0x04

INC iram addr 0x05

INC @R0 0x06 INC @R1 0x07 INC R0 0x08 INC R1 0x09 INC R2 0x0A INC R3 0x0B INC R4 0x0C INC R5 0x0D INC R6 0x0E INC R7 0x0F INC DPTR 0xA3 Instructions OpCode ADD A,#data 0x24 ADD A,iram addr 0x25

ADD A,@R0 0x26

ADD A,@R1 0x27

ADD A,R0 0x28

ADD A,R1 0x29

ADD A,R2 0x2A

ADD A,R3 0x2B

ADD A,R4 0x2C

ADD A,R5 0x2D

ADD A,R6 0x2E

ADD A,R7 0x2F Instructions OpCode ACALL page0 0x11 ACALL page1 0x31 ACALL page2 0x51 ACALL page3 0x71 ACALL page4 0x91 ACALL page5 0xB1 ACALL page6 0xD1 ACALL page7 0xF1 http://w w w.w in.tue.nl/~aeb/comp/8051/set8051.html

Mnemônicos 8-bit MCU Intel

®

8051

• Em arquitetura CISC, um mesmo mnemônico pode ser empregado em várias instruções. • Em cada uma delas, a sintaxe é diferente.

ASSEMBLY

2

45 25/04/2017

ACIDCX LXIRPE

ADCDCX LXIRPO

ADCDCX MOVRZ ADDDCX MOVRLC ADDDI MOVRRC ADIEI MVIRST ANAHLT MVISBB ANAIN NOPSBB

ANIINR ORASBI

CALL INR ORASHLD

CC INX ORISIM

CM INX OUTSPHL

CMAINX PCHL STA

CMCINX POPSTAX

CMPJMP POPSTAX CMPJC POPSTC CNCJM POPSUB CNZJNC PUSH SUB CP JNZ PUSH SUI CPEJP PUSH XCHG

CPIJPE PUSH XRA

CPOJPO RALXRA

CZ JZ RARXRI

DAALDA RETXTHL

DADLDAX RC

DADLDAX RIM

DADLHLD RM DADLXI RNC DCRLXI RNZ DCRLXI RP CISC http://cdn.cpu-w orld.com/CPUs/8085/S_Intel-D8085AH-1.jpg

Mnemônicos 8-bit P Intel

®

8085

ASSEMBLY

2

46 25/04/2017

Mnemônicos 8-bit P Intel

®

8080 e Zilog

®

Z80

adc a,(hl) cp n inc (ii+s) ld (hl),n or n rlc (hl) srl (hl) adc a,(ii+s) cp r inc r ld (hl),r or r rlc (ii+s) srl (ii+s)

adc a,n cpd inc ss ld (ii+s),notdr rlc r srl r

adc a,r cpdr inc ii ld (ii+s),rotir rlca sub (hl)

adc hl,ss cpi ind ld a,(nn) out (n),a rld sub (ii+s)

add a,(hl) cpir indr ld a,(bc) out (c),r rr (hl) sub n add a,(ii+s) cpl ini ld a,(de) outd rr (ii+s) sub r

add a,n daa inir ld a,i outi rr r xor (hl)

add a,r dec (hl) jp (hl) ld a,r pop rr rra xor (ii+s)

add hl,ss dec (ii+s) jp (ii) ld r,(hl) pop ii rrc (hl) xor n add ii,pp dec r jp nn ld r,(ii+s)push rr rrc (ii+s) xor r and (hl) dec ss jp c,nn ld r,n push ii rrc r and (ii+s) dec ii jp m,nn ld r1,r2 res b,(hl) rrca and n di jp nc,nn ld i,a res b,(ii+s) rrd

and r djnz s jp nz,nn ld r,a res b,r rst k

bit b,(hl) ei jp p,nn ld ss,(nn) ret sbc a,(hl) bit b,(ii+s) ex (sp),hl jp pe,nn ld hl,(nn) ret c sbc a,(ii+s) bit b,r ex (sp),ii jp po,nn ld ii,(nn) ret m sbc a,n call nn ex af,af' jp z,nn ld ss,nn ret nc sbc a,r call c,nn ex de,hl jr s ld ii,nn ret nz sbc hl,ss

call m,nn exx jr c,s ld sp,hl ret p scf

call nc,nn halt jr nc,s ld sp,ii ret pe set b,(hl) call nz,nn (HALT) jr nz,s ldd ret po set b,(ii+s)

call p,nn im 0 jr z,s lddr ret z set b,r

call pe,nn im 1 ld (nn),a ldi reti sla (hl)

call po,nn im 2 ld (nn),ss ldir retn sla (ii+s) call z,nn in a,(n) ld (nn),hl neg rl (hl) sla r ccf in r,(c) ld (nn),ii nop rl (ii+s) sra (hl)

cp (hl) *1 ld (bc),a or (hl) rl r sra (ii+s)

cp (ii+s) inc (hl) ld (de),a or (ii+s) rla sra r http://w w w.angelfire.com/art2/unicorndreams/msx/Z80R800A.html

ASSEMBLY

2

27.CALL 28.GOTO 29.RETLW 23.MOVLW 24.IORLW 25.ANDLW 26.XORLW 47 25/04/2017

Mnemônicos PIC

®

8-bit baseline

19.BCF 20.BSF 21.BTFSC 22.BTFSS bbbf bbbf bbbf bbbf ffff ffff ffff ffff 01 00 01 01 01 10 01 11 11 00 11 01 11 10 11 11 kkkk kkkk kkkk kkkk kkkk kkkk kkkk kkkk 10 01 10 1k 10 00 kkkk kkkk kkkk kkkk kkkk kkkk 00 00 00 00 00 00 00 00 0000 0000 0000 0000 0100 0010 0011 0fff 30.CLRWDT 31.OPTION 32.SLEEP 33.TRIS 1. ADDWF 2. ANDWF 3. COMF 4. DECF 5. DECFSZ 6. INCF 7. INCFSZ 8. IORWF 9. MOVF 10.RLF 11.RRF 12.SUBWF 13.SWAPF 14.XORWF 15.MOVWF 16.CLRF 17.NOP 18.CLRW 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0111 0101 1001 0011 1011 1010 1111 0100 1000 1101 1100 0010 1110 0110 0000 0001 0000 0001 df df df df df df df df df df df df df df 1f 1f 00 00 ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff 0000 0000

ASSEMBLY

2

48 25/04/2017

Mnemônicos PIC

®

8-bit mid-range

19.BCF 20.BSF 21.BTFSC 22.BTFSS 00bb 01bb 10bb 11bb bfff bfff bfff bfff ffff ffff ffff ffff 01 01 01 01 0000 0000 0000 0000 0110 0000 0000 0110 0100 1001 1000 0011 32.CLRWDT 33.RETFIE 34.RETURN 35.SLEEP 00 00 00 00 00xx 01xx 1000 1001 1010 110x 111x kkkk kkkk kkkk kkkkk kkkk kkkk kkkk kkkk kkkk kkkk kkkk kkkk kkkk kkkk 23.MOVLW 24.RETLW 25.IORLW 26.ANDLW 27.XORLW 28.SUBLW 29.ADDLW 11 11 11 11 11 11 11 0kkk 1kkk kkkk kkkk kkkk kkkk 30.CALL 31.GOTO 10 10 1. ADDWF 2. ANDWF 3. COMF 4. DECF 5. DECFSZ 6. INCF 7. INCFSZ 8. IORWF 9. MOVF 10.RLF 11.RRF 12.SUBWF 13.SWAPF 14.XORWF 15.MOVWF 16.CLRF 17.NOP 18.CLRW 0111 0101 1001 0011 1011 1010 1111 0100 1000 1101 1100 0010 1110 0110 0000 0001 0000 0001 dfff dfff dfff dfff dfff dfff dfff dfff dfff dfff dfff dfff dfff dfff 1fff 1fff 0xx0 0xxx ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff 0000 xxxx 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

(9)

ASSEMBLY

2

49 25/04/2017

Mnemônicos PIC

®

8-bit e.mid-range

19.BCF 20.BSF 21.BTFSC 22.BTFSS 00bb 01bb 10bb 11bb bfff bfff bfff bfff ffff ffff ffff ffff 01 01 01 01 0000 0100 1000 1001 1010 1100 1110 kkkk kkkk kkkk kkkkk kkkk kkkk kkkk kkkk kkkk kkkk kkkk kkkk kkkk kkkk 23.MOVLW 24.RETLW 25.IORLW 26.ANDLW 27.XORLW 28.SUBLW 29.ADDLW 11 11 11 11 11 11 11 30.ADDWFC 31.ASRF 32.LSLF 33.LSRF 34.SUBWFB 1101 0111 0101 0110 1011 dfff dfff dfff dfff dfff ffff ffff ffff ffff ffff 11 11 11 11 11 1. ADDWF 2. ANDWF 3. COMF 4. DECF 5. DECFSZ 6. INCF 7. INCFSZ 8. IORWF 9. MOVF 10.RLF 11.RRF 12.SUBWF 13.SWAPF 14.XORWF 15.MOVWF 16.CLRF 17.NOP 18.CLRW 0111 0101 1001 0011 1011 1010 1111 0100 1000 1101 1100 0010 1110 0110 0000 0001 0000 0001 dfff dfff dfff dfff dfff dfff dfff dfff dfff dfff dfff dfff dfff dfff 1fff 1fff 0000 0000 ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff 0000 00xx 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

ASSEMBLY

2

50 25/04/2017

Mnemônicos PIC

®

8-bit e.mid-range

37.MOVLB 38.MOVLP 0000 0001 001k 1kkk kkkk kkkk 00 11 39.BRA 40.BRW 41.CALLW 42.RETFIE 43.RETURN 44.CLRWDT 45.OPTION 46.RESET 47.SLEEP 48.TRIS 49.ADDFSR 50.MOVIW 51.MOVWI 001k 0000 0000 0000 0000 0000 0000 0000 0000 0000 0001 0000 1111 0000 1111 kkkk 0000 0000 0000 0000 0110 0110 0000 0110 0110 0nkk 0001 0nkk 0001 1nkk kkkk 1011 1010 1001 1000 0100 0010 0001 0011 0fff kkkk 0nmm 1nmm kkkk kkkk 11 00 00 00 00 00 00 00 00 00 11 00 11 00 11 kkkk kkkk kkkk kkkk 35.CALL 36.GOTO 10 10 0kkk 1kkk

ASSEMBLY

2

51 25/04/2017

Quadro comparativo

Baseline Mid Range E. M. R.

LSLF LSRF

MOVF MOVF MOVF

MOVIW MOVLB MOVLP

MOVLW MOVLW MOVLW

MOVWF MOVWF MOVWF

MOVWI

NOP NOP NOP

OPTION OPTION

RESET

RETFIE RETFIE

RETLW RETLW RETLW

RETURN RETURN

RLF RLF RLF

RRF RRF RRF

SLEEP SLEEP SLEEP

SUBLW SUBLW

SUBWF SUBWF SUBWF

SUBWFB

SWAPF SWAPF SWAPF

TRIS TRIS

XORLW XORLW XORLW

XORWF XORWF XORWF

Baseline Mid Range E. M. R.

ADDFSR

ADDLW ADDLW

ADDWF ADDWF ADDWF

ADDWFC

ANDLW ANDLW ANDLW

ANDWF ANDWF ANDWF

ASRF BCF BCF BCF BRA BRW BSF BSF BSF BTFSC BTFSC BTFSC BTFSS BTFSS BTFSS

CALL CALL CALL

CALLW

CLRF CLRF CLRF

CLRW CLRW CLRW

CLRWDT CLRWDT CLRWDT

COMF COMF COMF

DECF DECF DECF

DECFSZ DECFSZ DECFSZ

GOTO GOTO GOTO

INCF INCF INCF

INCFSZ INCFSZ INCFSZ

IORLW IORLW IORLW

IORWF IORWF IORWF

ASSEMBLY

2

52 25/04/2017

• Importar um código assembly feito para um chip e usá-lo em outro tipo de chip nem sempre é tarefa fácil. • Podem ser necessárias alterações

em mnemônicos e em faixas de valores para operandos.

• Diferenças ocorrem até mesmo dentro da mesma família.

Importação de código

ASSEMBLY

2

53 25/04/2017

Mnemônicos PIC

®

8-bit PIC18

1. ADDWF 2. ADDWFC 3. ANDWF 4. CLRF 5. COMF 6. CPFSEQ 7. CPFSGT 8. CPFSLT 9. DECF 10.DECFSZ 11.DCFSNZ 12.INCF 13.INCFSZ 14.INFSNZ 15.IORWF 16.MOVF 17.MOVFF 18.MOVWF 19.MULWF 20.NEGF 21.RLCF 22.RLNCF 23.RRCF 24.RRNCF 25.SETF 26.SUBFWB 27.SUBWF 28.SUBWFB 29.SWAPF 30.TSTFSZ 31.XORWF 32.BCF 33.BSF 34.BTFSC 35.BTFSS 36.BTG 37.BC 38.BN 39.BNC 40.BNN 41.BNOV 42.BNZ 43.BOV 44.BRA 45.BZ 46.CALL 47.CLRWDT 48.DAW 59.ADDLW 60.ANDLW 61.IORLW 62.LFSR 63.MOVLB 64.MOVLW 65.MULLW 66.RETLW 67.SUBLW 68.XORLW 69.TBLRD* 70.TBLRD*+ 71.TBLRD*-72.TBLRD+* 73.TBLWT* 74.TBLWT*+ 75.TBLWT*-76.TBLWT+* 49.GOTO 50.NOP 51.POP 52.PUSH 53.RCALL 54.RESET 55.RETFIE 56.RETLW 57.RETURN 58.SLEEP

ASSEMBLY

2

54 25/04/2017

Mnemônicos PIC24F (ex.:04KA200)

1. ADD 2. ADDC 3. AND 4. ASR 5. BCLR 6. BRA 7. BSET 8. BSW 9. BTG 10.BTSC 11.BTSS 12.BTST 13.BTSTS 14.CALL 15.CLR 16.CLRWDT 17.COM 18.CP 19.CP0 20.CPB 21.CPSEQ 22.CPSGT 23.CPSLT 24.CPSNE 25.DAW 26.DEC 27.DEC2 28.DISI 29.DIV 30.FF1L 31.FF1R 32.GOTO 33.INC 34.INC2 35.IOR 36.LNK 37.LSR 38.MOV 39.MUL 40.NEG 41.NOP 42.POP 43.PUSH 44.PWRSAV 45.RCALL 46.REPEAT 47.RESET 48.RETFIE 49.RETLW 50.RETURN 51.RLC 52.RLNC 53.RRC 54.RRNC 55.SE 56.SETM 57.SL 58.SUB 59.SUBB 60.SUBR 61.SUBBR 62.SWAP 63.TBLRDH 64.TBLRDL 65.TBLWTH 66.TBLWTL 67.ULNK 68.XOR 69.ZE

(10)

ASSEMBLY

2

55 25/04/2017

Mnemônicos PIC24HJ (ex.:12GP201/202)

1. ADD 2. ADDC 3. AND 4. ASR 5. BCLR 6. BRA 7. BSET 8. BSW 9. BTG 10.BTSC 11.BTSS 12.BTST 13.BTSTS 14.CALL 15.CLR 16.CLRWDT 17.COM 18.CP 19.CP0 20.CPB 21.CPSEQ 22.CPSGT 23.CPSLT 24.CPSNE 25.DAW 26.DEC 27.DEC2 28.DISI 29.DIV 30.EXCH 31.BFCL 32.FF1L 33.FF1R 34.GOTO 35.INC 36.INC2 37.IOR 38.LNK 39.LSR 40.MOV 41.MUL 42.NEG 43.NOP 44.POP 45.PUSH 46.PWRSAV 47.RCALL 48.REPEAT 49.RESET 50.RETFIE 51.RETLW 52.RETURN 53.RLC 54.RLNC 55.RRC 56.RRNC 57.SE 58.SETM 59.SL 60.SUB 61.SUBB 62.SUBR 63.SUBBR 64.SWAP 65.TBLRDH 66.TBLRDL 67.TBLWTH 68.TBLWTL 69.ULNK 70.XOR 71.ZE

ASSEMBLY

2

56 25/04/2017

Mnemônicos PIC24EP (ex.:64GP202)

1. ADD 2. ADDC 3. AND 4. ASR 5. BCLR 6. BRA 7. BSET 8. BSW 9. BTG 10.BTSC 11.BTSS 12.BTST 13.BTSTS 14.CALL 15.CLR 16.CLRWDT 17.COM 18.CP 19.CP0 20.CPB 21.CPSEQ 22.CPSGT 23.CPSLT 24.CPSNE 25.DAW 26.DEC 27.DEC2 28.DISI 29.DIV 30.DIVF 31.DO 32.ED 33.EDAC 34.EXCH 35.BFCL 36.FF1L 37.FF1R 38.GOTO 39.INC 40.INC2 41.IOR 42.LAC 43.LNK 44.LSR 45.MAC 46.MOV 47.MOVPAG 48.MOVSAC 49.MYP 50.MYP.N 51.MSC 52.MUL 53.NEG 54.NOP 55.POP 56.PUSH 57.PWRSAV 58.RCALL 59.REPEAT 60.RESET 61.RETFIE 62.RETLW 63.RETURN 64.RLC 65.RLNC 66.RRC 67.RRNC 68.SAC 69.SE 70.SETM 71.SFTAC 72.SL 73.SUB 74.SUBB 75.SUBR 76.SUBBR 77.SWAP 78.TBLRDH 79.TBLRDL 80.TBLWTH 81.TBLWTL 82.ULNK 83.XOR 84.ZE

ASSEMBLY

2

57 25/04/2017

MIPS32

®

e MIPS64

®

• Copyright © Imagination Technologies Limited. All rights reserved.

• Microprocessor without Interlocked Pipeline Stages.

• microMIPS®: Códigos comprimidos.

• Arquitetura RISC.

• Disponível para MCU´s e DSP´s.

• Os conjuntos de instruções, sua arquitetura e códigos estão disponíveis para implementação em qualquer dispositivo de qualquer fabricante.

ASSEMBLY

2

58 25/04/2017

Mnemônicos PIC32MX (MIPS32) (ex.:64GP202)

h ttp ://w w w .m ip s .c o m /m e d ia /f ile s /M D 0 0 5 6 5 -2 B -M IP S 3 2 -Q R C -0 1 .0 1 .p d f

ASSEMBLY

2

59 25/04/2017

Mnemônicos MIPS64

®

ADD Add (with overflow) ADDI Add immediate (with overflow) ADDIU Add immediate unsigned (no overflow) ADDU Add unsigned (no overflow) AND Bitwise and ANDI Bitwise and immediate BEQ Branch on equal BGEZ Branch on greater than or equal to zero BGEZAL Branch on greater than or equal to zero and link BGTZ Branch on greater than zero BLEZ Branch on less than or equal to zero BLTZ Branch on less than zero BLTZAL Branch on less than zero and link BNE Branch on not equal DIV Divide DIVU Divide unsigned J Jump JAL Jump and link JR Jump register LB Load byte LUI Load upper immediate LW Load word MFHI Move from HI MFLO Move from LO MULT Multiply MULTU Multiply unsigned NOOP no operation OR Bitwise or ORI Bitwise or immediate SB Store byte SLL Shift left logical SLLV Shift left logical variable SLT Set on less than (signed) SLTI Set on less than immediate (signed) SLTIU Set on less than immediate unsigned SLTU Set on less than unsigned SRA Shift right arithmetic SRL Shift right logical SRLV Shift right logical variable SUB Subtract SUBU Subtract unsigned SW Store word SYSCALL System call XOR Bitwise exclusive or XORI Bitwise exclusive or immediate

INSTRUÇÕES PIC16F877

3

INSTRUÇÕES PIC16F877

60 25/04/2017

(11)

INSTRUÇÕES PIC16F877

3

• PIC16F877

• O MPLAB®monta os bits não usados como “zero”.

• Um opcode com bits não usados em “um” não é apresentado na coluna “disassembly”.

• Zeros à esquerda não podem ser omitidos.

61 25/04/2017

f Register File Adress* 00haté 7Fh – 7 bits

W Working Register / Acumulator 00h até FFh – 8 bits

b Bit Address 0haté 7h – 3 bits

k Constant, 8 bits 00haté FFh – 8 bits

x Don´t Care (bit não usado)

d Destination 0haté 1h – 1 bit

PC Program Counter** 000haté 7FFh – 11 bits

Siglas

* São 9 bits no total. ** São 13 bits no total.

INSTRUÇÕES PIC16F877

3

62 25/04/2017

Siglas

• O file é um registrador localizado na SRAM. • A palavra “f” é de 8 bits porque a MCU é de 8 bits. • O endereço “f” é de 7 bits porque cada banco da SRAM é

formado por 7 bits.

• “W” é um registrador de 8 bits, tal como os registradores localizados no file registers.

• Sempre um dos argumentos da ULA é o acumulador. • Em outros P´s, o registrador “W” é chamado de “A”. • Em P´s de 16 bits, o acumulador é dividido em “AH” e “AL”.

INSTRUÇÕES PIC16F877

3

63 25/04/2017

Siglas

• O bit address seleciona um bit em uma palavra de 8 bits, pois a MCU é de 8 bits.

• O bit address possui 3 bits para

endereçar as 8 posições.

• A constante é um número de 8 bits,

proveniente do barramento de dados, de 8 bits.

INSTRUÇÕES PIC16F877

3

64 25/04/2017

Categorias

• Os dois bits mais significativos do opcode são usados na identificação da família da instrução. • OPCODE<13:12>.

• Cada família possui uma estrutura para o opcode.

INSTRUÇÕES PIC16F877

3

65 25/04/2017

Família de instruções sobre bytes (00)

01 ANDWF 02 IORWF 03 XORWF 04 ADDWF 05 SUBWF 06 COMF 07 INCF 08 DECF 09 INCFSZ 10 DECFSZ 11 RLF 12 RRF 13 SWAPF 14 MOVF 15 CLRF 16 CLRW 17 MOVWF 18 NOP

W: Work register (accumulator) F: File register OPCODE<13:12> = 00

INSTRUÇÕES PIC16F877

3

66 25/04/2017 SUBWF DECF IORWF ANDWF XORWF ADDWF MOVF COMF INCF DECFSZ RRF RLF SWAPF INCFSZ

416

DEC

Bit

08

Bit

09

Bit

10

Bit

11

Bit

12

Bit

13 CS

Bit

07 NOP MOVWF CLRW CLRF d

(12)

INSTRUÇÕES PIC16F877

3

67 25/04/2017 Instrução Tipo 01 SUB WF Aritmética 02 DEC F Aritmética 03 IOR WF Lógica 04 AND WF Lógica 05 XOR WF Lógica 06 ADD WF Aritmética 07 MOV F Movimentação 08 COM F Lógica 09 INC F Aritmética 10 DEC FSZ Aritmética 11 RR F Lógica 12 RL F Lógica 13 SWAP F Lógica 14 INC FSZ Aritmética

Classificação – Tipo 1 (00)

INSTRUÇÕES PIC16F877

3

68 25/04/2017

Estrutura da instrução sobre bytes – Tipo 1 (00)

• 4 bits para seleção da operação, OPCODE<11:8>. • f: Endereço do registrador que contém um dos

argumentos, OPCODE<6:0>. • d: OPCODE<7>.

• Definição do registrador que conterá o resultado. • d = 0: O resultado é enviado para W. • d = 1: O resultado é enviado para file.

SUBWF DECF IORWF ANDWF XORWF ADDWF MOVF COMF INCF DECFSZ RRF RLF SWAPF INCFSZ

0

seleção

d

file

13 12 8 7 6 0

0

11

INSTRUÇÕES PIC16F877

3

69 25/04/2017

Estrutura da instrução sobre bytes – tipo 2 (00)

• 5 bits para seleção da operação, OPCODE<11:7>. • f: Endereço do registrador que contém um dos

argumentos, OPCODE<6:0>. NOP MOVWF CLRW CLRF

0

seleção

file

13 12 7 6 0

0

11 Instrução Tipo 15 NOP -16 MOV WF Movimentação 17 CLR W Lógica/Aritmética 18 CLR F Lógica/Aritmética

INSTRUÇÕES PIC16F877

3

70 25/04/2017

Sintaxe para o tipo 1 – f,d

01 ANDWF f,d 02 IORWF f,d 03 XORWF f,d 04 ADDWF f,d 05 SUBWF f,d 06 COMF f,d 07 INCF f,d 08 DECF f,d 09 INCFSZ f,d 10 DECFSZ f,d 11 RLF f,d 12 RRF f,d 13 SWAPF f,d 14 MOVF f,d

INSTRUÇÕES PIC16F877

3

71 25/04/2017

Sintaxe para o tipo 2

1 CLRF f 2 CLRW 3 MOVWF f 4 NOP

INSTRUÇÕES PIC16F877

3

72 25/04/2017

Instrução Nibble 3 Nibble 2 Nibble 1 Nibble 0

01 SUB WF 00b 0010b (02d) dfff ffff 02 DEC F 00b 0011b (03d) dfff ffff 03 IOR WF 00b 0100b (04d) dfff ffff 04 AND WF 00b 0101b (05d) dfff ffff 05 XOR WF 00b 0110b (06d) dfff ffff 06 ADD WF 00b 0111b (07d) dfff ffff 07 MOV F 00b 1000b (08d) dfff ffff 08 COM F 00b 1001b (09d) dfff ffff 09 INC F 00b 1010b (10d) dfff ffff 10 DEC FSZ 00b 1011b (11d) dfff ffff 11 RR F 00b 1100b (12d) dfff ffff 12 RL F 00b 1101b (13d) dfff ffff 13 SWAP F 00b 1110b (14d) dfff ffff 14 INC FSZ 00b 1111b (15d) dfff ffff

Códigos para o tipo 1

Seleção da função

7-bit file address

(13)

INSTRUÇÕES PIC16F877

3

73 25/04/2017

Instrução Nibble 3 Nibble 2 Nibble 1 Nibble 0

01 NOP 00b 0000b (00d) 0xx0 0000 02 MOV WF 00b 0000b (00d) 1fff ffff 03 CLR W 00b 0001b (01d) 0xxx xxxx 04 CLR F 00b 0001b (01d) 1fff ffff Seleção da função Família Bit 7

Códigos para o tipo 2

• Onde existe irrelevância, somente a substituição total por zero gera código na coluna disassembly do MPLAB™.

• Na programação pelo MPASM™,

todas as irrelevâncias valem zero.

INSTRUÇÕES PIC16F877

3

74 25/04/2017

Seleção das funções do tipo 2

24

DEC

Bit

07

Bit

08

Bit

09

Bit

10

Bit

11

Bit

12

Bit

13 CS NOP MOVWF CLRW CLRF

INSTRUÇÕES PIC16F877

3

75 25/04/2017 1 AND WF 2 IOR WF 3 XOR WF 4 ADD WF 5 SUB WF

Operações de dois operandos com bytes

• 0  f  127 (7 bits) • Se d=0: “W” = “f” op “W” • Se d=1: “f” = “f” op “W”

INSTRUÇÕES PIC16F877

3

76 25/04/2017 1 COM F 2 INC F 3 DEC F 4 INC FSZ 5 DEC FSZ 6 RL F 7 RR F 8 SWAP F 9 MOV F

Operações de um operando com bytes

• 0  f  127 (7 bits) • Se d=0: “W” = op “f” • Se d=1: “f” = op “f”

INSTRUÇÕES PIC16F877

3

77 25/04/2017 1 CLR W (sem operandos) 2 CLR F (um operando)

Operações diferentes com bytes

• 0  f  127 (7 bits)

• Se bit7=0: CLRW “W” = op “W”

• Se bit7=1: CLRF “f” = op “f”

• As duas instruções clear não são agrupadas e identificadas pelo destiny. • Isto se deve ao fato das suas sintaxes

serem diferentes.

INSTRUÇÕES PIC16F877

3

78 25/04/2017 1 CLRW 2 NOP

(14)

INSTRUÇÕES PIC16F877

3

79 25/04/2017

Família de instruções sobre bytes sobre bits (01)

1 BCF 2 BSF 3 BTFSC 4 BTFSS F: File register OPCODE<13:12> = 01

INSTRUÇÕES PIC16F877

3

80 25/04/2017

• 2 bits para seleção da operação, OPCODE<11:10>. • b: Campo de bits OPCODE<9:7>.

• Seleciona quais sofrerão a ação.

• f: Endereço do registrador que contém os bits, OPCODE<6:0>.

Estrutura das instruções sobre bits (01)

0

seleção

bit

file

13 12 7 6 0

1

9

INSTRUÇÕES PIC16F877

3

81 25/04/2017

Instrução Nibble 3 Nibble 2 Nibble 1 Nibble 0

01 BC F 01 00bb bfff ffff 02 BS F 01 01bb bfff ffff 03 BT FSC 01 10bb bfff ffff 04 BT FSS 01 11bb bfff ffff

7-bit file address

Seleção da função Seleção do bit Família

Código das instruções sobre bits (01)

INSTRUÇÕES PIC16F877

3

82 25/04/2017

24

DEC

Bit

10

Bit

11

Bit

12

Bit

13 CS BCF BSF BTFSC BTFSS

Seleção das instruções sobre bits (01)

INSTRUÇÕES PIC16F877

3

83 25/04/2017

Sintaxe das instruções sobre bits (01)

1 BCF f,b 2 BSF f,b 3 BTFSC f,b 4 BTFSS f,b

INSTRUÇÕES PIC16F877

3

84 25/04/2017 1 ADDLW 2 ANDLW 3 IORLW 4 MOVLW 5 SUBLW 6 XORLW 7 RETLW

Família de instruções sobre literais (11)

W: Work register (accumulator) L: Literal ou Constante ou Dado OPCODE<13:12> = 11

(15)

INSTRUÇÕES PIC16F877

3

85 25/04/2017

• 4 bits para seleção da operação, OPCODE<11:8>. • k: Número de 8 bits.

• “k” representa o número (literal) que será operado com “W”.

1

seleção

k (literal)

13 12 8 7 0

1

11

Família de instruções sobre literais (11)

INSTRUÇÕES PIC16F877

3

86 25/04/2017

Instrução Nibble 3 Nibble 2 Nibble 1 Nibble 0

01 MOV LW 11 00xx kkkk kkkk 02 RET LW 11 01xx kkkk kkkk 03 IOR LW 11 1000 kkkk kkkk 04 AND LW 11 1001 kkkk kkkk 05 XOR LW 11 1010 kkkk kkkk - 11 1011 xxxx xxxx 06 SUB LW 11 110x kkkk kkkk 07 ADD LW 11 111x kkkk kkkk 8-bit Constant Seleção da função Família

Código das instruções sobre literais (11)

INSTRUÇÕES PIC16F877

3

87 25/04/2017

• A literal (L) é operada com o acumulador (W). • O resultado é salvo no acumulador (W).

Lógicas Aritméticas Movimentação 1 AND LW 2 IOR LW 3 XOR LW 4 ADD LW 5 SUB LW 6 MOV LW 7 RET LW

Classificação das instruções sobre literais (11)

INSTRUÇÕES PIC16F877

3

88 25/04/2017

416

DEC

Bit

08

Bit

09

Bit

10

Bit

11

Bit

12

Bit

13 CS IOR AND XOR MOVLW RETLW SUBLW ADDLW Lógicas Aritméticas M ov im ent aç ão

Seleção das instruções sobre literais (11)

INSTRUÇÕES PIC16F877

3

89 25/04/2017 1 ANDLW k 2 IORLW k 3 XORLW k 4 ADDLW k 5 SUBLW k 6 MOVLW k 7 RETLW k • 0  k  255 • “W” = “k” op “W”

Sintaxe das instruções sobre literais (11)

INSTRUÇÕES PIC16F877

3

90 25/04/2017

Sobre bytes e sobre literais

AND LW IOR LW XOR LW ADD LW SUB LW MOV LW RET LW AND WF IOR WF XOR WF ADD WF SUB WF MOV WF Lógicas Aritméticas Movimentação File Família 00 Literal Família 11

(16)

INSTRUÇÕES PIC16F877

3

91 25/04/2017 1 CLRWDT 2 SLEEP 3 RETURN 4 RETFIE

• Os bits de identificação desta família também são 00. • OPCODE<13:12> = 00

Família de instruções de controle (00)

INSTRUÇÕES PIC16F877

3

92 25/04/2017

Instrução Nibble 3 Nibble 2 Nibble 1 Nibble 0

01 RETURN 00 0000 0000 1000 02 RETFIE 00 0000 0000 1001 03 SLEEP 00 0000 0110 0011 04 CLRWDT 00 0000 0110 0100

Instrução Nibble 3 Nibble 2 Nibble 1 Nibble 0

01 NOP 00 0000 0xx0 0000 03 MOVWF 00 0000 1fff ffff

Apesar de parecidos, estes códigos não são confundidos com NOP e MOVWF. Família

Código das instruções de controle (00)

00_0000_0

seleção

13 7 6 0

INSTRUÇÕES PIC16F877

3

93 25/04/2017 1 GOTO 2 CALL

Família de instruções de desvio (10)

INSTRUÇÕES PIC16F877

3

• 1 bit para seleção da operação, OPCODE<11>. • k: Número de 11 bits OPCODE<10:0>. • Instruções: CALL ou GOTO; instruções de desvio.

• CALLe GOTO atuam sobre a program flash.

• “k” representa o endereço dentro da página da flash. • Cada página possui 11 bits de endereço.

94 25/04/2017

Estrutura das instruções de desvio (10)

1

sel

k (literal)

13 12 10 0

0

11

INSTRUÇÕES PIC16F877

3

95 25/04/2017

De desvio (10)

Instrução Nibble 3 Nibble 2 Nibble 1 Nibble 0

01 CALL 10 0kkk kkkk kkkk 02 GOTO 10 1kkk kkkk kkkk

11-bit Constant

• “k” representa o endereço dentro da página da flash. • “k” contém os bits do endereço, OPCODE<10:0>. • “k” seleciona alinha na página da flash.

• Cada página possui 11 bits de endereço. Família Seleção

INSTRUÇÕES PIC16F877

3

96 25/04/2017

Nibble 3

• O terceiro nibble da instrução identifica a família da instrução. • OPCODE<13:12>.

• 00b: Sobre byte (tipos 1 e 2) • 00b: De controle

• 01b: Sobre bit • 10b: De desvio • 11b: Sobre literal

(17)

INSTRUÇÕES PIC16F877

3

97 25/04/2017

Padrões de estrutura de opcode

d 0 0

13 12 11 10 9 8 7 6 5 4 3 2 1 0

seleção file address

0 0 seleção 13 12 11 10 9 8 7 6 5 4 3 2 1 0 file address 1 1 13 12 11 10 9 8 7 6 5 4 3 2 1 0 seleção literal 0 0 0 0 0 0 0 13 12 11 10 9 8 7 6 5 4 3 2 1 0 seleção 1 0 13 12 11 10 9 8 7 6 5 4 3 2 1 0 program address sel. 1 0 13 12 11 10 9 8 7 6 5 4 3 2 1 0

sel. bit addr. file address

Tipo 1 Tipo 2 Sobre bit Sobre literal De controle De desvio Sobre byte

INSTRUÇÕES PIC16F877

3

98 25/04/2017

Padrões de estrutura de opcode

d 0 0

13 12 11 10 9 8 7 6 5 4 3 2 1 00

seleção file address

0 0 seleção 13 12 11 10 9 8 7 6 5 4 3 2 1 0 file address 1 1 13 12 11 10 9 8 7 6 5 4 3 2 1 0 seleção literal 0 0 0 0 0 0 0 13 12 11 10 9 8 7 6 5 4 3 2 1 0 seleção 1 0 13 12 11 10 9 8 7 6 5 4 3 2 1 0 program address sel. 1 0 13 12 11 10 9 8 7 6 5 4 3 2 1 0

sel. bit addr. file address

SUBWF DECF IORWF ANDWF XORWF ADDWF MOVF COMF INCF DECFSZ RRF RLF SWAPF INCFSZ NOP MOVWF CLRW CLRF BCF BSF BTFSC BTFSS ANDLW IORLW XORLW ADDLW SUBLW MOVLW RETLW CLRWDT SLEEP RETURN RETFIE GOTO CALL

INSTRUÇÕES PIC16F877

3

99 25/04/2017

Padrões de estrutura de opcode

d 0 0

13 12 11 10 9 8 7 6 5 4 3 2 1 0

seleção file address

0 0 seleção 13 12 11 10 9 8 7 6 5 4 3 2 1 0 file address 1 1 13 12 11 10 9 8 7 6 5 4 3 2 1 0 seleção literal 0 0 0 0 0 0 0 13 12 11 10 9 8 7 6 5 4 3 2 1 0 seleção 1 0 13 12 11 10 9 8 7 6 5 4 3 2 1 0 program address sel. 1 0 13 12 11 10 9 8 7 6 5 4 3 2 1 0

sel. bit addr. file address

Dois argumentos Um argumento Sem argumento

INSTRUÇÕES PIC16F877

3

100 25/04/2017

Seleção das cinco famílias

24

DEC

Bit

12

Bit

13

Sobre byte / De controle Sobre bit De desvio Sobre literal

INSTRUÇÕES PIC16F877

3

101 25/04/2017

Instruções de dois ciclos – 2T

CY

1 BTFSC 2 BTFSS 3 DECFSZ 4 INCFSZ 5 CALL 6 GOTO 7 RETURN 8 RETLW 9 RETFIE Condicional Desvio

INSTRUÇÕES PIC16F877

3

102 25/04/2017

Instruções não usadas

Instrução Nibble 3 Nibble 2 Nibble 1 Nibble 0

01 OPTION 00 0000 0110 0010

02 TRIS 00 0000 0110 0fff

• Não há proteção contra opcode inválido no chip. • Um opcode inválido leva a uma ação inesperada.

(18)

INSTRUÇÕES PIC16F877

3

103 25/04/2017

Bits de estado (SR) afetados

AND - - Z IOR - - Z XOR - - Z ADD C DC Z SUB C DC Z CLRW - - Z CLRF - - Z COMF - - Z INCF - - Z DECF - - Z RLF C - Z RRF C - Z SWAPF - - Z MOVF - - Z

Bits de estado

INSTRUÇÕES PIC16F877

3

104 25/04/2017

Bits de estado (SR) afetados

ADD C DC Z

SUB C DC Z

RLF C - Z

RRF C - Z

Bits de estado

• Nas instruções acima, é preciso considerar que a resposta é uma palavra de 9 bits. • A calculadora deve ser configurada para 9 bits. • Nas demais operações, a calculadora deve ser

configurada para 8 bits.

INSTRUÇÕES PIC16F877

3

105 25/04/2017

Instrução 3FFFh

• Quando a program memoy está

apagada, todos os seus bits valem “1”. • Todos os 8k opcodes valem 3FFFh.

Instrução Nibble 3 Nibble 2 Nibble 1 Nibble 0

07 ADD LW 11 111x kkkk kkkk

• x = 1

• Como x=1, o código não aparece na coluna disassembly. • ADDLW ffh

• Esta instrução equivale a SUBLW 01h • O acumulador é decrementado uma unidade.

CONJUNTO DE INSTRUÇÕES

4

106 25/04/2017

CONJUNTO DE INSTRUÇÕES

CONJUNTO DE INSTRUÇÕES

4

107 25/04/2017

NOP

• No Operation.

• Não afeta os bits de estado. Sintaxe: NOP

• O NOP é usado, principalmente, em situações nas quais se deseja que a execução de um programa leve uma determinada quantidade de tempo. • O uso do NOP permite aumentar o tempo de

execução do programa.

CONJUNTO DE INSTRUÇÕES

4

108 25/04/2017

NOP – Exemplo de aplicação

Programa principal Rotina 1 Rotina 2 Mais curta do que Rotina 1 Programa principal Teste condicional NOP’s • O programa leva o mesmo tempo de execução nas duas possibilidades.

(19)

CONJUNTO DE INSTRUÇÕES

4

109 25/04/2017

ANDWF e ANDLW

ANDLW “W” = “k” AND “W” ANDWF d=0: “W” = “f” AND “W” d=1: “f” = “f” AND “W” • “E” lógico.

• Afetam o bit de estado “Z”. Sintaxe: ANDWF f,d Sintaxe: ANDLW k

CONJUNTO DE INSTRUÇÕES

4

110 25/04/2017

IORWF e IORLW

IORLW “W” = “k” IOR “W” IORWF d=0: “W” = “f” IOR “W” d=1: “f” = “f” IOR “W” • “OU” lógico.

• Afetam o bit de estado “Z”. Sintaxe: IORWF f,d Sintaxe: IORLW k

CONJUNTO DE INSTRUÇÕES

4

111 25/04/2017

XORWF e XORLW

XORLW “W” = “k” XOR “W” XORWF d=0: “W” = “f” XOR “W” d=1: “f” = “f” XOR “W”

• “OU exclusivo” lógico. • Afetam o bit de estado “Z”.

Sintaxe: XORWF f,d Sintaxe: XORLW k

CONJUNTO DE INSTRUÇÕES

4

112 25/04/2017

ADDWF e ADDLW

ADDLW “W” = “k” ADD “W” ADDWF d=0: “W” = “f” ADD “W” d=1: “f” = “f” ADD “W” • Adição aritmética.

• Afetam os bits de estado “Z”, “C” e “DC”. Sintaxe: ADDWF f,d Sintaxe: ADDLW k

CONJUNTO DE INSTRUÇÕES

4

113 25/04/2017

SUBWF e SUBLW

SUBLW “W” = “k” SUB “W” (W=l – W) SUBWF d=0: “W” = “f” SUB “W” (W=f–W ) d=1: “f” = “f” SUB “W” (f=f–W ) • Subtração aritmética.

• Afetam os bits de estado “Z”, “C” e “DC”. Sintaxe: SUBWF f,d

Sintaxe: SUBLW k

• A subtração não é comutativa. • f ou L é o minuendo. • W é o subtraendo.

CONJUNTO DE INSTRUÇÕES

4

114 25/04/2017

ADD e SUB

• O bit C pode ser considerado o nono bit do resultado. • ADD permite adicionar dois números de 8 bits

gerando um número de nove bits (000h a 1FFh). • Em ADD, o bit C representa o nono bit do resultado. • SUB permite subtrair dois números de 8 bits gerando

um número de nove bits. • Em SUB, o bit C representa o sinal

• C=1: Resposta positiva. • C=0: Resposta negativa.

(20)

CONJUNTO DE INSTRUÇÕES

4

115 25/04/2017

Subtração negativa

MOVLW 0xae ;W = 0xAE SUBLW 0x45 ;W = 0x45 - 0xAE MOVWF 0x23 ;SRAM(0x23) = W 256 + (69 – 174) = 151 W = L – W W = 0x45 – 0xAE 100h + 45h – AEh = 97h AEh – 45h: C = 1 45h – AEh: C = 0

• Em subtração negativa, a resposta de 8 bits representa o resultado adicionado a 100h.

• Para saber o real resultado, é preciso converter o valor fornecido para a base decimal e subtrair 256.

CONJUNTO DE INSTRUÇÕES

4

116 25/04/2017

CLRW e CLRF

• CLRW: Apaga o conteúdo de “W”. • CLRF: Apaga o conteúdo de “f”.

• Afetam o bit de estado “Z”. CLRF “f” = 00h “Z” = 1 CLRW “W” = 00h “Z” = 1 Sintaxe: CLRW Sintaxe: CLRF f

CONJUNTO DE INSTRUÇÕES

4

117 25/04/2017

COMF

• Complementa o conteúdo de “f”. • Afeta o bit de estado “Z”.

d=0: “W” = /“f”

d=1: “f” = /“f”

Sintaxe: COMF f,d

• O conteúdo de “f” é complementado bit a bit. • Equivale a fazer 0xFF – “f”

CONJUNTO DE INSTRUÇÕES

4

118 25/04/2017

INCF e DECF

• INCF: Incrementa o conteúdo de “f”.

• DECF: Decrementa o conteúdo de “f”.

• Afetam o bit de estado “Z”. INCF d=0: “W” = “f” + 1 d=1: “f” = “f” + 1 DECF d=0: “W” = “f” – 1 d=1: “f” = “f” – 1 Sintaxe: INCF f,d Sintaxe: DECF f,d

CONJUNTO DE INSTRUÇÕES

4

119 25/04/2017

INCF e DECF

• INCFe DECF são cíclicos.

• Quando 0xFF é atingido, INC produz 0x00. • Quando 0x00 é atingido, DEC produz 0xFF. • O bit “C” não é afetado.

FFh FEh 01h 00h Valor Z=1 INCF FFh FEh 01h 00h Valor Z=1 DECF

CONJUNTO DE INSTRUÇÕES

4

120 25/04/2017

INCF e DECF

• O bit Z pode ser usado para incrementar ou decrementar palavras de mais de 8 bits. • O bit Z é somado ao high byte.

• O INCF é efetuado sobre o low byte. • Para cada INCF, é efetuada a adição de Z

com o high byte.

• Em cada overflow do low byte, Z = 1, o high byte sofre um incremento por meio da adição.

(21)

CONJUNTO DE INSTRUÇÕES

4

121 25/04/2017

RLF e RRF

• RLF: Gira o conteúdo de “f” para a esquerda. • RRF: Gira o conteúdo de “f” para a direita. • Afetam o bit de estado “C”.

RLF d=0: “W” = RL “f” d=1: “f” = RL “f” RRF d=0: “W” = RR “f” d=1: “f” = RR “f” Sintaxe: RLF f,d Sintaxe: RRF f,d O carry (C) está incluído (9 bits).

CONJUNTO DE INSTRUÇÕES

4

122 25/04/2017

RLF – C=0

• Configurando, inicialmente, C=0, a instrução RLF corresponde à multiplicação de um número inteiro de 8 bits por 2. • É possível multiplicar por 2 números na faixa de 0 a 255 (00h

a FFh).

• O valor resultante do bit C indica a ocorrência de um overflow.

• Em caso de overflow, o resultado da multiplicação

corresponde ao valor do registrador adicionado a 256 (100h). • O máximo operando que não gera overflow é 127 (7Fh), que,

multiplicado por 2, resulta em 254 (0FEh).

• O mínimo operando que gera overflow é 128 (80h), que, multiplicado por 2, resulta em 256 (100h).

• O máximo operando é 255 (FFh), que, multiplicado por 2, resulta em 510 (1FEh). Vide exemplos

CONJUNTO DE INSTRUÇÕES

4

123 25/04/2017

RLF – C=1

• Configurando, inicialmente, C=1, a instrução RLF corresponde à multiplicação de um número de 9 bits (fracionário) por 2. • É possível multiplicar por 2 números na faixa de 0 a 255,5

(00,0h a FF,8h).

• O valor resultante do bit C indica a ocorrência de um overflow.

• Em caso de overflow, o resultado da multiplicação

corresponde ao valor do registrador adicionado a 256 (100h). • O máximo operando que não gera overflow é 127,5 (7F,8h),

que, multiplicado por 2, resulta em 255 (0FFh).

• O mínimo operando que gera overflow é 128,5 (80,8h), que, multiplicado por 2, resulta em 257 (101h).

• O máximo operando é 255,5 (FF,8h), que, multiplicado por 2, resulta em 511 (1FFh). Vide exemplos

CONJUNTO DE INSTRUÇÕES

4

124 25/04/2017

RRF – C=0

• Configurando, inicialmente, C=0, a instrução RRF

corresponde à divisão de um número inteiro de 8 bits por 2. • É possível dividir números na faixa de 0 a 255 (00h a FFh). • O valor resultante do bit C indica a ocorrência de um bit

fracionário se o operando era ímpar (0,8h).

• O máximo operando é 255 (FFh), que, dividido por 2, resulta em 127,5 (7F,8h). Vide exemplos

CONJUNTO DE INSTRUÇÕES

4

125 25/04/2017

RRF – C=1

• Configurando, inicialmente, C=1, a instrução RRF

corresponde à divisão de um número inteiro de 9 bits por 2. • É possível dividir números na faixa de 0 a 511 (000h a 1FFh). • O valor resultante do bit C indica a ocorrência de um bit

fracionário se o operando era ímpar (0,8h).

• O máximo operando é 511 (1FFh), que, dividido por 2, resulta em 255,5 (FF,8h). Vide exemplos

CONJUNTO DE INSTRUÇÕES

4

126 25/04/2017

O significado do carry em RLF e RRF

• O programa pode interpretar C=1, no início, como um indicativo de número inteiro entre 100h e 1FFh. • O programa pode interpretar C=1, no início, como um

indicativo de número fracionário entre 00,8h e FF,8h. • Ao usar RLF, C=1 no início deve, obrigatoriamente, ser

interpretado como a parte facionária (00,8h). • Ao usar RRF, C=1 no início deve, obrigatoriamente, ser

interpretado como overflow (100h).

• Ao obter C=1 após RLF, deve, obrigatoriamente, ser interpretado como overflow (100h).

• Ao obter C=1 após RRF, deve, obrigatoriamente, ser interpretado a parte facionária (00,8h).

(22)

CONJUNTO DE INSTRUÇÕES

4

127 25/04/2017

SWAPF

• Permuta os nibbles do conteúdo de “f”. • Afeta o bit de estado “Z”.

d=0: “W” = SWAP “f” d=1: “f” = SWAP “f” Sintaxe: SWAPF f,d

CONJUNTO DE INSTRUÇÕES

4

128 25/04/2017

SWAPF

• Útil para fazer uma comunicação paralela de quatro bits sobre palavras de oito bits.

• Isto permite economia no hardware de comunicação.

• Primeiramente, o nibble menos significativo é

enviado.

• O SWAPF é executado.

• O nibble mais significativo é enviado.

• A frequência da comunicação cai abaixo da metade, pois tempo é perdido na execução de SWAPF.

CONJUNTO DE INSTRUÇÕES

4

129 25/04/2017

MOVF

• Copia o conteúdo de “f”. • Afeta o bit de estado “Z”.

d=0: “W” = “f”

d=1: “f” = “f”

Sintaxe: MOVF f,d

• A opção “f” = “f” é usada, por exemplo, para verificar se o conteúdo de “f” é zero. • Se for zero, Z=1.

CONJUNTO DE INSTRUÇÕES

4

130 25/04/2017

MOVF

• A opção mais usada é aquela onde d=0b.

• Nesta situação, o MPLAB®permite o uso de

uma notação simplificada.

• MOVF f,d= MOVFW f.

• Esta simplificação pode ser usada somente

se o montador em uso é o MPLAB®.

• Esta notação simplificada não aparece nos datasheets dos chips.

• O MPLAB® converte, automaticamente, a

notação simplificada para a notação correta.

CONJUNTO DE INSTRUÇÕES

4

131 25/04/2017

MOVWF e MOVLW

MOVLW LW “W” = “k” MOVWF WF “f” = “W”

• MOVWF: Copia o conteúdo de “W” para “f”. • MOVLW: Copia o conteúdo de “k” para “W”. • Não afetam os bits de estado.

Sintaxe: MOVWF f Sintaxe: MOVLW k

CONJUNTO DE INSTRUÇÕES

4

132 25/04/2017

MOVFW, MOFWF e MOVLW

MOVFW

MOVWF

(23)

CONJUNTO DE INSTRUÇÕES

4

133 25/04/2017

BCF e BSF

• 0d  f  127d • 0h  f  7Fh • 0d  b  7d • 000b b  111b

• BCF: O bit “b” no registrador “f” vira zero (clear, reset). • BSF: O bit “b” no registrador “f” vira um (set). • Não afetam os bits de estado.

Sintaxe: BCF f,b Sintaxe: BSF f,b

CONJUNTO DE INSTRUÇÕES

4

134 25/04/2017

BTFSC e BTFSS

• Instruções condicionais.

• Analisam o bit “b” no registrador “f”.

• BTFSC: Pula a próxima instrução se “b” é zero. • BTFSS: Pula a próxima instrução se “b” é um.

• BTFSC: “Bit Test f, Skip if Clear”. • BTFSS: “Bit Test f, Skip if Set”. • Não afetam os bits de estado.

Sintaxe: BTFSC f,b Sintaxe: BTFSS f,b

CONJUNTO DE INSTRUÇÕES

4

135 25/04/2017

INCFSZ e DECFSZ

• Instruções condicionais. • Realizam INC ou DEC. • Analisa o resultado. • Se o resultado é zero,

pula a próxima

instrução.

• INCFSZ: “Increment f, Skip if Zero”. • DECFSZ: “Decrement f, Skip if Zero”. • Não afetam os bits de estado. Sintaxe: INCFSZ f,d Sintaxe: DECFSZ f,d INCFSZ d=0: “W” = “f” + 1 d=1: “f” = “f” + 1 DECFSZ d=0: “W” = “f” – 1 d=1: “f” = “f” – 1

CONJUNTO DE INSTRUÇÕES

4

136 25/04/2017

INCFSZ e DECFSZ

• Usados em estruturas de repetição (laços). • Um registrador é usado como variável de contagem. • Em cada repetição, INCFSZ ou DECFSZ é

realizado.

• Se a variável atingiu o valor zero, o ciclo de repetições é finalizado.

CONJUNTO DE INSTRUÇÕES

4

137 25/04/2017

Sobre BTFSC, BTFSS, INCFSZ e DECFSZ

• Skippers.

• Instruções condicionais permitem alterar o

próximo valor do PC.

• Estas instruções consomem o dobro do tempo.

• Este tipo de instrução é chamada de 2TCY.

• Se não houver skip: PC = PC+1.

• Se houver skip: PC = PC+2.

• A instrução pulada é aquela que segue o skipper na program memory. Se a diretiva ORG é usada

após o skipper, a instrução pulada não

necessariamente é aquela que segue a diretiva.

CONJUNTO DE INSTRUÇÕES

4

138 25/04/2017

CLRWDT

• Não usa argumentos. • Não afeta os bits de estado.

• Previne que a MCU reinicie por suspeita de travamento.

• A reiniciação da MCU por suspeita de travamento é uma ferramenta de segurança.

• Este comando reinicia o temporizador

analógico WDT.

• Este comando não é necessário se o WDT está desabilitado.

• Este assunto será apresentado mais adiante. Sintaxe: CLRWDT

(24)

CONJUNTO DE INSTRUÇÕES

4

139 25/04/2017

SLEEP

• Não usa argumentos. • Não afeta os bits de estado.

• Coloca a MCU em modo de baixo consumo de energia. • O modo de baixo consumo é chamado de power down. • Por causa da preocupação com a ecologia, normas

regulamentadoras tem obrigado fabricantes de

dispositivos processados a disponibilizar modos de operação em economia de energia elétrica.

• Este assunto será apresentado mais adiante. Sintaxe: SLEEP

CONJUNTO DE INSTRUÇÕES

4

140 25/04/2017

RETURN

• Não usa argumentos. • Não afeta os bits de estado. • Return from subroutine. • Return: Retornar da sub-rotina.

• Este assunto será apresentado mais adiante. Sintaxe: RETURN

CONJUNTO DE INSTRUÇÕES

4

141 25/04/2017

RETLW

• Não usa argumentos. • Não afeta os bits de estado. • Return with Literal in W.

• Coloca a constante “k” no registrador “W”. • “W” = “k”

• É uma mistura de RETURN e MOVLW. Sintaxe: RETLW k

CONJUNTO DE INSTRUÇÕES

4

142 25/04/2017

RETFIE

Sintaxe: RETFIE • Não usa argumentos.

• Não afeta os bits de estado. • Return From Interrup. • Retornar da interrupção.

• Útil quando a sub-rotina é chamada pela interrupção. • Este assunto será apresentado mais adiante.

CONJUNTO DE INSTRUÇÕES

4

143 25/04/2017 Sintaxe: GOTO k Sintaxe: CALL k

• Nas outras instruções, “k” usa 8 bits (dado).

• Em GOTO e em CALL, “k” usa 11 bits (flash).

• 0d  k  2047d

• 000h  k  7FFh

• “k” indica um endereço na página da flash. • “k” indica o endereço da sub-rotina.

• Não afetam os bits de estado.

GOTO e CALL

CONJUNTO DE INSTRUÇÕES

4

144 25/04/2017

• GOTO: Desvio sem retorno. • CALL: Desvio com retorno.

• Para que haja retorno, é preciso saber o endereço de origem.

• GOTOpode ser usado na maioria das situações.

• CALLé necessário em situações específicas.

• Este assunto será apresentado mais adiante.

(25)

CONJUNTO DE INSTRUÇÕES

4

145 25/04/2017

Tempo

• Instruction Cycle: Tempo para executar uma instrução.

• Clock Input: Entrada de relógio (externo)

• Instruction Cycle TCY = 200ns (5MHz máximo)

• Clock Input = TOSC= 50ns (20MHz máximo)

• 200ns = 450ns

• 1 ciclo de instrução: 4 períodos de relógio.

• O oscilador externo é obtido por meio de cristal ou RC.

CONJUNTO DE INSTRUÇÕES

4

146 25/04/2017

Ciclo de relógio e de instrução

Instrução 1 Instrução 2 Instrução 3

• A sensibilidade é na borda de descida.

• Exemplo para 3 instruções 1TCY.

CONJUNTO DE INSTRUÇÕES

4

147 25/04/2017

• Q1: Decodificação da instrução.

• Q2: Leitura do dado da instrução.

• Q3: Processamento da instrução.

• Q4: Escrita do dado resultante.

• Todas as etapas representam operações realizadas pela ULA através do data bus. • Como se trata de uma MCU de 8 bits,

ULA, W e data bus são de 8 bits. • Todas as etapas implicam em um fluxo

de informação de 8 bits no máximo.

Ciclo de relógio e de instrução

CONJUNTO DE INSTRUÇÕES

4

148 25/04/2017

• Q1: O mnemônico é identificado por meio de

circuitos decodificadores baseados nas tabelas de montagem (decode).

• Todas as instruções passam pela etapa de decodificação.

• As etapas Q2, Q3e Q4nem sempre são usadas.

• Quando uma etapa não é usada, nenhuma atividade é realizada a fim de que a frequência dos ciclos de instrução seja mantida constante.

Ciclo de relógio e de instrução

• Q1: Leitura de 6 bits. • Q2: Leitura de 8 bits. • Q4: Escrita de 8 bits.

CONJUNTO DE INSTRUÇÕES

4

149 25/04/2017

• Todas as instruções usam um ciclo (TCY).

• Exceções:

• Teste condicional.

• Alteração no PC através de uma instrução. • Nas exceções, a instrução usa 2 ciclos.

• 2TCY= 400ns (mínimo). 1 BTFSC 2 BTFSS 3 DECFSZ 4 INCFSZ 5 CALL 6 GOTO 7 RETURN 8 RETLW 9 RETFIE

Ciclo de relógio e de instrução

CONJUNTO DE INSTRUÇÕES

4

150 25/04/2017

• Muitas informações aqui contidas são encontradas

nos data sheets fornecidos pela Microchip©.

• Outras informações são omitidas por tratarem-se de segredo industrial e aqui são apresentadas como uma suposição para fins didáticos.

Referências

Documentos relacionados

Como o objetivo deste trabalho vai além de criar uma estação meteorológica para coletar dados de volume da chuva, direção e velocidade do vento, nível de radiação

De acordo com o texto, a resposta do Papagaio ao questionamento do Leão não pode ser considerada uma reafirmação da supremacia do Leão por ser uma simples repetição da

Ficam, portanto, excluídas todas as publicações cuja finalidade seja unicamente a promoção/difusão de obra arquitectónica (própria ou de terceiros), sem que haja algum tipo

A força de trabalho temporária consiste em outro tipo de exploração do trabalho bastante utilizada nos bancos, principalmente em períodos de aumento no volume de títulos que devem

25 Centro Educacional Universitário Irregular / Portaria Vencida LESTE. 26 Centro Educacional Villa Joie Regular /

O Programa Rede Regional de Luta contra o Tráfico de Crianças e Adolescentes para Fins de Exploração Sexual na Região do MERCOSUL é resultado de um acordo assinado entre

O Pachuca Club de Fútbol, do México foi o primeiro time da Concacaf a conquistar um título como visitante em outra confederação (Conmebol).. Assim sendo, em sua primeiras

Quanto ao ensino universitário, basta lembrar que atual- mente quase todas as universidades estrangeiras e do Brasil já incluíram, obrigatória ou facultativamente, e m seus