3/19/10

Assembly පාඩම 8



Macros
MASM කියන්නෙ Macros වලට බොහෝ සෙයින උපකාර කරන භාෂාවක් අපි දැනටමත් invoke මගින් function call සරල කිරීම ගැන කතා කලානෙ.ඒ වගේම MASM වල high level language ඇති if..else හා while වැනි ගලායාම පාලනයකරන විධාන Macros මගින් පහසුවෙන් ඉටු කරගන්න පුලුවන්

if හා else

.if <කොන්දේසිය>
     //කොන්දේසිය සත්‍යනම් සිදුවිය යුතු ක්‍රියාව
.else
     //එසේ නැතිනම්  සිදුවිය යුතු ක්‍රියාව
.endif 
උදා :-
.if TRUE
     invoke StdOut, addr 'I am True !'
.else
     invoke StdOut, addr 'NO ,I am NOT '
.endif 

while

මෙය high level language හි දක්නට ඇති while ලූප් එකට සමාන වේ මෙය තුල .break යන විධානයද භාවිතා කල හැක

.while <කොන්දේසිය>
    //කොන්දේසිය සත්‍යනම් සිදුවිය යුතු ක්‍රියාව
.endw 

උදා :-
.while _msg == 'ok'
    invoke StdOut, addr 'I am in the loop !\n '
.endw 

Functions
මෙහිදී high level language ලබා හෙන Functions define කිරිම සිදු කල හැක මෙමගින් ඔබගේ කේත පහසුවෙන් හැසිරීම පහසු වේ
<name> proc <var1>:<var1 type>, <var2>:<var2 type>, ...
<function code ඔබගේ කේත කොටස්>
ret
<name> endp

මෙහිදී
invoke < name >, param1, param2, ...
මගින් මෙම Functions එක call කල හැකි අතර return වූ අගය eax රෙජිස්ටරයේ තැම්පත් වේ එය ලබා ගැනීම සදහා
mov RetVal, eax
භාවිතා කල හැකිය

Variables

Variables යනු memory එකේ දත්ත ගබඩා කරන්නට යොදා ගන්නා වෙන්කරන ලද ස්ථාන වේ,අවශ්‍ය තරමට registers ඔබට නැතිනම් මෙම Variables භාවිතය ඉතා පහසු වේ
මෙහිදී global variables හා local variables යනුවෙන් කොටස් දෙකක් ඇත

global variables

.data හෝ .data? හෝ .const කොටසේ පිහිටවනු ලැබේ

.data :හි සියලුම ආරම්භක අගයක් ඇති Variables පිහිටුවනු ලැබේ
.data? :හි සියලුම ආරම්භක අගයක් නැති Variables පිහිටුවනු ලැබේ
.const :හි සියලුම පසුව වෙනස් කීරිමට ඉඩ නොදෙන Variables පිහිටුවනු ලැබේ

<name> <type> <value, හෝ ?  අගයක්  ආරම්භක  නොමැතිනම්>

Local variables
Local variables එකක් ඕනෑම function එකක් තුල දත්ත තාවකාලිකව තබා ගැනීමට භාවිතා කල හැකි අතර function එකෙන් පිට භාවිතා කිරීම සිදුකල නොහැකිය


local <name>:<type> 

PS :අදත් තියරි විතරයි ඔන්න හැබැයි ලබන සතියෙ ඉදලා Window GUI cording පටන් ගන්නවා :D

4 comments:

Kanishka | කණියා said...

කවද හරි මේ ටික එකතු කරල පොතක් ගහපන්.. වටිනවා..

Confiuzd ප්‍රෝග්‍රැමර් said...

වෙලාවක් තමා නැත්තෙ :D

Rajika Kumarasiri said...

I came across through your blog accidentally, I appreciate your effort. I once wrote a boot loader using NASAM assembler, to complete your effort I guess you need to include a one semester long small project. May be writing a boot loader, may be to write a parser etc..

Rajika

sandundhammika said...

@Rajika Kumarasiri
+ point for that.

Post a Comment