Advertisement
apollw

quest3_pic_factorial

Jul 1st, 2014
201
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.00 KB | None | 0 0
  1. #INCLUDE<P12F629.INC>
  2.  
  3. counter EQU 0x20 ;primeiro contador
  4. cont EQU 0x30 ;segundo contador
  5. A_reg3 EQU 0x25 ;fatorial msb
  6. A_reg2 EQU 0x26 ;fatorial reg. meio
  7. A_reg1 EQU 0x27 ;fatorial lsb
  8.  
  9. inic_prog ORG 0x00
  10.  
  11. MOVLW 0x00
  12. MOVWF counter ;CONTADOR RECEBE O 0.
  13. MOVLW 0x01
  14. MOVWF 0x42 ;PARAMETRO DO REGISTRADOR 1 RECEBE 01.
  15. MOVWF 0x43 ;CONTADOR DA FUNCAO RECEBE 01.
  16. MOVLW 0x05
  17. MOVWF cont ;CONTADOR DE PARADA RECEBE 5.
  18. LOOP
  19. CALL funcao ;CHAMADA DE FUNCAO
  20. ;RETORNANDO VALORES
  21. INCF counter,1 ;INCREMENTA O CONTADOR
  22. INCF cont,1 ;INCREMENTA O SEGUNDO CONTADOR
  23. MOVF A_reg3,0
  24. MOVWF 0x40 ;O FATORIAL RECEBE OS VALORES MODIFICADOS QUE SAO NOSSOS PARAMETROS
  25. MOVF A_reg2,0
  26. MOVWF 0x41
  27. MOVF A_reg1,0
  28. MOVWF 0x42
  29. MOVF counter,0 ;ATUALIZO O CONTADOR
  30. MOVWF 0x43 ;RECEBE O SEGUNDO CONTADOR
  31. BTFSC cont,4 ;VERIFICO SE CONT FEZ ISSO 10 VEZES, SE SIM ELE PARA.
  32. GOTO fim_prog
  33. GOTO LOOP
  34.  
  35. funcao CLRF A_reg3
  36. CLRF A_reg2
  37. CLRF A_reg1
  38.  
  39. LOOP_1 MOVF A_reg1,0
  40. ADDWF 0x42,0 ;adiciona o nosso regA com 0x42(fatorial atual)
  41. BTFSC STATUS,0
  42. INCF A_reg2,1
  43. MOVWF A_reg1
  44. MOVF A_reg2,0
  45. ADDWF 0x41,0 ;adiciona o nosso reg do meio com 0x41
  46. BTFSC STATUS,0
  47. INCF A_reg3,1
  48. MOVWF A_reg2
  49. MOVF A_reg3,0
  50. ADDWF 0x40,0 ;adiciona o nosso reg lsb com 0x40
  51. MOVWF A_reg3
  52. DECFSZ 0x43,1 ;Decrementa ate nosso contador virar 0.
  53. GOTO LOOP_1
  54. RETURN
  55.  
  56. fim_prog
  57. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement