[ glorius @ 06.09.2005. 00:10 ] @
Juce sam instalirao MASM i provalio ( jedva... ) kako da pocnem sa svojim prvim programom u konzoli windows-a. Imam dosta znanja o programiranju ( C++, OpenGL, DirectX - svuda sam po malo programirao) Sada se osecam kao da sam na pocetku, dok posmatram sebe kako kucam kod koji izbacuje Hello, World ... :) Verovatno ce sve ici brze kada pohvatam termine i logiku koja se koristi u asembleru, a do tada evo jednog malog koda koji sabira dva broja ( pa trebalo bi ). Code: .386 .model flat, stdcall option casemap: none include \masm32\include\windows.inc include \masm32\include\kernel32.inc include \masm32\include\user32.inc include \masm32\include\masm32.inc includelib \masm32\lib\kernel32.lib includelib \masm32\lib\masm32.lib includelib \masm32\lib\user32.lib uint typedef word ;Unsigned integers. integer typedef sword ;Signed integers. .data broj1 uint ? broj2 uint ? rezultat uint ? opcija uint ? res byte 128 dup (?) template db "%d", 0 recenica1 db "Unesite prvi broj: ", 0 recenica2 db "Unesite drugi broj ", 0 recenica3 db "Sabiranje(1) Oduzimanje(2) Mnozenje(3) Deljenje(4)", 0 .code start: invoke StdOut, addr recenica1 invoke StdIn, addr broj1, 100 ; unosimo broj 1 invoke StdOut, addr recenica2 invoke StdIn, addr broj2, 100 ; unosimo broj 2 invoke StdOut, addr recenica3 invoke StdIn, addr opcija, 100 ; opcija .if(opcija == 1) ; sabiramo broj1 i broj2 mov ax, broj1 add ax, broj2 mov rezultat, ax .endif invoke wsprintf, addr res, addr template, rezultat ; priprema za out to screen invoke StdOut, addr res invoke StdIn, addr broj1, 1 ; cekamo pritisak dugmeta za izlazak ( budjavo, ali ne znam drugacije - interupt or something) invoke ExitProcess,0 end start Ovi silni include-ovi su tu jer isprobavam sve i svasta pa da se ne smaram o tome koji cu da umetnem u kod. Sve radi kako treba... Osim izbacivanja pravog rezultata. Uvek mi izadje na ekranu 10. Mislim da je greska kod wsprintf naredbe, mada sam sve OK uradio ( addr - zato sto su pointeri u pitanju i tako dalje ) Gde je greska i ( ako moze ) sta treba poboljsati na ovom kodu ( na nivou beginner-a ) tj. ima li boljeg nacina da se sve ovo izbaci na ekran u silu assemblera, a ne pomocu WinAPI-ja... |