[ Shadowed @ 29.09.2003. 22:03 ] @
Assembler-om vec duze vreme hocu da se bavim ali do sada nisam probao nista konkretno. I evo, odmah na pocetku imam problem koji ne uspevam da resim.
Naime, napravio sam jedan jednostavan program:
Code:
MAIN SEGMENT
     ASSUME DS:MAIN,ES:MAIN,CS:MAIN,SS:MAIN

START:
    MOV AH,02h
    MOV DL,41h

    INT 21h
    INT 20h
MAIN ENDS
END START

Sad kad hocu ovo da kompajliram desava se sledece:
Code:
D:\masm32\BIN>ml e:\temp\test1\test.asm
Microsoft (R) Macro Assembler Version 6.14.8444
Copyright (C) Microsoft Corp 1981-1997.  All rights reserved.

 Assembling: e:\temp\test1\test.asm
Microsoft (R) Incremental Linker Version 5.12.8078
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

/z2
"test.obj"
"test.exe"
NUL
LINK : warning LNK4044: unrecognized option "z2"; ignored
test.obj : warning LNK4033: converting object format from OMF to COFF
LINK : fatal error LNK1181: cannot open input file "test.exe"

Ono, ja imam osecaj da je stvar banalna ali ne snam sta da mu radim...
[ Mikky @ 30.09.2003. 02:03 ] @
Ovo sto ti pokusavas da kompajliras i linkujes je dos program, a MASM32 koliko ja znam nema linker za te stvari vec samo za likovanje 32bitnih programa kao sto je PE exe. Tako da bi morao da nadjes stariji 16bitni masm linker.
Druga opcija je da skines sa neta a86, koji bez problema kompajlira i linkuje dos .com programcice i jako je jednostavan za pocetnike, sa njim sam i ja poceo.
Stvarno ne znam vise oko toga jer ja nikad nisam kompajlirao dos programe sa masm32.
Moja preporuka je da se ne zamajavas mnogo sa dos-om i krenes na win32
evo hello world primera za MASM32 iz Icezilionovog tutoriala


Code:

.386 
.model flat,stdcall 
option casemap:none 
include \masm32\include\windows.inc 
include \masm32\include\kernel32.inc 
includelib \masm32\lib\kernel32.lib 
include \masm32\include\user32.inc 
includelib \masm32\lib\user32.lib 

.data 
MsgBoxCaption  db "Iczelion Tutorial No.2",0 
MsgBoxText       db "Win32 Assembly is Great!",0 

.code 
start: 
invoke MessageBox, NULL, addr MsgBoxText, addr MsgBoxCaption, MB_OK 
invoke ExitProcess, NULL 
end start 


Kompajliras
ml /c /coff /Cp msgbox.asm
Linkujes
link /SUBSYSTEM:WINDOWS /LIBPATH:c:\masm32\lib msgbox.obj
[ Shadowed @ 30.09.2003. 23:48 ] @
Hvala na odgovoru.
Inace sto se Win32 programiranja tice nekako mi je trulo da pozivam API-je, pozivam API-ije, pa onda ponovo i jos pa jos... To mogu i iz VB-a da radim. Naravno u VB-u necu imati iste performanse ali zapravo asm hocu da radim iz zezanja i da se upoznam sto bolje sa procesorom a ne da pravim slozene programe za Win.
[ Mikky @ 01.10.2003. 20:22 ] @
Ok, ja nisam inace mnogo pisao programa izvan win32 ali sve je to isto samo sto ti windows ne dozvoljava direktno da upravljas nekim stvarima vec preko API-ja, mada pozivanje api-ja ti nije nista drugo do pozivanje procedura kao i svih drugih. Ono invoke je samo makro koji zamenjuje sledece instrukcije:

push parametar2
push parametar1
call xxAPI

Imas na netu besplatnu knjigu "art of assembly language" koja prvo upoznaje citaoca sa hardverom, procesorom i kako sve to radi da bi onda pocela sa asm. Inace knjiga je jako dobra, cak sam razmisljao da je odstampam negde (>1000 str)