Kod programu w HEX:
B409BA0C01CD21B8004CCD216B61726F6C617124
6B jest 12 (0Ch) bajtem tego kodu programu. Myslalem ze offset tez powinien wynosic, ale program nie zaczyna sie na poczatku segementu, tylko od 256 komorki. czyli trzeba dodac: 100h + 0Ch = 10Ch. ztym problemem se poradzielem.
Druga sprawa
robie taki zwykly programik:
...
mov AX, 1111
mov BX, 1111
...
Ogladam to w HexEdytorze i wiedze B81111( mov AX, 1111) i BB1111 (mov BX, 1111).
po kilku probach, doswiadczeniach wyciagnelem wnioski:
- Jezeli kopiujemy cos do rejestru AX to kompilator zamieni to na "B8xxxx"
gdzie xxxxx to liczba w hex. czyli jezeli bedzie to 44h to kompilator zamienia na B844. jewzeli bedzie to 3344 to kompilator zamieni na "B84433".
ale gdy do rejestru kopiuje zawartosc innego rejstru jest problem.
mov AX, BX to 8BC3. nie mam pojecia jak to jest zrobione. Sa 2 mozliwosci:
- albo dla kazdej mozliwosci jest inna wartosc hex (mozliwosc, czyli kompinacja rejstrow, np mov BX, AX; mov CX, DX)
- wszystko mozna jakos wyliczyc.
Mam nadzieje, ze teraz wiecie o co mi chodzi :)