home *** CD-ROM | disk | FTP | other *** search
/ PC-X 1997 March / pcx08_9703.iso / melyviz / pcx-user / asm / xchg.pas < prev   
Encoding:
Pascal/Delphi Source File  |  1996-12-24  |  1.9 KB  |  61 lines

  1. {*********************************************************}
  2. {                                                         }
  3. {   A program forráskódja az IDG - PCX szerkesztôségének, }
  4. {   és Bérczi László-nak a tulajdona.                     }
  5. {   A forráskód a kereskedelmi célokat kivéve szabadon    }
  6. {                    terjeszthetô !                       }
  7. {                                                         }
  8. {   PC-X User (c) 1997, március                           }
  9. {*********************************************************}
  10. {$G+} {286-os utasítások használatának engedélyezése. (Lásd: SHL al, 4)}
  11. procedure eXCHanGe(var Valami: Word); Assembler;
  12. asm
  13.   push es  {elmentjük a stack-en az es regisztert}
  14.   push di  {elmentjük a stack-en az di regisztert}
  15.   les  di, Valami  {Az es:[di] regiszterpárba töltjük a Valami
  16.                     változó címét. * Lásd alább !}
  17.   mov  ax, Word Ptr es:[di]  {az ax reg.be töltjük az es:[di] címen
  18.                               lévô Word-öt.}
  19.   xchg ah, al {felcseréljük az al, és ah reg. tartalmát}
  20.   mov  Word Ptr es:[di], ax  {visszatöltjük az ax reg. tartalmát az es:[di]
  21.                               címre, ezáltal megváltozik az eredeti érték}
  22.   pop  di  {a megfelelô!!! sorrendben leemeljük a stack-rôl}
  23.   pop  es  {a lementett regisztereket}
  24. end;
  25.  
  26. const Digit: Array[0..15] of Char = '0123456789ABCDEF';
  27.  
  28. function  ConvertDecToHex(X: Word): String; Assembler;
  29. asm
  30.   push es
  31.   lea  bx, Digit
  32.   les  di, @Result
  33.   cld
  34.   mov  al, 4
  35.   stosb
  36.   mov  cx, X
  37.   mov  al, ch
  38.   shr  al, 4
  39.   xlat
  40.   stosb
  41.   mov  al, ch
  42.   and  al, 15
  43.   xlat
  44.   stosb
  45.   mov  al, cl
  46.   shr  al, 4
  47.   xlat
  48.   stosb
  49.   mov  al, cl
  50.   and  al, 15
  51.   xlat
  52.   stosb
  53.   pop  es
  54. end;
  55.  
  56. var W: Word;
  57. BEGIN
  58.   W:=$1234;
  59.   eXCHanGe(W); {be megy Word: $1234 (hex), ki jön Word : $3412 (hex)}
  60.   WriteLn(ConvertDecToHex(W), 'h');
  61. END.