1 / 199

ASSEMBELY

ASSEMBELY. استاد : خانم مهندس برادران هزاوه دانشجو : محسن كشاورزحداد رشته : فناوري اطلاعات دانشگاه : آزاد رودهن. روش نوشتن برنامه :. دستور Debug در Dos . استفاده از Turbo Asembler ، Macro Asembler. Editor. یک ویرایشگر متن. تایپ برنامه ( .asm ). .com , .exe. object. Link.

Download Presentation

ASSEMBELY

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ASSEMBELY استاد : خانم مهندس برادران هزاوه دانشجو : محسن كشاورزحداد رشته : فناوري اطلاعات دانشگاه : آزاد رودهن

  2. روش نوشتن برنامه : • دستور Debug در Dos. • استفاده از Turbo Asembler، Macro Asembler. Editor یک ویرایشگر متن تایپ برنامه ( .asm) .com , .exe object Link Compile ذخیره با نامی با پسوند .asm مثل Test.asm

  3. Compile برنامه: • Tlink، Tasm • Exe2bin، Link5، Masm5. • c:\ asm> tasm test ; / t / zi • 2. c:\asm> tlink test ; /v /t خروجی Test.obj Test.exe Test.com خروجی استفاده از حالت اول

  4. نکته: پسوند اغلب برنامه ها در windows، .com است. چون فایلها با پسوند .com ، فقط 64 KB از حافظه را اشغال می کنند و باعث می شوند بقیه حافظه در اختیار سیستم عامل قرار گیرد تا برنامه های دیگر، بتوانند اجرا شوند. ; : درهنگام استفاده از tasm، فقط فایل Compile می شود و حق استفاده از هیچ سوئیچی را نداریم و ........ /? : استفاده ازین سوئیچ، باعث می شود فایلی با پسوند .bat ساخته شود که شامل: برنامه بصورت قبل ازobj بطوری که درصورت وجود خطا، خط ها در زیر هر دستور مشخص می باشد. با فهمیدن خطا در فایل اصلی با پسوند .asm خطا زا زفع کرده و دوباره tasm را اجرا می نمائیم.

  5. /zi : این سوئیچ باعث می شود یک سری Symbol هایی به فایل .obj , .exe اضافه می شود که هنگام استفاده از TD بتوانیم Source واقعی برنامه خود را مشاهده می نماییم. مکمل این سوئیچ، سوئیچ /v در Tlink می باشد. /t : اگر از سوئیچ استفاده کنیم در صورتی که فایل با ساختار com نوشته شده باشد، آن را مستقیما به فایل اجرایی با توسعه .com تبدیل می کند. /v : این سوئیچ در فایلهای اجرایی .exe مورد استفاده قرار می گیرد، و نقش آن به عنوان مکمل سوئیچ /zi در tasm می باشد.

  6. c:\ asm> masm5 test ; / t • 2. c:\asm> link5 test ; خروجی Test.obj خروجی Test.exe توجه: فایل Test با پسوندهای .exe , .bat , .com وجود دارد. الویت اجرای فایل Test با پسوندهای ذکر شده به صورت زیر خواهد بود: 1. test.com 2. test.exe 3. test.bat استفاده از حالت دوم 3. c:\asm> exe2bin test.exe test.com در صورتی که بخواهیم فایل با ساختار com باشد.

  7. Menu box CS: code segment ثباتها ثباتهای Flag SS: Stack segment DS: data segment توجه: بایستی تمام نرم افزارها، در یک مسیر باشند و ما در همان مسیر کار کنیم. C:\asm> TD [filename.exe or filename.com] نکته: TD، فقط برای فایلهای اجرایی (.com , .exe) است. یعنی برنامه هیچ خطایی نداشته باشد و فایل نیز اجرایی باشد. Ax bx . . Ip sp Z s p t I c

  8. برنامه TD، محیطی شبیه زبان C دارد. • کلید F9 عمل Run انجام می شود. • کلید F4، عمل اجرای برنامه، از ابتدای برنامه تا محل کنونی مکان نما را انجام میدهد. • کلید F7، می توان برنامه را دستور به دستور اجرا کرد. (حتی دستورات درون روالها را نیز اجرا می کند). • کلید F8، عمل اجرای دستور به دستور برنامه را انجام می دهد. (با این تفاوت که روالها در یک ؟ اجرا می کند).

  9. دستور العمل از یک سری کد تشکیل شده است. خواهیم دید که زبان ماشین، متشکل از دستورالعمل هایی است که هر کدام با یک کد مشخص می شوند. که این کدها، توسط ارقام 0,1، به واحد پردازشگر مرکزی ارسال می شوند. در صورتی که بخواهیم برنامه ای را به زبان ماشین بنویسم، بایستی تمام دستورالعمل ها و اطلاعات را به صورت کد 0,1 به واحد پردازشگر مرکزی ارسال کنیم. اما برنامه نویسی به این طریق مشکل است، بنابراین زبانی به نام زبان اسمبلی ابداع شد. که هر یک از دستورالعمل های آن، معادل یک دستورعمل زبان ماشین می باشد. بنابراین یک زبان سطح پایین می باشد. اما با استفاده از زبان اسمبلی می توان از تمامی امکانات سیستم استفاده کرد. در CPU قسمتهایی به نام ثبات Registerوجود دارد.

  10. 8 bit 8 bit گروه بندی ثباتها: 1- ثباتهای عمومی: ازاین ثباتها بیشترازثباتهای دیگردراسمبلی استفاده می شود و تعداد این ثباتها، چهارعدد می باشد که با نامهای DX , CX , BX , AX قابل دستیابی می باشند. هریک ازاین ثباتها، خود به دو دسته تقسیم می شوند: بعضی از دستورالعملهای زبان ماشین، بطورخاص، نیاز به یکی ازاین ثباتها دارد. اما در مورد بعضی از دستورالعملها، استفاده از هر یک از این ثباتها، تفاوتی نمی کند. Ah Al AX AH (high) AL (Low)

  11. AX: برای انجام محاسبات استفاده می شود. (ضرب و تقسیم) BX: به عنوان ثبات پایه جهت آدرس دهی استفاده میشود. CX: به عنوان ثبات شماره استفاده میشود. DX: بیشتر برای عملیات رشته ای استفاده میشود. ناحیه Segment هر آدرس از حافظه اصلی که قابل قسمت بر عدد 16 باشد، یک ناحیه تلقی می شود. برای آدرس دهی به حافظه اصلی، بدین ترتیب عمل می کنیم: ابتدا باید مشخص شود که این آدرس، در کدام ناحیه قرار دارد سپس مقدار تفاوت آن قسمت را با ابتدای ناحیه محاسبه کرده و آن را به عنوان آدرس Offset در نظر می گیریم. سپس هر آدرس از حافظه را می توان با یک آدرس Segment و Offset مشخص نمود.

  12. نکات: • هر یک از آدرسهایSegment وOffset حدود یک کلمه اند. • آدرس دهی برای یک بایت از حافظه منجصر به فرد نیست و بستگی به آدرس Segment دارد. • در هر Segment توان از 64 KB حافظه، استفاده کرد. • در زبان اسمبلی هر یک از عملیاتی که می خواهیم انجام دهیم باید در ثباتها انجام شود. به عنوان مثال، اگر بخواهیم دو عدد را با هم جمع نماییم، عدد اول را به یک ثبات منتقل می کنیم، سپس عدد دوم را اضافه می کنیم.

  13. ثباتهای ناحیه • CS Code Segment • دستورات برنامه در این قطعه قرار دارند. • نکته: هر برنامه، لزوما باید یک CS داشته باشند، اما قسمتهای دیگر ضرورتی ندارند. • 2.SS Stack Segment • آدرس های محلهای بازگشت در موقع فراخوانی زیر برنامه ها، در این ناحیه ذخیره می شوند. • 3. DS Data Segment • اگر برنامه نیاز به تعریف متغییر داشته باشد،این ناحیه را داریم.

  14. Shiftl(ds)= 7FA20 )A + 438E 83DAE(H) 5. ES Extra Segment برای ذخیره اطلاعات و دسترسی به حافظه فوقانی مثل Video Ram از این ناحیه استفاده می شود. مثال: اگر ds=7FA2H و offset=438EH باشد، مطلوب است َA) محاسبه آدرس فیزیکی B) محاسبه آدرس منطقی C) تعیین پایین ترین و بالاترین Rang آدرس دهی 7FA2:438E(H) ) B

  15. ثباتهای شاخص در بعضی از دستورالعملهای زبان اسمبلی برای انتقال رشته ها و کار با حافظه از ثباتهای شاخص (di , si) استفاده می کنیم و بسیار حائز اهمیت اند. ثبات IP (Instruction Points) این ثبات آدرس دستورالعمل جاری زبان ماشین که در حال اجرا می باشد را در خود ذخیره می کند. با تغییر دادن این ثبات می توانیم کاری کنیم که برنامه از هر محل دیگری قابل اجرا باشد.

  16. ثبات پرچم هر یک از بیتهای این ثبات، در مواقع خاصی مقدار می گیرند. بعنوان مثال، این ثبات دارای بیتی به نام بیت 0 می باشد که در صورت 0 شدن نتیجه محاسبات، مقدار آن بیت، چک می شود. ضمنا دارای بیتی به نام OverFlow (سرریز) می باشد که در صورت سرریز شدن محاسبات، مقدار این بیت 1 می شود. محتویات این بیتها، توسط زبان ماشین قابل تغییر هستند و توسط اکثر دستورات زبان اسمبلی، محتویات این بیتها تغییر می کند.

  17. شکل کلی این ثبات به صورت زیر است: R = Rexrved U = Undefined OF = Overflow ZF = Zero Flag DF = Direction Flag SF = Sign Flag IF = Interrupt Flag AF = Auxiliary Carry Flag TF = Trap Flag PF = Parity Flag CF = Carry Flag

  18. Carry Flag: (بیت انتقال) معمولا، از محاسبات تاثیر می پذیرد. برای اعمال جمع و تفریق ازاین بیت، برای عدد انتقال (رقم نقلی) استفاده می گردد. در اعمالی مانند Shift دادن بیتها، آخرین بیت Shift داده شده، در این بیت قرار می گیرد. Parity Flag: از این بیت، معمولا برای اشکال زدایی در انتقال اطلاعات استفاده می شود. به عبارت دیگر، برای کنترل صحت اطلاعات به کار میرود. Auxiliary Carry Flag: از این بیت، به عنوان بیت جانشین بیت Carry استفاده می شود. Zero Flag: در صورتی که نتیجه عمل محاسباتی 0 شده باشد، مقدار این بیت، 1 می شود. در غیر این صورت 0 خواهد بود.

  19. Sign Flag: ؟ Trap Flag: برای اجرای دستور به دستور برنامه، از این بیت استفاده می وشد. اگر این بیت، 1 باشد، برنامه به صورت دستور به دستور اجرا می گردد. Interrupt Flag: با استفاده از این بیت، می توانیم کاری کنیم که وقفه ها، فعال یا غیر فعال گردند. IF=0 وقفه ها غیر فعال IF=1 وقفه ها فعال Direct Flag: از این بیت، معمولا برای اعمال رشته ای استفاده می شود. جهت مقایسه یا انتقال رشته ها را نیز مشخص می کند. DF=1 Right to Left DF=0 Left to Right

  20. Overflow: در صورتی که عمل محاسباتی دارای سرریز باشد، مقدار این بیت، 1 در غیر این صورت 0 خواهد بود. ثبات SP (Stack Pointer) این ثبات، آدرس Top پشته را بر می گرداند و در خود، ذخیره می کند. ثبات BP (Base Pointer) از این ثبات، بعنوان یک ثبات پایه، (کار با Stack) استفاده می شود.

  21. وقفه Interrupt وقفه ها، برنامه های آماده شده ای هستند که با انتقال دادن مقادیری (عمل انتقال، توسط ثبات انجام می شود) با آنها، می توانیم کارهای بخوصوصی را انجام دهیم. ضمنا مقادیر بازگشتی توسط وقفه ها نیز توسط ثباتها، باز می گردد. یکی از راههای ارتباط بین برنامه نویس و وقفه ها، ثباتها می باشند. وقفه ها در ابتدای راه اندازی کامپیوتر، در جافظه اصلی مقیم می شوند و با ایجاد یک Signal (علامت) خاص، به اجرا در می آیند هم چنین برنامه نویس می تواند از وقفه ها، با اجرای دستوراتی خاص استفاده کند. مثلا با فضردن کلید Print Screen وقفه ایجاد می گردد که محتویات صفحه نمایش به چاپگر منتقل می شود. و یا با فشردن کلیدهای Ctrl+Alt+Del کامپیوتر Reset می شود.

  22. نرم افزاری سخت افزاری داخلی خارجی سیستم کاربر Dos Bios به طور کلی وقفه ها به دو گروه تقسیم نمود

  23. وقفه های نرم افزاری: وقفه هایی اند که در موقع فراخوانی یک برنامه زبان ماشین اجرا می گردند. وقفه های سخت افزاری: وقفه هایی اند که در موقع فراخوانی آنها، یک عمل سخت افزاری انجام می شود. (مانند وقفه Timer) دستور Int: این دستور، برای اجرا کردن یک وقفه استفاده می شود. شکل کلی این دستور به صورت زیر است. Int شماره وقفه

  24. سرویس ها فعال کردن mouse 00 00 01 01 نشان دادن mouse 33H وقفه مثال 02 02 03 03 … … نکته بسیار مهم: قبل از اینکه خواسته باشیم از دستور Int استفاده کنیم بایستی یک سری از مقادیر اولیه را به بعضی از ثباتها بدهیم، مخصوصا ثبات ah که شماره سرویس وقفه در آن قرار می گیرد. • Ah= شماره سرویس (در صورت نیاز دادن مقادیر اولیه به بعضی از ثباتها) • استفاده از دستور شماره وقفه = int

  25. مثال برنامه ای بنویسید که نام خانوادگی تان را روی صفحه نمایش نشان دهد. (با ساختار .com درAssembler نوشته شود) .Model Tiny,c,os-dos .286 .code .startup Jmp l1 Str1 db “sharifi”,’$’ L1: mov dx,offset str1 mov ah,09h int 21h .exit end • نکات: • وقفه 21h، مربوط به صفحه نمایش است. • آدرس رشته ای که قرار است چاپ شود درdx قرار می گیرد. • سرویس 02h از وقفه 21h برای چاپ رشته بکار می رود. • بازگشت به dos (اگر نباشد برنامه پس از اجرا قفل می کند).

  26. برنامه اشکال زدایی Debug وسیله ای است برای اشکال زدایی برنامه ها و یا ایجاد کردن برنامه هایی به زبان ماشین و همچنین، اجرای وقفه ها و تغییر دادن ثباتها در کامپیوترهایی با سیستم عامل Dos یا Windows کار می کنند. برای اجرای این برنامه بایستی کلمه Debug را در جلوی اعلان سیستم عامل تایپ کنیم. در صورتی که بخواهیم فایلی را اشکال زدایی نماییم، نام فایل را در جلوی این دستور نیز ذکر می کنیم. Debug فقط برای اشکال زدایی فایلهای .exe, .com کاربرد دارد. پس از ورود به Debug، خط تیره (_) پایین صفحه نشان دهنده آمادگی Debug برای دستورات می باشد.

  27. دستورات مربوط به Debug R (Register): با استفاده از این دستود، محتویات ثباتها را به همراه ؟ بیتهای ثبات Flag می توان بر روی صفحه نمایش مشاهده نمود. اما اگر در جلوی این دستور، نام یک ثبات تایپ شود، ضمن نشان دادن محتویات آن، امکان دادن مقدار جدید را به ما خوهد داد. -R ax = 0000 bx = 0010 …… ds = 4cf2 …… -R cx cx : مقدار فعلی مثال 1 مثال 2

  28. H (Hex Arithmetic): در صورتی که دو عدد در مبنای هگزاد دسیمال در جلوی دستور ذکر کنیم، مجموع و اختلاف آنها را محاسبه و چاپ می کند. -H عدد دوم عدد اول -H 5F 2B

  29. Flag Code when reset (=0) Code when set (=1) Of (Overflow) Df (Direction) If (Interrupt) Sf (Sign) Zf (Zero) Af (Auxiliary) Pf (Parity) Cf (Carry) OV (Overflow) DN (Down) EI (Enable Interrupt) NG (negative) ZR (Zero) AC(Auxiliary Carry) PE (Parity Even) CY (Carry) NV (No Overflow) UP (Up) DI (Disable Interrupt) PL (Plus or Positive) NZ (Not Zero) NA (Not Auxiliary) PO (Parity Odd) NC (Not Carry) کدهای ثبات وضعیت

  30. N (Name): اگر بخواهیم یک فایل اجرایی را در داخل Debug، اشکال زدایی کنیم و یا فایلی را به وجود آوریم و یا بر روی دیسک ذخیره کنیم، توسط این دستور می توانیم نام آن را مشخص کنیم. -N نام فایل.com L (Load): پس از مشخص کردن نام فایل، با استفاده از این دستور می توان فایل را از روی دیسک خوانده و آن را آماده اشکال زدایی نماییم. Q (Quit): ازاین دستور، برای خروج ازDebug، بدون ثبت تغییرات اعمال شده استفاده می شود.

  31. W (Write): برای ذخیره کردن فایلی که قبلا نام آن را مشخص کرده ایم، از این دستور استفاده می نماییم. این دستور، به تعداد بایتی که تعداد آن در ثبات Cx قرار دارد، از ابتدای محل برنامه موجود در Debug بر روی دیسک ذخیره می کنیم. :0100 -R cx 01F2 :N تعداد بایت g -N test.exe -W دستورات برنامه نمایش محتویات ثبات cx و امکان تعویض مقدار آن

  32. U (Unassemble): با استفاده از این دستور، می توانیم لیستی (به زبان اسمبلی) از دستورات موجود در حافظه را مشاهده نماییم. (اگر برنامهای در حافظه موجود باشد یعنی قبلا Load شده باشد). شکل کلی این دستور به صورت زیر است: U <Student address> <End address> U <Student address> <Byte> حتما بایستی مبدا مشخص شده باشد. درDebug، باید دقت کنیم که آدرس شروع دستورات برنامه، از چه آدرسی آغاز می شود و یا این که این کار را به عهده Debug بگذاریم که از ابتدا، شروع کرده و دستورات زبان اسمبلی را تشخیص دهد.

  33. A (Assembler): شکل کلی این دستور به صورت زیر است: -A آدرس شروع پس از وارد کردن این دستور، آدرس محلی را که وارد کرده ایم، در سمت چپ ظاهرشده و می توانیم در جلوی آن، فقط دستورات اسمبلی را بنویسیم. آدرس منطقی cs:offset -a 100 شماره : 0100 - Cs آدرس : offset

  34. G (Go): ازاین دستور برای اجرای برنامه، ازآدرس مشخص شده استفاده می شود. شکل کلی این دستور به صورت زیرمی باشد: C:\>Debug -N Reset.com -l -U 100 112 <=Start address> <=Stop adress > اجرای دستورات از آدرس 100 تا آخرین دستور موجود در حافظه. -G = 100 -G = 100 112 اجرای دستورات از آدرس 100 تا آدرس 112.

  35. T (Trap): از این دستور، برای اجرا کردن و دیدن خط به خط ثباتها و نواحی استفاده می شود. شکل کلی این دستور به صورت زیر است: -T <= Start Address> < تعداد دستورات > -T =100 5 اجرای دستورات از آدرس 100 به تعداد 5 دستور دستورات زبان اسمبلی Mov: ازاین دستور، برای انتقال دادن یک مقدار به یک ثبات مورد استفاده قرار می گیرد.

  36. نکاتی را بایستی برای این دستور در نظر بگیریم. Mov al,01000001B

  37. وقفه 19H: وقفه ای است که توسط آن، سیستم boot می شود. وقفه 20H: برای اتمام برنامه و بازگشت به Dos مورد استفاده قرار می گیرد. سرویس 4CH از وقفه 21H: این سرویس، می تواند اجرای برنامه را به پایان برد و باعث بازگشت به Dos می شود.(وقفه 20H با این سرویس، معادل است)

  38. C:\asm>Debug -a 100 … : 0100 int 19H … : 0102 mov ah,4CH … : 0104 int 21H … : 010b -R cx … :6 -N Reset.com -W -Q C:\asm>Dir Reset.com تمرین 1. برنامه ای در Debug بنویسید که با اجرای این برنامه، باعث Reset شدن دستگاه شود؟

  39. برنامه ای بنویسید که یک فایل را تشکیل دهد وقسمتی ازصفحه نمایش، به مختصات داده شده را، به اندازه 5 سطر بالا ببرد؟ (Debug) C:\asm>Debug -a 100 … : 0100 mov ah,06H … : 0102 mov cx,aa … : 0105 mov dx,F65 … : 0108 mov al,5 … : 010a int 10H … : 010c -R cx :C -N Cls.com -W -Q :0106 int 10H :0108 int 21H :010a -R cx :A -N Curoor.com -W Writing 0000A Byte -@ c:\asm> 1 2

  40. -a 100 :0100 mov ah,01 :0102 mov ch,01 :0104 mov ch,E(14) :010a -R cx :A -N cu.com -W Writing 0000A Byte -@ :010C int 21H :010E -R cx :E -N cu1.com -W -@ 1 2 3 3. با استفاده از دستورات Debug و اسمبلی برنامه مربوط به وقفه زیر را بنویسید: سرویس 01H از وقفه 10H، اندازه مکان نما را تغییر می دهد. اگر در ch خط شروع و در cl نقطه پایان مکان نما را تغییر دهیم و این وقفه را اجرا نمائیم اندازه مکان نما به اندازه فاصله این دو خط خواهد شد.

  41. 5. برنامه ای بنویسیدکه مکان نما را درموقعیت 10,10 چاپ کند؟ 4. برنامه ای بنویسیدکه مکان نما را به حالت اول برگرداند؟ -a 100 … : 0100 mov ah,01H … : 0102 mov ch,c … : 0104 mov cl,c … : 0106 int 10H … : 0108 int 20H -a 100 … : 0100 mov ah,02H … : 0102 mov dh,A … : 0104 mov dl,A … : 0106 int 10H … : 0108 mov ah,02H … : 010A mov dh,41

  42. شبه دستورات یک برنامه اسمبلی، در Macro Assembler را می توان به دستورات و شبه دستورات تقسیم کرد. منظور از دستورات، همان دستورات زبان اسمبلی می باشد و در موقع ترجمه برنامه، هر کدام به یک کد زبان تبدیل می شوند. اما شبه دستورات، برای کمک به برنامه ریز با آدرس های مختلف حافظه و خوانا شدن برنامه،به برنامه اضافه می شوند. که در موقع ترجمه برنامه، به آدرس های مورد نظر تبدیل می شود. مثلا، برای نام گذاری متغیرها، شبه دستوراتی وجود دارد که توسط آنها، می توانیم در طول برنامه، متغییرهایی را تعریف کنیم و در موقع ترجمه برنامه، هر کجا که متغییری ذکر کرده باشیم، آدرس آن جایگزین خواهد شد.

  43. شبه دستور تعریف نماد کلمه EQU یا علامت مساوی در Macro Assembler توسط مقادیر متناظر خود، برای تعریف بکار می رود و در موقع ترجمه برنامه، نمادها با مقادیر داده شده، جایگزین می شوند. نام متغییر EQU مقدار Enter EQU 13 Eoline EQU ‘$’ تعریف داده و متغییر شبه دستورات DT,DQ,DD,DW,DB ، برای تعریف متغییر استفاده می شوند. شکل کلی تعریف به صورت زیر است: DB نام متغییرطول متغییر ? Dup() مقدار

  44. هر یک از شبه دستورات گفته شده به صورت زیر بیان می شود. DB ( Define Byte ) 1 Byte DW ( Define Word ) 2 Byte DD ( Define Double Word ) 4 Byte DQ ( Define Quail Word ) 6 Byte DT ( Define Ten Byte ) 10 Byte

  45. F1 db 30 • F2 db “Ali” • F3 db 65,’L’,’$’ • F4 db ? • F5 db 3FH,2FH,00H,4CH • F6 db 10 Dup(0) F1 به طول 1 بایت با مقدار اولیه 30. F2 به طول 1 بایت با مقدار اولیه 30. F3 متغییری از نوع آرایه به طول 3 بایت با مقدار اولیه متفاوت. F4 متغییری به طول 1 بایت که هنوز مقدار نمی گیرد. F5 متغییری از نوع آرایه به طول 4 بایت با مقدار اولیه داده شده. F6 از نوع آرایه بطول 10 بایت با مقدار اولیه صفر.

  46. 7.F7 db 10 Dup(?) 8.F8 dw 10 9.F9 dw 30,40,108,456 10.F10 dw 12 Dup(?) 11.F11 db 1,2,3 db 4,5,6 F7 از نوع آرایه بطول 10 بایت که مقدار اولیه ندادیم. F8 متغییری بطول یک کلمه با مقداراولیه 10. F9 آرایه ای بطول 4 کلمه با مقداراولیه داده شده. F7 آرایه ای بطول 12 کلمه بدون هیچ مقداراولیه ای. F9 متغییری ازنوع آرایه بطول 6 بایت با مقادیراولیه داده شده.

  47. شبه دستور Call این دستور، برای فراخوانی یک زیربرنامه مورد استفاده قرارمی گیرد برای فراخوانی زیربرنامه موجود درحافظه اصلی، باید آدرس زیربرنامه و یا نام زیربرنامه را درجلوی این دستور، قید کنیم. شکل کلی استفاده ازاین دستور بصورت زیر است: Call نام زیربرنامه Call آدرس زیربرنامه cs:offset

  48. شبه دستور Endp این شبه دستور، برای مشخص کردن ابتدای یک زیربرنامه مورد استفاده قرار می گیرد. در این صورت در پایان زیر برنامه، باید از شبه دستور Endp (End Of Line) استفاده نمائیم. اگر زیربرنامه را بدین صورت معرفی کرده باشیم، می توانیم توسط دستور call آن زیربرنامه را با ذکرنام، فراخوانی کنیم. شکل کلی استفاده از این دستور، بصورت روبرو است: نام زیربرنامه Proc [near/far] دستورات برنامه Ret بازگشت به برنامه اصلی نام زیربرنامه Endp

  49. Near: درصورتی که زیربرنامه خارجی نباشد ودرداخل Segment جاری باشد. Far: در صورتی که زیربرنامه خارجی باشد و در داخل Segment جاری نباشد. مثال) روالی بنام putstr بنویسید که در رشته ای که آدرس آن در ثبات dx قرار دارد و به $ ختم می شود را در محل جاری مکان نما، چاپ کند. Putstr proc near Mov ah,09H Int 21H Ret Putstr endp نکته) جهت چاپ رشته ای که آدرس آن در ثبات dx قرار دارد و به $ ختم می شود از این وقفه با سرویس مربوطه استفاده می شود.

  50. دستور Ret: در صورتي كه در يك زير برنامه ، اجراي زير برنامه به اين دستور برسد ، اجراي برنامه به محلي باز مي گردد كه آدرس آن در ابتداي stack قرار دارد .

More Related