2/19/10

Assembly පාඩම 3

වල් පල් .....
කට්ටියම දකින්න ඇතිනෙ මම template එක මාරු කලා ....තව emoticons දැම්මා ....කණියා තමා help 1ක දුන්නේ..ok දැන් පාඩම පටන් ගමු ....
------------------------------------------------------
Assembly පාඩම

කට්ටියම දැන් පළවෙනි assembly program 1ක ලියලා ඉවරයිනේ ..
දැන් තියෙන්නෙ මේක පැටලුම් අරින එක ....
.386
 මේ පේළියෙන් තමා අපි assembler එකට භාවිතා කරන්න ඕනෑ instruction set  දැනුම් දෙන්නෙ. 386 වලට වඩා පරණ processors දැන් හොයන්න නෑ ...තවත් .486 හා .586 කියලා instruction set   තියෙනවා,නමුත් .386 දැනට තියෙන සියලුම processors වලට ගැළපෙනවා .
.model flat, stdcall
.MODEL වලින් අපි assembler එකට කියන්නෙ memory භාවිතය ගැන. windows programing සඳහා යොදා ගන්නා මොඩලය තමා "flat" stdcall කියන්නේ අපි Windows functions වලට පරාමිතීන් (parameters) ‍යැවීමෙදී යොදා ගන්නා සම්මතයක් (push right-to-left)
option casemap :none
මෙමගින් අපි assemblerය  case sensitive ප්‍රකාරයට මාරුකරනවා එවිට lahiru හා Lahiru තනි වචනයක් නොව වචන දෙකක් ලෙස assembler සළකනවා.බොහෝ විට මෙය ජාවා ලිප්ස් වැනි පරිගණක භාෂාවන්හි දක්නට ලැබෙන්නක්.
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

windows programing වලදි අවශ්‍ය කරන විධාන හා script පෙරනිමියෙන් ඇතුල් කිරීම මෙහිදී සිදුවෙනවා.මේ පිළිබඳ ඉදිරියට  විස්තරාත්මකව කථාකරමු

.data
ඔය ගොල්ලන්ගෙ initialized කරපු data (variable වගේ අයිටම් එකක්) තියගන්නෙ මෙතන initialized නොකරපු හා constants data වලට
.data?
.const
කියලා වර්ග දෙකක් තියෙනවා. මේ program එකේ නම් ඒවා භාවිතා වෙන් නෑ.භාවිතා වෙන අවස්ථාවක මම ඒ ගැන කියන්නම්
HelloWorld db "Hello World!", 0 
db කියන්නෙ 'define byte' කියන එක මේ db data type එකට ANSI String එකක් දාන්න පුලුවන් අගින් තියෙන '0' කියවෙන්නෙ 'NUL' හැමතිස්සෙම ANSI String එකක් ඉවර වෙන්න ඕනෙ 'NULL' character එකකින්
.code
ඔය ගොල්ලන්ගෙ code එකේ ආරම්භක ස්ථානය

start:
start කියන නම්පත

[නම] 
// ලිවිය යුතු code එක
end [නම]
code ලියනවනම් නම්පත ඇතුලෙ තමා ලියන්න ඕනෙ
invoke StdOut, addr HelloWorld
මෙතනදි සිදුවන්නෙ StdOut කියන function තුලට HelloWorld කියන db එකේ memory address එක යැවීමයි
invoke ExitProcess, 0
ExitProcess කියන විධානය මගින් නිවැරදිව program එක memory එකෙන් ඉවත් කිරීම සිදුකරනවා

3 comments:

බිඟුවා...! said...

ela ela.

Lahiru නිර්මල said...

@බිඟුවා thank u වේවා :)

අනුජ said...

මරැ මරැ ඔන්න මම 1,2යි කරා.
හෙට උදේ ඉතිරැ ටික
දිගටම ලියන්න අනිවා

Post a Comment