Hollosi Information eXchange /HIX/
HIX CODER 311
Copyright (C) HIX
1998-12-17
Új cikk beküldése (a cikk tartalma az író felelőssége)
Megrendelés Lemondás
1 Re: real mode (32 bites regiszterek Turbo Pascal-ban) (mind)  51 sor     (cikkei)
2 halozat programozas (mind)  7 sor     (cikkei)
3 Re: Delphi #310 (mind)  13 sor     (cikkei)

+ - Re: real mode (32 bites regiszterek Turbo Pascal-ban) (mind) VÁLASZ  Feladó: (cikkei)

Hello Boky!

> Pascalban es Assemblyben programozok, keverve. Gondjaim
> tamadtak a 32 bites regiszterek ( EAX, EBX, ECX stb. )
> valos modban valo programozasaval. Tiszta Assemblyben
> a .386 utasitas midnedt elintez, de ezt a Turbo Pascal
> forditoja nem ismeri.

Igen, igen. A Turbo Pascal internal asm-je elegge gyenge, de van megoldas:
prefixelni kell (instruction prefixes). Az Intel procik 2 prefix byte-ot
ismernek:
- 66h (operand-size prefix),
- 67h (address-size prefix).
Ha egy sor ele berakod pl. a 66h-t akkor a 16 bites operandusokbol 32 bites
lesz.

pl.: mov ax,5                        ax-ba rak 5-ot.
      db 66h; mov ax,5            eax-ba rak 5-ot... (tehat mov eax,5) DE! A
66h miatt
nem csak az ax-bol lesz eax, hanem a masodik operandusnak is 32 bitesnek kell
lennie. Viszont a pascal 16 bitesen forditja a mov ax,5-ot, tehat az 5 is 16
bites
lesz. Magyaran a mov eax,5 TP-ben a kovetkezo keppen nez ki:
      db 66h; mov ax,5; dw 0000h

Hasonloan mukodik a 67h is, csak az a cimtartomanyt noveli 32 bitesre.

pl: db 67h; mov al,[0004h]; dw 0000h    = mov al,[000000004h]

A a 2 prefixet persze egyszerre is lehet hasznalni.

pl: db 67h; db 66h; mov ax[5678h] dw 1234h     = mov eax,[12345678h]

Viszont ha 32 bites regisztereket akarsz hasznalni cimezeshez, az mar igy
prefixekkel nem megy:
pl. a mov ax,[di] gepi kodja 8b05h. Ha ezt prefixelve irjuk:
     db 67h; db 66h; mov ax,[di], akkor a pascal a kovetkezo kodot forditja:
67h; 66h; 8b05h. Viszont a mov eax,[edi] gepi kodja db 67h; db 66h; 8b07h...
Nem beszelve arrol, hogy ha szegmens regisztert is hasznalsz... Mert ugye
a szegmens megadasa (gepi kodban) mindig az utasitas elott all. Tehat pl.
a mov al,es:[di] gepi kodja 26h; 8b05h. 
A mov eax,es:[edi] kodja pedig: 26h; 67h; 66h; 8b07h; tehat a 2 prefix ELOTT
van a 26h!

Na szoval a lenyeg az, hogy ha csak az operandusokat hasznalod 32 bitesen,
akkor nem tul maceras a dolog, de ha cimeket is... Szerintem inkabb az asm
rutinjaidat Turbo Assembler-rel forditsd le .obj-ba, es a pascalban extern-kent
definiald oket!

Minden jot!
[GrK]/BackLash
+ - halozat programozas (mind) VÁLASZ  Feladó: (cikkei)

Tobben erdeklodtek a multkor a halozatprogramozasrol.
Irtam egy sajat egyszeru webszervert (GNU) C-ben es fetettem a
www.cab.u-szeged.hu/~h734673 oldalra (vagyis ide egy link ala).
 A lenyeg a main() fg, azt kicsit atirva, szinten minden
megvalosithato (finger, SMTP, FTP, POP3, stb).

 Zoli
+ - Re: Delphi #310 (mind) VÁLASZ  Feladó: (cikkei)

Szia Unicorn !

3.:     ShowWindow(Handle, SW_RESTORE);
         SetForegroundWindow(Handle);

4.: En ezt ugy csinaltam, hogy lekerdeztem a kepernyo beallitasat es ahhoz kepe
st allitottam a szoftverben
     mind a helyzeteket, mind a nagysagokat, mind a fontokat.
     HKEY_CURRENT_CONFIG\Display\Settings\Resolution

--
Csa'
                       SeBy

AGYKONTROLL ALLAT AUTO AZSIA BUDAPEST CODER DOSZ FELVIDEK FILM FILOZOFIA FORUM GURU HANG HIPHOP HIRDETES HIRMONDO HIXDVD HUDOM HUNGARY JATEK KEP KONYHA KONYV KORNYESZ KUKKER KULTURA LINUX MAGELLAN MAHAL MOBIL MOKA MOZAIK NARANCS NARANCS1 NY NYELV OTTHON OTTHONKA PARA RANDI REJTVENY SCM SPORT SZABAD SZALON TANC TIPP TUDOMANY UK UTAZAS UTLEVEL VITA WEBMESTER WINDOWS