Advertisement
apollw

q5_fib_asm

Jul 1st, 2014
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.90 KB | None | 0 0
  1. #INCLUDE <P12F629.INC>
  2. ;Valor A sera meu primeiro numero da sequencia
  3. A_reg3 EQU 0x20
  4. A_reg2 EQU 0x21
  5. A_reg1 EQU 0x22
  6. ;Valor B sera meu segundo numero da sequencia
  7. B_reg3 EQU 0x23
  8. B_reg2 EQU 0x24
  9. B_reg1 EQU 0x25
  10. ;Valor C sera meu terceiro numero da sequencia
  11. C_reg3 EQU 0x26
  12. C_reg2 EQU 0x27
  13. C_reg1 EQU 0x28
  14. ;VALOR TEMPORARIO DE ITERAÇÃO
  15. temp_reg3 EQU 0x30
  16. temp_reg2 EQU 0x31
  17. temp_reg1 EQU 0x32
  18. counter EQU 0x2A
  19.  
  20. inic_prog ORG 0x00
  21. MOVLW 0X00 ;Mover valor 0 para primeiro numero
  22. MOVWF A_reg1
  23. MOVWF A_reg2
  24. MOVWF A_reg3
  25. MOVWF B_reg2 ;Mover zero para dois registradores de B mais significativos
  26. MOVWF B_reg3
  27. MOVWF C_reg2 ;Mover zero para dois registradores de C mais significativos
  28. MOVWF C_reg3
  29. MOVWF temp_reg2 ;Mover zero para dois registradores mais significativos
  30. MOVWF temp_reg3
  31. MOVLW 0X01
  32. MOVWF B_reg1 ;Segundo numero da sequencia é o 01.
  33. MOVWF C_reg1 ;Terceiro numero da sequencia é o 01.
  34. MOVLW 0x04
  35. MOVWF counter ;Mover o numero 4 para o contador, logica de contagem e parada.
  36.  
  37. ;primeiro loop
  38. MAIN MOVF B_reg1,0 ;ADICIONO O SEGUNDO NUMERO COM O TERCEIRO.
  39. ADDWF C_reg1,0
  40. BTFSC STATUS,0 ;VERIFICA SE HOUVE CARRY
  41. GOTO LOOP_3 ;SE HOUVE CARRY VAI PARA O LOOP_3.
  42. MOVWF temp_reg1 ;GUARDA O VALOR EM REGIT. TEMPORARIO,ESSE SERA MEU NOVO NUMERO.
  43. MOVF B_reg2,0 ;termina de adicionar agora com registradores do meio.
  44. ADDWF C_reg2,0
  45. BTFSC STATUS,0
  46. GOTO LOOP_4 ;se houver carry vai para o loop_4
  47. MOVWF temp_reg2
  48. REG_3 MOVF B_reg3,0 ;LOOP FINAL PARA CASO NAO HAVER CARRY .
  49. ADDWF C_reg3,0
  50. MOVWF temp_reg3
  51.  
  52. ;DESCARTANDO O ANTIGO
  53. LOOP_2 INCF counter,1 ;CONTADOR DE POSICAO
  54. MOVF B_reg1,0 ;ATUALIZO OS VALORES
  55. MOVWF A_reg1
  56. MOVF B_reg2,0 ;OCORRE A SUBSTITUIÇÃO
  57. MOVWF A_reg2
  58. MOVF B_reg3,0
  59. MOVWF A_reg3
  60. MOVF C_reg1,0
  61. MOVWF B_reg1
  62. MOVF C_reg2,0
  63. MOVWF B_reg2
  64. MOVF C_reg3,0
  65. MOVWF B_reg3
  66. MOVF temp_reg1,0
  67. MOVWF C_reg1
  68. MOVF temp_reg2,0
  69. MOVWF C_reg2
  70. MOVF temp_reg3,0
  71. MOVWF C_reg3
  72. BTFSS counter,5 ;SE 30 ELE PARA,30 POSIÇÕES
  73. GOTO MAIN
  74. GOTO end_prog
  75.  
  76. ;SE CASO LOOP_3 FORADO,É PQ HOUVE CARRY ANTERIOR PROPAGADO PARA O SEGUNDO REGISTRADOR END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement