home *** CD-ROM | disk | FTP | other *** search
- {*********************************************************}
- { }
- { A program forráskódja az IDG - PCX szerkesztôségének, }
- { és Bérczi László-nak a tulajdona. }
- { A forráskód a kereskedelmi célokat kivéve szabadon }
- { terjeszthetô ! }
- { }
- { PC-X User (c) 1997, március }
- {*********************************************************}
- {$G+} {286-os utasítások használatának engedélyezése. (Lásd: SHL al, 4)}
- procedure eXCHanGe(var Valami: Word); Assembler;
- asm
- push es {elmentjük a stack-en az es regisztert}
- push di {elmentjük a stack-en az di regisztert}
- les di, Valami {Az es:[di] regiszterpárba töltjük a Valami
- változó címét. * Lásd alább !}
- mov ax, Word Ptr es:[di] {az ax reg.be töltjük az es:[di] címen
- lévô Word-öt.}
- xchg ah, al {felcseréljük az al, és ah reg. tartalmát}
- mov Word Ptr es:[di], ax {visszatöltjük az ax reg. tartalmát az es:[di]
- címre, ezáltal megváltozik az eredeti érték}
- pop di {a megfelelô!!! sorrendben leemeljük a stack-rôl}
- pop es {a lementett regisztereket}
- end;
-
- const Digit: Array[0..15] of Char = '0123456789ABCDEF';
-
- function ConvertDecToHex(X: Word): String; Assembler;
- asm
- push es
- lea bx, Digit
- les di, @Result
- cld
- mov al, 4
- stosb
- mov cx, X
- mov al, ch
- shr al, 4
- xlat
- stosb
- mov al, ch
- and al, 15
- xlat
- stosb
- mov al, cl
- shr al, 4
- xlat
- stosb
- mov al, cl
- and al, 15
- xlat
- stosb
- pop es
- end;
-
- var W: Word;
- BEGIN
- W:=$1234;
- eXCHanGe(W); {be megy Word: $1234 (hex), ki jön Word : $3412 (hex)}
- WriteLn(ConvertDecToHex(W), 'h');
- END.