2/17/10

Assembly පාඩම 2

කට්ටිය ආයුධ සෙට් කර ගත්තද?


මට අර syntaxhighlighter කන්ෆිගර් කරාගන්න පොඩි වෙලාවක් ගියා.තාම මම හිතන්නෙ තාම ඒක හරි නෑ වගේ
ඒක නිසා ඊයෙ දාන්න හිටිය post 1ක ඒක නිසා පරක්කු උණා :)

ඔයලා masm32 Install කලේ සම්මත සැකසුම් යටතේනම් ඒක Install වෙන්නේ C:\masm32 folder එකට ඒක නිසා ඔය ගොල්ලන්ගෙ working Directory 1ka වෙන්නේ C:\

ආධුනිකයන් සඳහා .....
ඒ හින්දා මෙහි භාවිතා වෙන include C:\masm32\include\windows.inc වැනි ඇතුලත් කිරිම් ඔබගේ Install කිරීමට අනුව වෙනස් කරගන්න

ප්‍රවීනයන් සඳහා ......
කස්ටිය දන්නවනෙ..Relative path එක දීලා .system path එකට SDK tools හා classpath එකට  include ටික දාගන්න පුලුවන්නේ.... :-p

එහෙනම් අපි යුද්දෙට සෙට් වෙමු ...:)

එහෙනම් කට්ටියගෙ ප්‍රියතම code editor එක open කරලා අලුත් file එකක් "hellow.asm" කියලා save කරගෙන පහත දැක්වෙන code කෑල්ල type කරගන්නකො

.386

.model flat, stdcall

option casemap :none

include c:\masm32\include\windows.inc
include c:\masm32\include\kernel32.inc
include c:\masm32\include\masm32.inc

includelib c:\masm32\lib\kernel32.lib
includelib c:\masm32\lib\masm32.lib

.data
 HelloWorld db "Hello World!", 0
.code

start:
 invoke StdOut, addr HelloWorld
 invoke ExitProcess, 0
end start 
 
ග්‍රීක වගේද ..? මම මේකෙ line by line විස්තර කරන්නම් ඊට කලින් මේක compile කරලා link කරගම්මුකො

ඔයාලගෙ Command Prompt එක open කරලා hellow.asm file එක save කරගත්ත තැනට Navigate කරගන්නකො (දැන් කියන්න එපා ..DOS උගන්නන්න කියලා .මම දැක්කා blog වල තියෙනවා හොඳ DOS  පාඩම් මාලා කිහිපයක්)

මගේ උදාහරනේ මම save  කරේ c:\  වල
දැන් මේ command එක type කරලා enter කරන්න

\masm32\bin\ml /c /Zd /coff hellow.asm

ඔය ගොල්ලො මම කියපු විදිහටම කළා නම් මේ output 1ක ලැබේවි ...


ඒවගේම ඔයලගෙ .asm file 1ක save කරපු තැන hellow.obj කියලා file එකකුත් හැදිලා ඇති...


මෙහෙම වෙන්නෙ නෑනෙ ....වෙන්න පුලුවන්  සාමාන්‍ය වැරදි ...

  1.  fatal error A1000: cannot open file : .........අනිවාර්යෙන් ම  c:\masm32 වලට නෙමෙයි MASM Install කරලා තියෙන්නෙ  check කරලා බලලා හරියට path 1ක දෙන්න නැතිනම් sorce cord 1ක ලියපු file එකේ file name එක වැරදියි ..
  2. error A2008: syntax error :සාමාන්‍ය syntax වැරැද්දක් code 1ka නැවත check කරන්න
  3. අනෙකුත් වැරදි සියල්ලම ඔබගේ system එක මත රදා පවති ...නැවත MASM පිහිටුවන්න...සමහර විට සාර්ථක විසදුමක් විය හැකිය ...
 ඔය ගොල්ලන්ගෙ වැරදි හදා ගත්තට පස්සෙ අපිට මේ Hello World application එක win32 executable එකක් කර ගැනීමට පුලුවන්....
 ඒ සඳහා Command Prompt එකේ පහත command එක එන්ටර් කරන්න

\masm32\bin\Link /SUBSYSTEM:CONSOLE hello.obj

නිවැරදිව link වුණානම් .asm හා .obj files ඇති තැන .exe file 1කකුත් දක්නට ලැබේවි.....


 
දැන් මේ  command එක එන්ටර් කරන්න

hellow

Kaspersky Internet Security 2010 නම් false alarm එකකුත් දෙනවා code 1ක ඔයාලම ලියපු නිසා ප්‍රශ්නයනක් නෑ
 

 
 
දැන් අපි assembly වලින් අපේ සරල Hello World application 1ක ලියලා ඉවරයි...
code 1ක line by line පැහැදිලි කරන එක ඊලග ලිපියෙන් ලියන්නම් .....
 
පුරුදු පරිදි ගල් මුල් ප්‍රශ්න ...comment එකට දාන්නකො (google buzz කට්ටියත් blog 1 කට comment දානවනම් තමා හොඳ :D)


4 comments:

පැතුම් said...

මචං එල කිරි නියමෙට වැඩ.. මම මේ ගොඩක් කාලයක් කරන්න හිත හිත හිටපු දෙයක් බ්ලොග් එක දැක්කම කරන්න ලේසි වුණා. දිගටම ලියන්න.

Lahiru නිර්මල said...

@පැතුම් :එල එහෙනම් පස්සෙන් පන්න පටන් ගන්නකෝ :)

පොඩි බබා said...

\masm32\bin\Link /SUBSYSTEM:CONSOLE hello.obj
command එක නම්
\masm32\bin\Link /SUBSYSTEM:CONSOLE hellow.obj
කලා.වැඩේ ගොඩ...
Assembly වලටත් අත් පොත් තිබ්බා...
අද තමා වැඩේට බැස්සේ. බොහොම ස්තූතියී...

Anonymous said...

සුපිරි වැඩක්.දිගටම ලියන්න.

Post a Comment