home *** CD-ROM | disk | FTP | other *** search
/ Vectronix 2 / VECTRONIX2.iso / FILES_01 / PC_V11_B.LZH / DEMO_ASS / DEMO_ASS / C_ASM_S.S < prev    next >
Text File  |  1991-08-02  |  1KB  |  57 lines

  1. ;       C_ASM.S
  2. ;       Demoprogramm zum Aufruf von Assemblerroutinen aus
  3. ;       C-Programmen und umgekehrt.
  4.  
  5.         EXPORT  SumMulFac   ; Für MAIN.C
  6.  
  7.         IMPORT  fakult      ; Aus MAIN.C
  8.  
  9.         IMPORT  printf      ; Aus der Bibliothek PCFLTLIB
  10.  
  11.  
  12.  
  13.         TEXT
  14.  
  15. SumMulFac:
  16.         move.l  D3, -(A7)   ; Benutzte Register retten
  17.         move.l  D4, -(A7)
  18.  
  19.         move.w  D0, D3      ; D3,D4 dienen als Variable
  20.         move.w  D1, D4
  21.  
  22.         muls    D0, D1      ; Produkt berechnen
  23.  
  24.         move.L  D1, -(A7)   ; Ergebnis mit printf() ausgeben
  25.         move.w  D4, -(A7)
  26.         move.w  D3, -(A7)
  27.         lea     multi, A0
  28.         bsr     printf
  29.         addq    #8, A7      ; Stackkorrektur nach Aufruf von printf()
  30.  
  31.         move.w  D3, D0
  32.         move.w  D4, D1
  33.         add     D0, D1      ; Summe berechnen
  34.  
  35.         move.w  D1, -(A7)   ; Ergebnis mit printf() ausgeben
  36.         move.w  D4, -(A7)
  37.         move.w  D3, -(A7)
  38.         lea     summe, A0
  39.         bsr     printf
  40.         addq    #6, A7      ; Stackkorrektur nach Aufruf von printf()
  41.  
  42.         move.w  d3, d0
  43.         beq     exit
  44.         bsr     fakult      ; Fakultät berechnen (in C_ASM.C)
  45.  
  46. exit:
  47.         move.l  (A7)+, D4   ; Register wiederherstellen
  48.         move.l  (A7)+, D3
  49.         rts
  50.  
  51.  
  52.         DATA
  53. multi:
  54.         dc.b    "Das Produkt aus %d und %d ist %ld", 10, 0
  55. summe:
  56.         dc.b    "Die Summe aus %d und %d ist %d", 10, 0
  57.