Advertisement
apollw

quest2

Jul 1st, 2014
190
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.48 KB | None | 0 0
  1. ;***********************************************************
  2. ;DEFINICAO DOS ESPAÇOS DE MEMÓRIA UTILIZADOS PELAS VARIAVEIS
  3. ;VARIAVEL r: --------
  4. var_r EQU 0x20
  5. ;VARIAVEL s: --------
  6. var_s EQU 0x21
  7. ;VARIAVEL t: --------
  8. var_t EQU 0x22
  9. ;VARIAVEL u: --------
  10. var_u EQU 0x23
  11. ;VARIAVEL v: --------
  12. var_v EQU 0x24
  13. ;VARIAVEL z: --------
  14. var_z EQU 0x25
  15. ;VARIAVEIS TEMPORARIAS:----------
  16. temp1 EQU 0x30
  17. temp2 EQU 0x31
  18. temp3 EQU 0x32
  19.  
  20. ;INICIO DO PROGRAMA ************************
  21. ORG 0x00 ;DEFINICAO DE ONDE COMEÇA O PROGRAMA
  22. MOVLW 0x06 ;MOVE O VALOR 06 PARA O ACUMULADOR
  23. MOVWF var_s ;COPIA O VALOR DE W PARA r_lsb
  24. MOVLW 0x09 ;COLOCA O VALOR 09 EM W
  25. MOVWF var_t ;COPIA O VALOR DE W PARA s_lsb
  26.  
  27. ;REALIZAR A OPERAÇÃO v = s + t - (3*t + 5)
  28. MOVF var_t,0 ;COPIA O VALOR DE var_t PARA W
  29. MOVWF temp1 ;COLOCA O VALOR DE W PARA temp1
  30. MOVLW 0x03 ;COLOCA 0x03 EM W
  31. MOVWF temp2 ;COLOCA O VALOR DE W EM temp2
  32. CALL funcmult ;CHAMA A FUNCAO DE MULTIPLICAÇÃO
  33. ADDLW 0x05 ;FAZ: W = W + 5
  34. MOVWF temp1 ;COLOCA O RESULTADO DE W EM temp1
  35. MOVF var_s,0 ;COPIA O VALOR DE S PARA W
  36. ADDWF var_t,0 ;FAZ: W = W + T
  37. MOVWF temp2 ;COPIA O VALOR DE W PARA temp2
  38. MOVF temp1,0 ;COLOCA O VALOR DE temp1 EM W
  39. SUBWF temp2,0 ;FAZ: W = temp2 - W
  40. MOVWF var_v ;COLOCA O VALOR DE W EM V
  41.  
  42. ;IMPLEMENTAÇÃO DE if(r>0):
  43. BTFSC var_r,7 ;VERIFICA SE R É NEGATIVO
  44. GOTO else1 ;SE FOR, VA PARA else1
  45. DECF var_r,1 ;SE NAO, DECREMENTA R
  46. BTFSC var_r,7 ;VERIFICA NOVAMENTE SE R É NEGATIVO
  47. GOTO else1 ;SE FOR, VA PARA else1
  48.  
  49. if1 NOP
  50. ;REALIZAR A OPERAÇÃO U = 2*V - T:
  51. MOVF var_v,0 ;COPIA PARA W O VALOR DE V
  52. MOVWF temp1 ;COLOCA O VALOR DE W EM temp1
  53. MOVLW 0x02 ;COLOCA 0x02 EM W
  54. MOVWF temp2 ;COPIA O VALOR DE W PARA temp2
  55. CALL funcmult ;CHAMA A FUNCAO DE MULTIPLICAÇÃO
  56. MOVWF temp1 ;COLOCA O VALOR DE W PARA 0x30
  57. MOVF var_t,0 ;COPIA O VALOR DE T PARA W
  58. SUBWF temp1,0 ;FAZ: W = temp1 - W
  59. MOVWF var_u ;COLOCA O RESULTADO EM U
  60.  
  61. ;IMPLEMENTAR Z = funcD(u,v)
  62. MOVF var_u,0 ;CARREGA U EM W
  63. MOVWF parD1 ;COLOCA O VALOR DE W EM parD1
  64. MOVF var_v,0 ;CARREGA V EM W
  65. MOVWF parD2 ;COLOCA O VALOR DE W EM parD2
  66. CALL funcD ;CHAMA funcD
  67. MOVWF var_z ;COLOCA O VALOR DE RETORNO EM Z
  68. GOTO finalprog
  69.  
  70. else1 NOP
  71. ;IMPLEMENTAR U = 3*V + 4*T
  72. INCF var_r ;INCREMENTA R
  73. MOVF var_v,0 ;CARREGA V EM W
  74. MOVWF temp1 ;COPIA O VALOR DE W PARA temp1
  75. MOVLW 0x03 ;CARREGA O LITERAL 0x03 EM W
  76. MOVWF temp2 ;COLOCA O VALOR DE W EM temp2
  77. CALL funcmult ;CHAMA A FUNCAO DE MULTIPLICAÇÃO
  78. MOVWF temp3 ;DEIXA O RESULTADO EM temp3
  79. MOVF var_t,0 ;CARREGA t EM W
  80. MOVWF temp1 ;COPIA O VALOR DE W PARA temp1
  81. MOVLW 0x04 ;CARREGA O LITERAL 0x04 EM W
  82. MOVWF temp2 ;COLOCA O VALOR DE W EM temp2
  83. CALL funcmult ;CHAMA A FUNCAO DE MULTIPLICAÇÃO
  84. ADDWF temp3,0 ;FAZ: W = W + temp3
  85. MOVWF var_u ;COLOCA O VALOR DE W EM U
  86.  
  87. ;IMPLEMENTAR Z= funcE(u,r)
  88. MOVF var_u,0 ;CARREGA O VALOR DE U EM W
  89. MOVWF parE1 ;COPIA O VALOR DE W PARA parE1
  90. MOVF var_r,0 ;CARREGA O VALOR DE R EM W
  91. MOVWF parE2 ;COPIA O VALOR DE W PARA parE2
  92. CALL funcE ;CHAMA A FUNCAO E
  93. MOVWF var_z ;COLOCA O VALOR DE RETORNO EM Z
  94. GOTO finalprog
  95.  
  96. ;************* SUB-ROTINAS **********************
  97. ;
  98. ;FUNCAO DE MULTIPLICAÇÃO DE 8bits
  99. funcmult NOP
  100. CLRW
  101. loop NOP
  102. DECF temp2,1
  103. BTFSC temp2,7
  104. GOTO retorna
  105. ADDWF temp1,0
  106. GOTO loop
  107. retorna NOP
  108. RETURN
  109.  
  110. ;FUNCAO D:
  111. funcD NOP
  112. ;DEFINIÇÃO DAS VARIAVEIS DA FUNCAO
  113. parD1 EQU 0x40
  114. parD2 EQU 0x41
  115. ;--------------------------------
  116. MOVF parD1,0 ;COLOCA O VALOR DE 0x40 EM W
  117. ADDWF parD2,0 ;FAZ: W = parD2 + W
  118. NOP
  119. RETURN ;RETORNA
  120.  
  121. ;FUNÇÃO E:
  122. funcE NOP
  123. ;DEFINIÇÃO DAS VARIAVEIS DA FUNCAO
  124. parE1 EQU 0x42
  125. parE2 EQU 0x43
  126. ;--------------------------------
  127. MOVF parE2,0 ;CARREGA O VALOR DE parE2 em W
  128. SUBWF parE1,0 ;FAZ: W = parE1 - W
  129. NOP
  130. RETURN ;RETORNA
  131.  
  132. finalprog NOP
  133. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement