Example:
    main()                 int func(int x, int y)
    {			   {
       int a, b;	      ....
			      ....
       func(a, b);	      ....
    }			   }
 Assembler code:
   main:  xxxxx          ->  func:  xxxxx
	  xxxxx         /
	  xxxxx        /
	  xxxxx       /
	  xxxxx      /
	  BSR func -
	  xxxxx
 
 Because the "BSR func" will make the CPU jump to the first instruction in the function "func", you must pass the parameters (if any) to the function "func" BEFORE the "BSR func" instruction
 Example:
    main()                 int func(int x, int y)
    {			   {
       int a, b;	      ....
			      ....
       func(a, b);	      ....
    }			   }
 
 
    main()                 int func(int x, int y)
    {			   {
       int a, b, c;	      return (x*x + y*y);
       int i, j, k;        }  
       c = func(a, b);	      
       k = func(i, j);
    }			   
  func() has 2 parameters and 1 return value
  Agreement:  parameter 1 in register D0
	      parameter 2 in register D1
	      return value in register D7
  The asembler program will look like this:
   main:
	 MOVE.L a, D0  (pass a through D0)
	 MOVE.L b, D1  (pass b through D1)
	 BSR    func   ----------------------------+
                                                   |
	 MOVE.L D7, c                              |
						   |
						   |
         MOVE.L i, D0  (pass i through D0)         |
         MOVE.L j, D1  (pass j through D1)         |
	 BSR    func   -------------------------+  |
					        |  |
	 MOVE.L D7, k                           V  V
				    func: (func(x,y))
				           MULS  D0, D0  (Use the input parameters
					   MULS  D1, D1   put in the agreed locations)
					   ADD.L D1, D0   ** D0 = x^2 + y^2
					   MOVE.L D0, D7 (put return value
							  in previously
							  agreed location)
					   RTS
 
 
 
        
  
How to run the program:
| 
 | 
| 
 |