Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

HelloWorld u Windows-ovoj konzoli

[es] :: Asembler :: HelloWorld u Windows-ovoj konzoli

[ Pregleda: 5572 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

turncoat
Bg, Kg, Va

Član broj: 4063
Poruke: 241
*.ptt.yu

Sajt: marko.uskokovic.name


Profil

icon HelloWorld u Windows-ovoj konzoli22.08.2002. u 01:12 - pre 262 meseci
Pokusavam da napisem HelloWorld program koji ce da se izvrsava pod Windows-om i koji ce da otvori konzolu i u njoj da napise poruku. Znaci, bez pravljenja prozora.
Treba mi i komandna linija za LINK.EXE posto treba da mu saopstim da otvori konzolu. Sta da koristim umesto int 21? Svi primeri koje sam nalazio ili prave prozor i u njemu ispisuju poruku, ili su pravljeni za dos, tj. koriste INT 21. Windows Me se srusi svaki put kada pokrenem program koji poziva INT 21.

"Ako hoćeš da saznaš, pristani na sve"
- Džoni Štulić
 
Odgovor na temu

lucky luciano
software developer
boston

Član broj: 2177
Poruke: 2
*.ne.client2.attbi.com



Profil

icon Re: HelloWorld u Windows-ovoj konzoli24.08.2002. u 23:15 - pre 262 meseci
Neznam koji assembler koristis. Zovi GetStdHandle koji ce da ti vrati handle tj pointer za stdio tj. DOS screen. Korist WriteFile za output na screen ili ReadFile da ucitas.
 
Odgovor na temu

turncoat
Bg, Kg, Va

Član broj: 4063
Poruke: 241
*.verat.net

Sajt: marko.uskokovic.name


Profil

icon Re: HelloWorld u Windows-ovoj konzoli28.08.2002. u 01:29 - pre 262 meseci
U pitanju je masm asembler. Ja koristim onaj koji ide uz masm32 (sa bibliotekama za 32-bit windows programe).

Evo ga i kod koji koristi WriteFile:
--------------------- zdravo.asm -----------
.386
.model flat, stdcall

include \masm32\include\kernel32.inc
includelib \masm32\lib\kernel32.lib

.data
poruka db 'ZDRAVO SVETE!' ,0dh,0ah ;0dh-13 (cr), 0ah-10(lf) novi red

.code
main:
push -11 ;stdout
call GetStdHandle ;handle za izlaz na konzolu
push 0 ;lpOverlapped
push esp ;broj bajtova koji su ispisani
push 15 ;velicina string
push offset poruka ;adresa stringa
push eax ;handle
call WriteFile ;stampa string
push 0 ;code za izlaz
call ExitProcess ;izlaz
end main
-------------------- zdravo.asm ---------------------
Ovo asemblujem i linkujem komandama:
ml /c /coff zdravo.asm
link /SUBSYSTEM:CONSOLE zdravo.obj
Dobijam zdravo.exe koji se izvrsava u konzoli, tako da je sve u redu.
Marko
"Ako hoćeš da saznaš, pristani na sve"
- Džoni Štulić
 
Odgovor na temu

Mikky

Član broj: 18
Poruke: 1563
*.ptt.yu

ICQ: 44582291


+58 Profil

icon Re: HelloWorld u Windows-ovoj konzoli28.08.2002. u 23:49 - pre 262 meseci
hm ti izgleda volis tezi nacn
sto ne koristis invoke makro koji veoma ubrzava pisanje a i citanje koda
pritom i proverava parametre koje dajes funkciji da li su istog tipa kao sto je definisano u prototipu funkcije
umesto sto rucnu nabacujes parametre na stack
takodje ovo push -11.... koristi vec definisane konstante umesto literal vrednosti
-I know UNIX, PASCAL, C, FORTRAN,
COBOL, and nineteen other high-tech
words.
 
Odgovor na temu

turncoat
Bg, Kg, Va

Član broj: 4063
Poruke: 241
*.ptt.yu

Sajt: marko.uskokovic.name


Profil

icon Re: HelloWorld u Windows-ovoj konzoli29.08.2002. u 19:27 - pre 262 meseci
Pa, slusaj, asembler i ucim da bih znao nacin na koji kompjuter (os) obavlja stvari, a ne da bih stvari radio na laksi nacin. Mislim, za to cu da koristim neki hll (ili mozda high level assembler - hla). Nekako mi je bezveze da koristim npr. mov eax,edx, a ovamo imam .if eax==12 ili tako neke konstrukcije. Hocu da znam sta procesor moze da izvrsava.

"Ako hoćeš da saznaš, pristani na sve"
- Džoni Štulić
 
Odgovor na temu

Mikky

Član broj: 18
Poruke: 1563
*.verat.net

ICQ: 44582291


+58 Profil

icon Re: HelloWorld u Windows-ovoj konzoli30.08.2002. u 00:30 - pre 262 meseci
ok ako si jos u fazi ucenja ali kasnije ces sigurno preci na koriscenje tih makroa koji su ti tu da bi ti olaksali posao a ne otezali
a drugo oni mogu da ti i malo optimizuju kod
recimo to .if sto si spomenuo
koliko se secam .if eax==0 ce se prevesti u or eax,eax
dok bi 90% ljudi koristilo cmp eax,0
ove instrukcije rade istu stvar samo sto je ona sa OR manja za 2 ili 3 bajta (ne znam tacno) itd
-I know UNIX, PASCAL, C, FORTRAN,
COBOL, and nineteen other high-tech
words.
 
Odgovor na temu

ŠargarepaMen
Đorđe Golubović
Novi Sad

Član broj: 55142
Poruke: 85
*.dialup.neobee.net.



Profil

icon Re: HelloWorld u Windows-ovoj konzoli11.04.2005. u 21:45 - pre 230 meseci
Ne zaboravi da "cmp" ne menja odredišni operand, a "or" ga menja.
Jazavac...


 
Odgovor na temu

Sundance

Član broj: 7510
Poruke: 2559
*.sava.sczg.hr.



Profil

icon Re: HelloWorld u Windows-ovoj konzoli12.04.2005. u 07:02 - pre 230 meseci
Mislim da je u zadnje 3 godine to već sam shvatio :>
 
Odgovor na temu

ŠargarepaMen
Đorđe Golubović
Novi Sad

Član broj: 55142
Poruke: 85
*.dialup.neobee.net.



Profil

icon Re: HelloWorld u Windows-ovoj konzoli12.04.2005. u 10:06 - pre 230 meseci
Ma to sam ionako rekao sam da bih se pravio važan ;) A nisam ni video datum poruke :(
Jazavac...


 
Odgovor na temu

Vojislav Milunovic

Član broj: 25
Poruke: 2117
*.beotel.net.



+1 Profil

icon Re: HelloWorld u Windows-ovoj konzoli12.04.2005. u 16:23 - pre 230 meseci
Pa or eax, 0 ne menja sadrzaj registra :)
jmp far lesson_bit_operations :)))
 
Odgovor na temu

Sundance

Član broj: 7510
Poruke: 2559
*.sava.sczg.hr.



Profil

icon Re: HelloWorld u Windows-ovoj konzoli12.04.2005. u 18:03 - pre 230 meseci
Ma jebeš or, koristi se test eax, eax koji je mrvu brži ili xchg eax, ecx; jecxz __nula koji je i još bajt manji i još brži :>
 
Odgovor na temu

Vojislav Milunovic

Član broj: 25
Poruke: 2117
*.beotel.net.



+1 Profil

icon Re: HelloWorld u Windows-ovoj konzoli12.04.2005. u 19:07 - pre 230 meseci
Ma da bre :)
Kod izgleda lepse kad imas test nego or :)
 
Odgovor na temu

[es] :: Asembler :: HelloWorld u Windows-ovoj konzoli

[ Pregleda: 5572 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.