[linux] Assembler & C
Jozef Cervenansky
jcervenansky na pobox.sk
Pondělí Srpen 23 14:08:36 CEST 1999
> >
> > Ahojte.
> >
> > Potreboval by som pomoct s nasledujucim problemom.
> >
> > Mam definovany retazec :
> >
> > char* retazec = "Toto je retazec.";
> >
> > a ja by som potreboval teraz v C-ecku zistit 32 bitovu adresu retazca, ktoru prenesiem do
> > registra, pr. EAX a potom prepisem prve styri znaky na , pr. BBBB, cize
> > retazec pred operaciou je : "Toto je retazec". po uprave : "BBBB je retazec."
> >
>
> hmm a preco to nespravis cele v C-cku ?
>
> for( i=0; i<4; i++) *(retazec + i) = 'B';
>
> alebo ak chces pouzit long tak pretypovanim
>
> unsigned long eax = 0x42424242;
>
> *((unsigned long *)(retazec)) = eax;
>
>
> mico
>
Znova jozo.
Nepotrebujem to urobit v C-ecku, to by som nepisal.
Ukazem vam novu verziu.
char* text = new char [30]; //dyn. znak. pole
strcpy(text,"Pokusny text"); //nejaky retazec
//assembler
mov esi, dword ptr text //adresa pola TEXT
mov bl,'A' //do pola hadze abecedu
mov cx,26 //26 pismen
slucka:
//tuto mi to vypisuje chybu, ze nemoze zapisat
//do pamati, neviem preco, nechce mi to dovolit
mov byte ptr [esi], bl //pismeno do pola
inc bl //dalsie pismeno
inc esi //dalsia pozicia pola
loop slucka
//koniec assemblera
Potrebujem urobit graficke rutiny v assembleri a toto
som skusal len ci mi bude fungovat buffer pre data
z VRAM -> RAM a nejde mi to!
Mozete helpnut !!
____________________________________
P. S. V. P. U.
http://www.pobox.sk/
Další informace o konferenci linux