home *** CD-ROM | disk | FTP | other *** search
/ Enigma Amiga Life 109 / EnigmaAmiga109CD.iso / software / testi / corsoasm / sorgenti7 / lezione11a.s < prev    next >
Text File  |  1995-09-29  |  1KB  |  42 lines

  1.  
  2. ; Lezione11a.s        Esecuzione di un paio di istruzioni privilegiate.
  3.  
  4. Inizio:
  5.     move.l    4.w,a6            ; ExecBase in a6
  6.     lea    SuperCode(PC),a5    ; Routine da eseguire in supervisor
  7.     jsr    -$1e(a6)        ; LvoSupervisor - esegui la routine
  8.                     ; (non salva i registri! attenzione!)
  9.     rts                ; esci, dopo aver eseguito la routine
  10.                     ; "SuperCode" in supervisor.
  11.  
  12. ; Routine eseguita in modo supervisore
  13. ;      __
  14. ;      \/
  15. ;    -    -
  16. ;    
  17. ;     /  \
  18.         
  19. SuperCode:
  20.     move.w    SR,d0        ; istruzione privilegiata
  21.     move.w    d0,sr        ; istruzione privilegiata
  22.     RTE    ; Return From Exception: come l'RTS, ma per le eccezioni.
  23.  
  24.     end
  25.  
  26. Eseguendo questo listato prendete il valore dello Status Register nel momento
  27. dell'eccezione, per cui alla fine dell'esecuzione in d0 ci sara' un valore,
  28. solitamente $2000, che e' anche la prova che si stava eseguendo in exception,
  29. dato che il bit 13 dello SR se settato indica il modo supervisore.
  30.  
  31.  (((
  32. oO Oo
  33.  \"/
  34.   ~        5432109876543210
  35.     ($2000=%0010000000000000)
  36.  
  37. NOTA: move.w SR,destinazione e' privilegiata solo dal 68010 in avanti, nel
  38. 68000 e' eseguibile anche in modo utente. Infatti chi la ha usata nelle
  39. vecchie demo o giochi in modo utente, ha fatto si' che funzioni solo su 68000,
  40. con lancio di bestemmie e accidenti per possessori di 68020+.
  41.  
  42.