SHARE
TWEET

Untitled

a guest Aug 13th, 2017 105 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ; Programme qui manipule une liste chaînée
  2. ; Nilovna Bascunan-Vasquez
  3. ; Stephan Michaud
  4. ;
  5. ;                            ; // Lit la liste (à l'envers)
  6.  
  7. loop_i:  LDA     mLength,i  
  8.         CALL    new         ;   X = new Maillon(); #mVal #mNext
  9.         CHARI   mVal,x      ;   X.val = getChar();
  10.         LDBYTEA mVal,x      ;    if (caractère == fin de ligne) break;
  11.         CPA     0xA,i
  12.         BREQ    out
  13.         LDA     head,d      
  14.         STA     mNext,x     ;   X.next = head;
  15.         STX     head,d      ;   head = X;
  16.         BR      loop_i
  17.  
  18. ;
  19. ;                            ; // Affiche la chaine de caractères à l'envers
  20. out:     LDX     head,d      
  21. loop_out:CPX     0,i        
  22.          BREQ    fin         ; for (X=head; X!=null; X=X.next) {
  23.          CHARO   mVal,x      
  24.          LDX     mNext,x    
  25.          BR      loop_out    ; } // fin for
  26.          CHARO   '\n',i      ; // Saut de ligne
  27.                              ; // Affiche la chaine de caractères à l'endroit
  28.  
  29. fin:     STOP                
  30. head:    .BLOCK  2           ; #2h tête de liste (null (aka 0) si liste vide)
  31. ;
  32. ;******* Structure de liste d'octets
  33. ; Une liste est constituée d'une chaîne de maillons.
  34. ; Chaque maillon contient une valeur, l'adresse du maillon suivant et
  35. ;  l'adresse du maillon précédent
  36. ; La fin de la liste est marquée arbitrairement par l'adresse 0
  37. mVal:    .EQUATE 0           ; #2d valeur de l'élément dans le maillon
  38. mNext:   .EQUATE 1           ; #2h maillon suivant (null (aka 0) pour fin de liste)
  39. mPrev:   .EQUATE 3           ; #2h maillon précédent (null (aka 0) pour début de liste)
  40. mLength: .EQUATE 5           ; taille d'un maillon en octets
  41.  
  42. ;
  43. ;
  44. ;******* operator new
  45. ;        Precondition: A contains number of bytes
  46. ;        Postcondition: X contains pointer to bytes
  47. new:     LDX     hpPtr,d     ;returned pointer
  48.         ADDA    hpPtr,d     ;allocate from heap
  49.         STA     hpPtr,d     ;update hpPtr
  50.         RET0                
  51.  
  52. hpPtr:   .ADDRSS heap        ;address of next free byte
  53. heap:    .BLOCK  1           ;first byte in the heap
  54.         .END
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top