   User = cheung  Micro-68 Assembler  Fri Nov  2 13:24:56 2001  Page = 1


        1  000000       	xdef start, stop, pause1
        2  000000       	xdef a, b, c, i, j, k
        3  000000       
        4  000000       start:
        5  000000       ******************************** c = func(a,b)
        6  000000 203C 		move.l	#a, d0		; pass param 1 by ref
                  0000
                  002E
        7  000006 2239 		move.l	b, d1		; pass param 2 by value
                  0000
                  0032
        8  00000C 6100 		bsr	func
                  0038
        9  000010 23C7 		move.l  d7, c		; c = return value
                  0000
                  0036
       10  000016       
       11  000016       pause1:
       12  000016       ******************************** k = func(i,j)
       13  000016 203C 		move.l	#i, d0		; pass param 1 by ref
                  0000
                  003A
       14  00001C 2239 		move.l	j, d1		; pass param 2 by value
                  0000
                  003E
       15  000022 6100 		bsr	func
                  0022
       16  000026 23C7 		move.l  d7, k		; k = return value
                  0000
                  0042
       17  00002C       	
       18  00002C 4E71 	stop:	nop
       19  00002E       
       20  00002E 0000 	a:	dc.l 23
                  0017
       21  000032 0000 	b:	dc.l 12
                  000C
       22  000036 0000 	c:	dc.l 11
                  000B
       23  00003A 0000 	i:	dc.l 67
                  0043
       24  00003E 0000 	j:	dc.l 1
                  0001
       25  000042 0000 	k:	dc.l 9
                  0009
       26  000046       
       27  000046       
       28  000046       * ----------------------------------- You can use lines like this to show
       29  000046       * ----------------------------------- where a subroutine starts !!!!!!!!!
       30  000046       * ----------------------------------- (BTW, that's the only way :-)
       31  000046       * Subroutine func
       32  000046       * Input: d0 = first integer
       33  000046       *	 d1 = second integer
       34  000046       * Output: d0 = x*x + y*y
       35  000046       func:
   User = cheung  Micro-68 Assembler  Fri Nov  2 13:24:56 2001  Page = 2


       36  000046 2040 		MOVEA.L D0, A0   // We need to use addr reg to access memory
       37  000048 2010 		MOVE.L  (A0),D0
       38  00004A C1C0 		MULS   D0, D0    // x*x
       39  00004C C3C1 		MULS   D1, D1    // y*y
       40  00004E D081 		ADD.L  D1, D0    // x*x + y*y
       41  000050 2E00 		MOVE.L D0, D7    // Put return value in the agreed location
       42  000052       
       43  000052 4E75 		RTS
       44  000054       
       45  000054       	end
   User = cheung  Micro-68 Assembler  Fri Nov  2 13:24:56 2001  Page = 3


                             SYMBOL TABLE
                             ************

a          00002E            b          000032            c          000036            
func       000046            i          00003A            j          00003E            
k          000042            pause1     000016            start      000000            
stop       00002C            
   User = cheung  Micro-68 Assembler  Fri Nov  2 13:24:56 2001  Page = 4


                         CROSS REFERENCE TABLE
                         *********************

             20#
             21#
             22#
             35#
             23#
             24#
             25#
             11#
              4#
             18#

