home *** CD-ROM | disk | FTP | other *** search
- CODE SEGMENT
- ASSUME CS:CODE,DS:NOTHING
-
- ; Parameter ( Offset +2 wegen push bp)
-
- Var1 EQU DWORD PTR ss:[bp+12]
- Var2 EQU DWORD PTR ss:[bp+8]
- Anzahl EQU WORD PTR ss:[bp+6]
-
- Austausch PROC FAR
- PUBLIC Austausch
- cld ; nach oben austauschen
- mov dx,ds ; DS sichern
- push bp
- mov bp,sp ; Zeiger auf Stack
- lds si,Var1 ; Erste Adresse
- les di,Var2 ; Zweite Adresse
- mov cx,Anzahl ; Anzahl der zu verschiebenden Bytes
- shr cx,1 ; Anzahl der Worte
- jnc WorteTauschen ; Schleife, falls gerade Anzahl Bytes
- mov al,es:[di] ; Ungerades Byte lesen
- movsb ; Abspeichern
- mov [si-1],al ; Byte von Var2 in Var1 speichern
- jz Ende ; Fertig, falls es nur ein Byte war
- WorteTauschen:
- mov bx,-2 ; -2 zwischenspeichern
- TauschenSchleife:
- mov ax,es:[di] ; Wort von Var2 lesen
- movsw ; Word von Var1 in Var2 übertragen
- mov [bx][si],ax ; Var2 in Var1 übertragen
- loop TauschenSchleife
- Ende:
- mov ds,dx ; DS von Turbo wiederherstellen
- pop bp
- ret 10
- Austausch ENDP
- CODE ENDS
- END
-