Hi inet,"HIX CODER" >!
iC> Ez minden opkodra igaz, ha ele egy 0x66
iC> prefixet irsz, 32bites parametert var.
huhuhu te ember te aszt fogod gondooni, hogy
pikkelek rad, de nem igy van.. de essincs igy,
mer' ha 8 bites dogok ele irsz 66h-t, akkor
azok maradnak 8 bitesek... pl a mov al,cl
ele hiyaba teszel 66h-t, az nem fogja csak
az al erteket valtosztatni...
Mc
|
Hi inet,"HIX CODER" >!
>iC> Procedure Valami32(var Dest):Assembler;
>iC> asm
>iC> db $66
>iC> les di,Dest {mov edi,Dest}
>iC> mov al,10
>iC> db $67
>iC> mov ES:[di],al {mov es:[edi],al)
>iC> end;
>iC> Erre gondoltal?
>nem, mert itt eleve ki fog akadni a kicsi proggyd,
[..]
iC> Tenyleg kiakad, de men azert mert tok rossz, hanem mert elgepeltem.
iC> Az elso utasitas nem les, hanem lea.
iC> Az utolsora, meg valoban nem figyeltem, Bocs.
iC> Igy mar jo:
iC> asm
iC> db $66
iC> lea di,Dest
iC> mov al,10
iC> db $66,$26,$88,$07 {mov es:[edi],al}
iC> end;
no... akko' az a db 66,26,88,07 az biza egy mov es:[bx],eax...;)))
na yo, eszt is csak Lgepelted, az ott 67...;)))))))))))))))))))
de a lea val nem ertek 1et.. latom nem eresztel ra a lea
lenyegere... sza'l a lea di,[dest] nem csinal mast, mint
amit a proci kiszamol memoria offsetet, aszt benyomattya
abba a regiszterbe, amibe kered.... te6 a lea di,[dest]
egyenerteku /csak lassabb es hosszabb!/ egy mov di,offset dest
el, amire te megin'csak nem gondol6tal, mer' ha +nezed az
eredeti pascal codot, akko' ra foxx yonni, hogy ennek nincs
ertelme... csak atirod a dest pointer erteket...;)))))
amugy visszaterve a leara, kevesen tuggyak, eze' irok rola..
sza'l a lea reg16,[mem32] esetben lecsonkittya 16 bitre az
eredmenyt... hasznalni pl ugy lehet, hogy lea ax,[ecx*8+edx+12h]
es akko' eszt csinayya: ax:=ecx*8+edx+12h...;)) vagy pl ha
lea reg32,[mem16] a dolog, akko' 16 bitesen szamoyya ki,
de aszan kitooti 0akkal a 16..31 biteket... te6 pl a
lea edx,[bx+si+4h] az edx:=(bx+si+16) and $ffff ot fogja
elvegezni... es ha reg16,[mem16] vagy reg32,[mem32] van,
akko' aszt gondolom ti is kitalayyatok... sza'l osszegzes
keppen Lmond6tyuk /sok sok idezoyel koszt!/ hogy a lea egy
amoyan aritmetikai muvelet.... na csao....
Mc
|
Sziasztok,
Eloszor is szeretnem megkoszonni az Access violation-ra
irt sok hasznos es tanulsagos levelet. Most futasi idoben
jelentkezett a gond, ugyanis a karakter bekerese utan
egyszeruen bemondja az unalmast es elszall.
NT 4.0 servicepack 4 es
BCC 5.0 viaskodasa kozben
#include <stdio.h>
/* Egy karakter beolvasasa */
void main()
{
char f;
printf("Kerek egy betut: ");
scanf("%c",&f);
printf("A betu ASCII kodja: %d \n",f--);
printf("Az elozo karakter: %c \n ",f);
f+=2;
printf(" A kovetkezo karak. %c ",f);
}
Koszonettel,
P.S. ;lehetoseg szerint maganba is
|