home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / tasm / chapxmpl.arc / AUSTAUS.ASM < prev    next >
Encoding:
Assembly Source File  |  1988-10-09  |  1.0 KB  |  39 lines

  1. CODE        SEGMENT
  2.         ASSUME    CS:CODE,DS:NOTHING
  3.  
  4. ; Parameter ( Offset +2 wegen push bp)
  5.  
  6. Var1        EQU    DWORD PTR ss:[bp+12]
  7. Var2        EQU    DWORD PTR ss:[bp+8]
  8. Anzahl        EQU    WORD PTR ss:[bp+6]
  9.  
  10. Austausch    PROC    FAR
  11.         PUBLIC    Austausch
  12.         cld                ; nach oben austauschen
  13.         mov    dx,ds        ; DS sichern
  14.         push    bp
  15.         mov    bp,sp        ; Zeiger auf Stack
  16.         lds    si,Var1        ; Erste Adresse
  17.         les    di,Var2        ; Zweite Adresse
  18.         mov    cx,Anzahl        ; Anzahl der zu verschiebenden Bytes
  19.         shr    cx,1            ; Anzahl der Worte
  20.         jnc    WorteTauschen    ; Schleife, falls gerade Anzahl Bytes
  21.         mov    al,es:[di]        ; Ungerades Byte lesen
  22.         movsb            ; Abspeichern
  23.         mov    [si-1],al        ; Byte von Var2 in Var1 speichern
  24.         jz    Ende            ; Fertig, falls es nur ein Byte war
  25. WorteTauschen:
  26.         mov    bx,-2        ; -2 zwischenspeichern
  27. TauschenSchleife:
  28.         mov    ax,es:[di]        ; Wort von Var2 lesen
  29.         movsw            ; Word von Var1 in Var2 übertragen
  30.         mov    [bx][si],ax    ; Var2 in Var1 übertragen
  31.         loop    TauschenSchleife
  32. Ende:
  33.         mov    ds,dx        ; DS von Turbo wiederherstellen
  34.         pop    bp
  35.         ret    10
  36. Austausch    ENDP
  37. CODE        ENDS
  38.         END
  39.