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

Pocetnicka pitanja u vezi programiranja u konzoli win32

[es] :: Asembler :: Pocetnicka pitanja u vezi programiranja u konzoli win32

[ Pregleda: 2485 | Odgovora: 0 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

glorius
Damir Nikolic
C++ developer
SR

Član broj: 4366
Poruke: 428
*.vdial.verat.net.

ICQ: 208550327


+14 Profil

icon Pocetnicka pitanja u vezi programiranja u konzoli win3206.09.2005. u 00:10 - pre 226 meseci
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...


EOF
 
Odgovor na temu

[es] :: Asembler :: Pocetnicka pitanja u vezi programiranja u konzoli win32

[ Pregleda: 2485 | Odgovora: 0 ] > FB > Twit

Postavi temu Odgovori

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