Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
08/19/04 05:10
Read: times


 
#76142 - DPTR/Lk UpTbl Difficulty: Advice Please?
Hi everybody! In my attempt to 'modularize' and reduce my ASM LCD code, I have been plagued by a what seems like a stinker of a problem...

Problem: Look-up-table code fails when DPTR uses literal .ORG location values, succeeds when using only #"LABEL" addressing.

I think I am missing something elementary, but I could not find resolution in old forum postings...your advice is greatly appreciated!

This code works:

;-----------Subroutine: DSPSTRING---------------------
DSPSTRING:
        push ACC        ;Saving reg. contents for
        push DPL        ;safe keeping
        push DPH        ;

        mov DPTR,#STRING1 ;***Problem area???

DSP1:                   ;Section 1: get the first string character
        clr A           
        movc a,@a+DPTR  ;Get char. from ROM code space
        inc DPTR        ;Use INC DPTR to address next string char.

        cjne a,#00h,DSP2;A = 00h? (End of string [NULL]?) If so,
        ajmp DSP3       ;then don't jump; else, go to DSP3 to RETurn
DSP2:
        push DPL        ;Save DPTR contents before LCD output subr.
        push DPH        ;
        lcall CHAROUT   ;call LCD data subroutine
        pop DPH         ;restore DPTR
        pop DPL         ;
        ajmp DSP1       ;Loop & get next string char
DSP3:
        pop DPH         ;Restore entrance val of DPTR
        pop DPL         ;
        pop ACC         ;Restore entrance value of A

        RET             ;Exit subroutine

;------DATA TABLE--------------------------------------
STRING1:                      ;first test string
        .db     "Hola Grace"    
        .db     00h             
STRING2:                      ;second test string
        .db     "Te amo Peru"   
        .db     00h


However, if I change MOV DPTR,#STRING1 in "DSPSTRING" section to mov DPL,#00h and mov DPH,#01h along with STRING1 to .ORG 0100h, it fails (no char to LCD [blank], as if it string was never found....but simulates o.k. P.S.: the table is definitely located at my .ORG no problem.

I don't understand why I can't use literal table addresses here. I (wish) to use predefined .ORG table location values instead of labels with DPTR routine!

Any advice? Thanks so much, Marty :)

List of 12 messages in thread
TopicAuthorDate
DPTR/Lk UpTbl Difficulty: Advice Please?            01/01/70 00:00      
   RE: DPTR/Lk UpTbl Difficulty: Advice Ple            01/01/70 00:00      
      Tried those suggestions...            01/01/70 00:00      
         RE: Tried those suggestions...            01/01/70 00:00      
         You missed one!            01/01/70 00:00      
            Reply: You missed one! Andy/Bartosz            01/01/70 00:00      
   RE: DPTR/Lk UpTbl Difficulty: Advice Please?            01/01/70 00:00      
   RE: DPTR/Lk UpTbl Difficulty: Advice Please?            01/01/70 00:00      
   Check the generated code.            01/01/70 00:00      
   RE: DPTR/Lk UpTbl Difficulty: Advice Please?            01/01/70 00:00      
      RE: DPTR/Lk UpTbl Difficulty: Advice Please?            01/01/70 00:00      
         <-- Problem Resolved! -->            01/01/70 00:00      

Back to Subject List