| ??? 08/04/03 16:41 Read: times |
#52088 - RE: Paulmon memory problem Responding to: ???'s previous message |
I have checked the parts of my code that use push/pop sequences, but I don't think that there are any errors in those parts. I have posted the parts below so if any of you see any push/pop errors I may have missed, please let me know. Thanks.
This first part is the built in lcd routines by Paulmon that uses push/pop: ;for writing a string to lcd lcd_pstr: CLR a MOVC a, @a+dptr INC dptr JZ lcd_pstr_end PUSH dpl PUSH dph ACALL lcd_cout POP dph POP dpl SJMP lcd_pstr lcd_pstr_end: RET ;writes what is in Acc to lcd lcd_cout: PUSH acc ACALL lcd_busy ;busy flag checked here, so no MOV dptr, #lcd_data_wr ;need to check before calling lcd_out POP acc MOVX @dptr, a RET This 2nd part below is the 32-bit division by Dr. Marshall that uses push/pop instructions: UDIV32: push 08 ; Save Register Bank 1 push 09 push 0AH push 0BH push 0CH push 0DH push 0EH push 0FH push dpl push dph push B setb RS0 ; Select Register Bank 1 mov r7, #0 ; clear partial remainder mov r6, #0 mov r5, #0 mov r4, #0 mov B, #32 ; set loop count div_lp32: clr RS0 ; Select Register Bank 0 clr C ; clear carry flag mov a, r0 ; shift the highest bit of the rlc a ; dividend into... mov r0, a mov a, r1 rlc a mov r1, a mov a, r2 rlc a mov r2, a mov a, r3 rlc a mov r3, a setb RS0 ; Select Register Bank 1 mov a, r4 ; ... the lowest bit of the rlc a ; partial remainder mov r4, a mov a, r5 rlc a mov r5, a mov a, r6 rlc a mov r6, a mov a, r7 rlc a mov r7, a mov a, r4 ; trial subtract divisor from clr C ; partial remainder subb a, 04 mov dpl, a mov a, r5 subb a, 05 mov dph, a mov a, r6 subb a, #0 mov 06, a mov a, r7 subb a, #0 mov 07, a cpl C ; complement external borrow jnc div_321 ; update partial remainder if ; borrow mov r7, 07 ; update partial remainder mov r6, 06 mov r5, dph mov r4, dpl div_321: mov a, r0 ; shift result bit into partial rlc a ; quotient mov r0, a mov a, r1 rlc a mov r1, a mov a, r2 rlc a mov r2, a mov a, r3 rlc a mov r3, a djnz B, div_lp32 mov 07, r7 ; put remainder, saved before the mov 06, r6 ; last subtraction, in bank 0 mov 05, r5 mov 04, r4 mov 03, r3 ; put quotient in bank 0 mov 02, r2 mov 01, r1 mov 00, r0 clr RS0 pop B pop dph pop dpl pop 0FH ; Retrieve Register Bank 1 pop 0EH pop 0DH pop 0CH pop 0BH pop 0AH pop 09 pop 08 ret |
| Topic | Author | Date |
| Paulmon memory problem | 01/01/70 00:00 | |
| RE: Paulmon memory problem | 01/01/70 00:00 | |
| RE: Paulmon memory problem | 01/01/70 00:00 | |
| RE: Paulmon memory problem | 01/01/70 00:00 | |
| RE: Paulmon memory problem | 01/01/70 00:00 | |
| RE: Paulmon memory problem | 01/01/70 00:00 | |
| RE: Paulmon memory problem | 01/01/70 00:00 | |
| RE: Paulmon memory problem | 01/01/70 00:00 | |
| RE: Paulmon memory problem | 01/01/70 00:00 | |
| Micro Controller | 01/01/70 00:00 | |
| RE: Micro Controller | 01/01/70 00:00 | |
| Micro | 01/01/70 00:00 | |
RE: Micro | 01/01/70 00:00 |



