home *** CD-ROM | disk | FTP | other *** search
/ Crawly Crypt Collection 1 / crawlyvol1.bin / program / books / 68k_book / arp_src / prg_2br.asp < prev    next >
Text File  |  1985-11-20  |  3KB  |  57 lines

  1.  Address Objectcode  Line    Sourcetext RYES_PNO.S Assembled in PC-relative mode                                
  2.  
  3. 000000 :                1   ; Program Name: RYES_PNO.S
  4. 000000 :                2
  5. 000000 :                3   ; Assembly Instructions:
  6. 000000 :                4
  7. 000000 :                5   ;    The algorithms in this program can be assembled in Relocatable or
  8. 000000 :                6   ; PC-relative mode.  But when they are assembled in PC-relative mode, the
  9. 000000 :                7   ; code is not always what we want.
  10. 000000 :                8
  11. 000000 :                9   ; Experiment 1.
  12. 000000 :               10
  13. 000000 :               11   ;    Shows that a pointer, declared in the data section, to a variable
  14. 000000 :               12   ; declared in the bss section will contain the correct address when
  15. 000000 :               13   ; assembly is in Relocatable mode; but when assembled in PC-relative mode,
  16. 000000 :               14   ; the pointer will contain the location at which the variable resided
  17. 000000 :               15   ; during the assembly process.
  18. 000000 :               16
  19. 000000 :207A002E       17   movea.l   _variable, a0       ; A pointer to a variable is loaded into
  20. 000004 :               18                                 ; an address register.
  21. 000004 :               19   ; End of Experiment 1.
  22. 000004 :               20
  23. 000004 :               21   ; Experiment 2.
  24. 000004 :               22
  25. 000004 :               23   ;    Illustrates that the instructions
  26. 000004 :               24
  27. 000004 :               25   ;         move.l #label, -(sp)
  28. 000004 :               26   ;         move.l #label, An
  29. 000004 :               27
  30. 000004 :               28   ; are not compatible with assembly in the PC-relative mode, and that
  31. 000004 :               29   ; the following instructions must be used instead.
  32. 000004 :               30
  33. 000004 :               31   ;         pea    label
  34. 000004 :               32   ;         lea    label.
  35. 000004 :               33
  36. 000004 :2F3C0000002C   34   move.l    #label_1, -(sp)
  37. 00000A :207C0000002C   35   move.l    #label_1, a0
  38. 000010 :2F3C00000034   36   move.l    #label_2, -(sp)
  39. 000016 :227C00000034   37   move.l    #label_2, a1
  40. 00001C :               38
  41. 00001C :487A000E       39   pea       label_1
  42. 000020 :41FA000A       40   lea       label_1, a0
  43. 000024 :487A000E       41   pea       label_2
  44. 000028 :43FA000A       42   lea       label_2, a1
  45. 00002C :               43
  46. 00002C :               44   ; End of Experiment 2.
  47. 00002C :               45
  48. 00002C :               46   data
  49. 00002C :00000001       47  label_1:   dc.l      1
  50. 000030 :00000038       48  _variable: dc.l variable       ; _variable is a pointer to variable.
  51. 000034 :               49   bss
  52. 000034 : ^     4       50  label_2:   ds.l      1
  53. 000038 : ^     4       51  variable:  ds.l      1         ; During loading, we want the address of
  54. 00003C :               52                                 ; this variable to be stored in the
  55. 00003C :               53                                 ; location addressed by the pointer.
  56. 00003C :               54   end
  57.