Hollosi Information eXchange /HIX/
HIX CODER 1355
Copyright (C) HIX
2001-11-18
Új cikk beküldése (a cikk tartalma az író felelőssége)
Megrendelés Lemondás
1 re: 32 bites asm Borland C++ 3.1-ben (mind)  63 sor     (cikkei)
2 re:dialogbox tabstop (mind)  77 sor     (cikkei)

+ - re: 32 bites asm Borland C++ 3.1-ben (mind) VÁLASZ  Feladó: (cikkei)

hali!

> Szeretnem elerni 32-bites regisztereket, de a beepitett assembler nem
> ismeri az eax, ebx, stb regisztereket. Foleg mov, add, mul, div kellene
> 32 bites regiszterekkel.

A Borland-nak sosem sikerult lepest tartani a processzorok fejlodesevel
A WatcomC mar pentiumra optimalizalt, amikor a Borland Pascal / C tudta
a 286 utasitaskeszletet. :)

A lenyeg az, hogy meg lehet trukkozni a byte-okkal de sok galibat okozhat.
A 32 bites utasitasok ugyanugy neznek ki mint a 16 bites tarsai, csak egy prefi
x van elotte.
$66 -> 32bites adat prefix

 MOV EAX,EBX
igy nez ki
 DB $66; MOV AX,BX

es igy tovabb...
a konstans ertekadasnal vigyazni kell, mert a konstansbol is 16bitet fordit be 
a proci meg 32-t var

 MOV EAX,1000
=
 DB$66; MOV AX,1000
 DW 0			- az 1000, 32 bites ertek felso 16 bitje

ha viszont a konstans ertek 8 bites pl: 256-nal kisebb, akkor azt byte-nak ford
itja, tehat a masodik sor DW nem kell
arra mar nem emlexem, hogy a MOV-nal is van-e, de a CMP-nel biztos kulonbseg va
n BYTE/WORD ertek kozott

van egy masik prefix is $67
ez a 32 bites cim prefix
tehat:

 MOV AX,[ESI]
=
 DB $67; MOV AX,[SI]

ezeket kombinalni is lehet:
 MOV EAX,[ESI]
=
 DB $66,$67; MOV AX,[SI]

ha speci 32-bites cuccokat/cimzesmodokat akarsz hasznalni, azoknak nincs 16bite
s megfeleloje, 
ezeket maximum kozvetlen ertekekkel irhatod be.

A DIV-nel CWD-helyett CDQ kell, ami a CWD precixelt valtozata  DB $66; CWD


Hat soxerencset a probalgatashoz. Ha nagyon komoly dolgokat akarsz csinalni, ak
kor erdemes
elgondolkodni egy olyan forditon ami tud 32-bites kodot csinalni, mert sok sziv
as lehet belole.
Egy masik megoldas lehet az, hogy pl: TurboAssemblerrel csinalod meg az ASM res
zt es ezt
bele lehet linkelni a programba, mint EXTERNAL procedure...

udv:
-marci
+ - re:dialogbox tabstop (mind) VÁLASZ  Feladó: (cikkei)

> hS  [Hungary] kerdezte:
> >Meg lehet úgy nyitni egy alkalmazás legfobb ablakát, hogy az ott
> >elhelyezett vezérloelemek, tab-ra automatikusan váltsák a fókuszt.
> >Úgy, ahogy azt egy dialog-ban teszik.

Haho!
Ha nem akarod dialogboxkent kezelni, akkor csinald a kovetkezoket:

/*
globalis valtozokent deklarald a kovetkezo tombot:
*/
$define   NUMBER_OF_CONTROLS
az_altalad_letrehozni_kivant_kontrollok_szama

static HWND   HWND_OF_CONTROLS[NUMBER_OF_CONTROLS];
/*
ezt a tombot  fel kell majd toltened az altalad createwindow al letrehozott
kontrollok hwnd-ivel..
*/

/*
a messagefeldolgozo reszbe rakd a kovetkezot:
*/

case WM_KEYDOWN:
  if (wparam == VK_TAB)
  {
      HWND   w;
      int          i;

      w = GetFocus();
      for (i = 0; i < NUMBER_OF_CONTROLS; i ++)
      {
        if (w == GetDlgItem(main_window_hwnd_je, HWND_OF_CONTROLS[i]))
        {
            if (GetKeyState(VK_SHIFT) < 0)
              i --;
            else
              i ++;
            if (i < 0)
          i = NUMBER_OF_CONTROLS - 1;
            if (i >= NUMBER_OF_CONTROLS)
              i = 0;
            SetFocus(GetDlgItem(window, HWND_OF_CONTROLS[i]));
            return 0;
        }
      }
      SetFocus(GetDlgItem(window, HWND_OF_CONTROLS[0]));
  }
  return 0;

Ez csak egy egyszeru megoldas, ha ugyanugy akarod, hogy viselkedjen, mint a
dialogbox, akkor ketdimenzios tombot kell epiteni a kontrollok ws_tabstop
es ws_group
stilusai szerint...no de ennek mar hazilag nincs tul sok teteje, akkor mar
jobb a dialogboxot hasznalni...

Egyebkent ha nem szereted a dialogproc-okat/dialogbox-okat, akkor sima
windowproc-cal is lehet dialogboxot csinalni... :-) Ennek modja a
kovetkezo:

DefWindowProc kidobva, helyette DefDlgProc

RegisterWindowClass utan CreateWindow kidobva, helyette
DialogBox/CreateDialog

Resource fileben ket sor beszurva az ablak deklaraciojaba:
CLASS        az_a_class_name_amit_a_registerwindowclass_ban_is_megadtal
STYLE        WS_POPUP | WS_SYSMENU
/*peldaul... es mar nem is dialogbox kinezetu...*/

Ugy fog kinezni es viselkedni ahogy akarod, es a resource fileben meg
egyszeruen felepitheted a kontrolljaidat...

Sok sikert!
Udv
STeve

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