Quantcast
Channel: دانلود فایل رایگان
Viewing all articles
Browse latest Browse all 46175

تحقيق در مورد دستورالعمل پردازش داده‌هاي رشته‌اي

$
0
0
 nx دارای 35 صفحه می باشد و دارای تنظیمات در microsoft word می باشد و آماده پرینت یا چاپ است فایل ورد nx  کاملا فرمت بندی و تنظیم شده در استاندارد دانشگاه  و مراکز دولتی می باشد. این پروژه توسط مرکز nx2 آماده و تنظیم شده است توجه : در صورت  مشاهده  بهم ريختگي احتمالي در متون زير ،دليل ان کپي کردن اين مطالب از داخل فایل ورد مي باشد و در فايل اصلي nx،به هيچ وجه بهم ريختگي وجود ندارد بخشی از متن nx : دستورالعمل پردازش داده‌های رشته‌ای رشته عبارت‌از مجموعه‌ای از كاراكترهای به هم پیوسته و متوالی است. رشته می‌تواند حاوی هر كاركتر قابل چاپ باشد. مقایسه رشته‌ها، كپی‌رشته‌ها، جستجو در رشته و انتقال آنها نمونه‌های از اعمال رشته‌ای هستند. تعریف رشته‌ها برای تعریف رشته‌ها از شبه دستورات DB یا DW استفاده می‌شود. نمونه هایی از تعریف رشته در زیر آمده است.100 dup (‘*’) Db Str150 dup () Dw Str275 dup () Dw Str3“ abcdef ” Dd Str4 جدول حالتهای سه‌گانه دستورالعملهای رشته‌ای:دستورالعمل اصلی دستورالعمل بایت دستورالعمل كد دستورالعمل كلمه مضاعفMOVS MOVSB MOVSW MOVSDLODS LODSB LODSW LODSDSTOS STOSB STOSW STOSDCMPS CMPSB CMPSW CMPSDSCAS SCASB SCASW SCASD معرفی دستورالعملهای رشته‌ایاین دستورالعملها عبارتنداز movs برای كپی كردن رشته‌ها، lods برای باركردن رشته‌ها، stos برای ذخیره رشته‌ها، cmps برای مقایسه رشته‌ها، scas برای جستجوی رشته‌ها به كار می‌روند. دستورالعملهای رشته‌ای می‌توانند بر روی بایت، كلمه یا كلمه مضاعف عمل كنند، لذا هر دستورالعمل رشته‌ای سه حالت دارد : بایت ،كلمه، كلمه‌مضاعف. برای مثال سه حالت دستورالعمل movs عبارتنداز movsb , movsw movsd در این حالتها حرف S به معنی رشته، B به معنی بایت، W به معنی كلمه و D به معنی كلمه مضاعف است.   ویژگیهای دستورالعملهای رشته‌ای دستورالعملهای رشته‌ای بر روی دو رشته عمل می‌كنند برای مثال رشته‌ای را در رشته دیگر كپی می‌كند، رشته‌ای را در ثباتی ذخیره می‌نمایند و یا رشته‌ای را از ثبات به محلی از حافظه بار می‌كند. به هر حال، دستورالعملهای رشته دو عملوند دارند ولی عملوندها جزئی از دستورات نیستند. عملوندهای دستورالعملهای رشته‌ای، قبل از اجرای دستورات باید مقداردهی شوند به همین دلیل، این عملوندها را عملوندهای ضمنی گویند. دستورالعملهای رشتهای معمولاً بر روی دو رشته عمل می‌كنند كه یكی از آنها رشته منبع و دیگری را رشته مقصد گویند. آدرس رشته منبع باید در ثبات SI و آدرس رشته مقصد باید در ثباتDI قرار گیرد. ثبات SI معمولاً با ثبات DS به صورت DS:SI و ثبات DI معمولاً با ثبات DS به صورت ES:DI بكار می‌روند، لذا در بسیاری از دستورالعمل‌های رشته‌ای هنگامی كه فایل EXE ایجاد می‌شود ثبات ES باید با آدرس موجود در ثبات DS مقدار دهی شوند.;address of data segment Ax , datasg Mov. Dx , ax Mov. Es , ax Mov تكرار اجرای دستورالعملهای رشته‌ایدستورالعملهای رشته‌ای می‌توانند رشته‌هایی از یك بایت، یك كلمه یا یك كلمه مضاعف را پردازش كنند. اگر طول رشته بیش از یك كلمه مضاعف باشد، باید اجرای دستورات رشته‌ای برای پردازش تكرار شود. برای مثال، برای كپی كردن رشته‌ای به طول10 می‌توان دستور movsb را 10 بار تكرار كرد. برای تكرار اجرای دستورات رشته‌ای از پیشوند rep استفاده می‌شود. تعداد دفعات تكرار باید در ثبات cx قرار گیرد. پیشوند rep، دستور پردازش رشته را آنقدر تكرار می‌كند تا ثبات cx به صفر برسد. تكرار اجرای دستورات با پیشوندهای دیگری نیز امكان‌پذیر است.   دستورات repz ,repnz ,repne ,repe ,repاین دستورات به صورت كلی repz ,repnz ,repne ,repe ,rep instruction مورد استفاده قرار می‌گیرند و باعث اجرای دستورجلوی آن تعداد مشخص می‌‌شوند. ثبات CX تعداد تكرار اجرای دستور را مشخص می‌كند و پس از اجرای هر بار این دستورات یك واحد از ثبات CX كم می‌شود. :Rep دستور جلوی خود را تا صفر شدن ثبات CX تكرار می‌كند:Repe دستور جلوی خود را مادامیكه ثبات CX مخالف صفرباشد تكرار می‌كند: Repz دستور جلوی خود را مادامیكه ثبات ZF=0 باشد تكرار می‌كند:Repne دستور جلوی خود را مادامیكه ثبات CX=0 باشد تكرار می‌كند:Repnz دستور جلوی خود را مادامیكه ثبات ZF=0 باشد تكرار می‌كند تعیین جهت پردازش رشته رشته‌ها را می‌توان از چپ به راست و یا از راست به چپ پردازش كرد. چهت پردازش رشته توسط فلگ DF مشخص می‌شود. اگر این فلگ برابر با صفر باشد، پردازش از چپ به راست است و اگر برابر یك باشد پردازش از راست به چپ است. دستور CLD مقدار صفر و دستور STD مقدار یك را در این فلگ قرار می‌دهد.دستور CLD باعث می‌شود كه بیت DF از ثبات وضعیت را صفر می‌كند كه در عملیات روی رشته‌ها مانند movs,cmps و … مورد استفاده قرار می‌گیرد. هنگام استفاده از این دستور در هنگام انتقال رشته‌ای عمل مورد نظر از چپ به راست انجام می‌شود. دستور STD باعث می‌شود كه در بیت DF مقدار یك قرار گیرد. هنگام استفاده از این دستور در عملیات رشته‌ای عمل مورد نظر از راست به چپ انجام می‌شود. كپی كردن رشته‌هابرای كپی كردن رشته‌ها از محلی از حافظه به محل دیگری در حافظه از دستور movs استفاده می‌شود. این دستور به صورت كلی movs dest-string , source-string movs مورد استفاده قرار می‌گیرد.حالتهای مختلف این دستور به صورت زیر به كار می‌روند:MOVSBMOVSWMOVSD قبل از اجرای این دستورالعملها، آدرس محلی از حافظه كه حاوی رشته است(منبع) در DI:SI و ادرس محلی از حافظه كه رشته در آنجا كپی می‌شود در ES:DI قرار می‌گیرد. در ابتدای یك برنامه EXE باید ثبات ES را همراه ثبات DS مقداردهی كرد و با دستور LEA آدرس رشته‌ها را در ثبات SI و DI قرار داد. اگر جهت پردازش رشته از چپ به راست باشد، با هر با اجرای دستور movs یك بایت، یك كلمه، كلمه مضاعف به ثباتها SI و DI اضافه می‌شود. ولی اگر جهت پردازش رشته از راست به چپ باشد، همین مقدار از این ثباتها كسر می‌گردد.   دستورالعمل LODS این دستور به صورت كلی LODS sourceمورد استفاده قرار می‌گیرد. این دستورالعمل با حالت LODSB یك بایت را به ثبات AL و با حالت LODSW یك كلمه را به ثبات AX و با حالت LODSD یك كلمه مضاعف را به ثبات EAX بار می‌كند. آدرس حافظه منبع باید در ثباتهای DS:SI باشد در این دستورات مقصد، ثباتهای AL, AX یا EAX پس از اجرای این دستورات بسته به فلگ جهت یك دو یا چهار واحد به ثبات SI اضافه یا از آنها كم می‌شود. در غالب موارد می توان از دستور MOV برای اینكار استفاده كرد ولی دستور MOV كد ماشین سه بایتی و دستورالعمل LODS كد یك بایتی تولید می‌كند چون این دستورالعمل ثباتها را پر می‌كند و نیازی به اجرای پیشوند REP نیست. دستورالعملSTOS این دستور به صورت كلی Stos dest,string مورد استفاده قرار می‌گیرد. این دستورالعمل در حالت STOSB محتویات ثبات AL و در حالت STOSW محتویات ثبات AX و در حالت STOSD محتویات ثبات EAX را به ترتیب در یك بایت، یك كلمه و یك كلمه مضاعف بار می كند. آدرس محل حافظه باید در ثباتهای ES:DI قرار داشته باشد. بر حسب اینكه مقدار فلگ DF چقدر باشد 1، 2، یا 4 واحد به ثبات DI اضافه و یا از آن كم می‌گردد. با استفاده از پیشوند REP در دستور STOS می‌توان محلی از حافظه را مقدار اولیه داد در این صورت تعداد بایتها، كلمات یا كلمات مضاعف در ثبات CX قرار می‌گیرد. مقایسه رشته برای مقایسه رشته‌ها از دستورالعمل CMPS استفاده می‌شود. این دستور به صورت كلی Lable cmp operand1,operand2مورد استفاده قرار می‌ گیرد. آدرسهای دو رشته‌ای كه مقایسه می‌شوند در ثباتهای DS:SI و ES:DI قرار دارند. این دستور شكل CMPSB یك واحد و در شكل CMPSW دو واحد و در شكل CMPSD چهار واحد به ثباتهای SI و DI اضافه و یا از آنها كم می‌كند. فلگ‌هالی AF, CF, OF PF, SF و ZF با دستورات تاثیر می‌پذیرند. با استفاده از پیشوند REP و طولی كه در ثبات CX قرار می‌گیرد این دستورات می‌توانند رشته‌های با هر طول را با هم مقایسه كند. پیشوند REP شكلهای دیگری نیز دارد كه معمولا در مقایسه رشته‌ها مورد استفاده قرار می گیرند و عبارتند از :   REPE یا REPZ :دستورالعمل مقایسه رشته‌ها را تا زمانی اجرا می‌كنند كه CX مخالف صفر بوده بایتها و كلمات مقایسه شده با هم مساوی باشند.REPNE یا REPNZ:دستورالعملهای مقایسه رشته‌ها را تا زمانی اجرا می‌كند CX مخالف صفر بوده، بایتها و كلمات مقایسه شده مساوی نباشند.مقایسه رشته‌ها الفبا عددی صورت می‌گیرد. این دستورالعملها برای مقایسه مقادیر جبری كه حاوی علامت باشند مفید نیستند برای مثال دو رشته “arbs” و “arbn” را در نظر بگیرید برای مقایسه این دو رشته حرف “a” از رشته اول با حرف“a” از رشته دوم مقایسه می‌شود كه با هم مساویند. سپس حرف “r” از رشته اول با حرف “r” در رشته دوم مقایسه می‌شوند كه آنها نیز مساویند سپس حرف سوم رشته اول، “b” با حرف سوم رشته دوم “b” مقایسه می‌شوند این دو حرف نیز با هم مساویند چهارمین حرف رشته اول “s” به چهارمین حرف رشته دوم “b” مقایسه می‌شود كه حرف “s” در مرتبه بالاتری قرار دارد یعنی اصطلاحا می گویند s از n بزرگتر است لذا رشته “arbs” از رشته “arbn” بزرگتر تلقی می‌شود.در مقایسه رشته‌ها كاراكترهای دو رشته با هم مقایسه می‌شوند و پس از رسیدن به اولین مورد اختلاف كاراكتری كه بزرگتر باشد، رشته حاوی آن كاراكتر بزرگتر است دستورالعمل مربوط به مقایسه یك بایتی، REPE CMPSB می باشد. جستجوی رشته برای جستجو رشته از دستور SCAS استفاده می‌شود.این دستور به صورت كلی Stos dest,stringمورد استفاده قرار می‌گیرد. این دستور شباهت زیادی با دستور CMPS دارد و تفاوت آنها این است كه در دستور SCAS یك بایت، كلمه یا كلمه مضاعف در یك رشته جستجو می‌گردد. بایت، كلمه یا كلمه مضاعف مورد جستجو باید در ثبات AL, AX یا EAX باشد. رشته‌ای كه باید عمل جستجو در آن صورت گیرد محلی از حافظه است كه آدرس آن در ES:DI قرار دارد با هر بار اجرای این دستور 1 و 2 یا 4 واحد به ثبات DI اضافه یا از آن كم می شود با اجرای این دستور فلگهای AF, CF, DF, PC, و ZF مقدار می‌گیرند. وقتی دستورالعملهای SCAS با پیشوندهای REP به كار می روند هر رشته‌ای با هر طول را جستجو می‌كنند. نوشتن برنامه های مقیم در حافظهیكی از دلایل اصلی عمومیت یافتن زبان اسمبلی ،توانایی آن برای ساختن برنانامه هایی است كه در پشت صحنه اجرا شود ،كه به اصطلاح برنامه های pop_up یا مقیم در حافظه نامیده میشود این برنامه ها چندان رواج دارند كه نمیتوان از آنها صرف نظر كر د،و نوشتنم این برنامه ها هم مشكل نیست .از مثالهای متداول برنامه های مقیم در حافظه میتوان به ماشین حسابی اشاره كرده كه حتی در هنگام اجرای یك برنامه دیگر ، می توان با زدن كلیدی آن را فعال كرده و استفاده نمود ، یا ساعتی كه همیشه در صفحه تصویر موجود است ، برنامه های كمكی كه شماره تلفن می گیرند ، مطبی را روی كاغذ چاپ می كنند ، اشكالات دیسك را برطرف می نماید و یا حتی امكان اجرای دستورات DOS را فراهم می سازند و از این قبیل برنامه ها. تعریف برنامه مقیم در حافظه بسیار ساده است : این برنامه ها حتی اگر برنامه دیگری را هم اجرا كنید ذر حافظه باقی می مانند عمو ماً COMMAND.COM برنامه ها را درست بعد از خود DOS در حافظه لود كرده و اجرا می نماید و بعد از اتمام برنامه حافظهای را كه به آن اختصاص داده بود گرفته و آزاد می نماید در برنامه های مقیم در حافظه مرحله آخر به ترتیب فوق نیست در عوض فضای اختصاص یافته به برنامه جزو فضای مربوط به DOS در می آید و برنامه بعدی كه می خواهید اجرا كنید نمی تواند از این فضا استفاده كرده و در نتیجه بعد از آن قرار می گیرد به این ترتیب برنامه جزو DOS در می‌آید فقط فایلهای COM را با توجه به ساختمان جمع و جورشان می‌توان مقیم در حافظه كرد مگر آنكه پیشبینی‌های لازم را بعمل آورده باشید .   نوشتن برنامه‌های مقیم در حافظه : اگر كه ممكن است مشكل بظر بی‌آید اما مقیم ساختن برنامه‌ها در حافظه كاری آسان است مشكل اصلی كه باید حل شود این است : حتی اگر برنامه‌ای را به DOS ضمیمه كنید تا این برنامه فرا خوانده نشود به خودی خود كاری انجام نمی‌دهند فقط مقیم ساختن برنامه به معنی اجرا شدن آن نیست – برنامه در حافظه باقی می‌ماند تا دوباره اجرا شود مثلاً تكه برنامه زیر را می‌توان به سادگی با استفاده از یكی از دو وقفه DOS كه برای مقیم ساختن برنامه‌ها طراحی شده‌اند در حافظه مقیم كرد . این كار را به سادگی می‌توان با تنظیم چند رجیستر و استفاده از یكی از دو وقفه فوق بجای وقفه INT 20H كه عموماً برای اتمام برنامه بكار می‌رود انجام داد اگرچه با این كار دستورات در حافظه جای می‌گیرند اما عملاً فقط بایتهای در حافظه هستند تا CS:IP به این دستورات اشاره نكند دلیلی برای اجرا شدن وجود ندارد به همین ترتیب برنامه‌های DOS و BIOS هم خودبه خود اجرا نمی‌شوند بلكه باید فراخوانی گردند . عملاً فقط یك راه حل برای اجرای چنین برنامه‌های مقیم وجود دارد و آن راه عبارت است از وقفه‌های سخت افزاری یا نرم‌افزاری ، وقفه های سخت افزاری توسط برنامه ایجاد نمی‌شود بلكه موقعی تولید می‌گردندكه وضعیت خاصی در دستگاههای جانبی كامپیوتر بوجود آمده باشد مثلاً هنگامی كه كلیدی را در صفحه كلید می‌زنید ، یك وقفه ، وقفه 9 ایجاد می‌گردد دیسك درایو هم در اثر وقوع عمل خاص وقفه تولید می‌كند و ساعت داخلی كامپیوتر هم به همین صورت ( عملاً وقفه ساعت هر ثانیه 2/18 بار اتفاق می‌افتد ) . وقفه سخت افزاری باعث می‌شود كه كامپیوتر اجرای برنامه را موقتاً متوقف كرده – وقفه – و به وقفه رسیدگی كند وقفه های سخت افزاری را می توان توسط برنامه با استفاده از دستور CLI از كار انداخت ( بجز تعدادی از وقفه‌های سطح پایین ) این فلاگ داخلی فقط برای این كار طراحی شده است : مشخص كند كه آیا باید به وقفه رسیدگی گردد یا از آن صرف نظر شود مثلاً اگر برنامه شما دستور CLI اجرا كند كلیدهای تایپ شده دریافت و ذخیره نخواهند شد با دستور STI می‌توان این فلاگ را ست كرده و امكان پاسخ گویی مجدد به وقفه‌ها را فراهم كرد . از لحاظ تكنیكی برنامه‌های مقیم در حافظه را می‌توان با فشار كلید فوری hot key كلیدی كه با زدن آن مثلاً ماشین حساب یا هر برنامه دیگر مقیم در حافظه ظاهر می گردد ، فعال نمود این كار به دلیل آن است كه برنامه های فوق از وقفه صفحه كلید استفاده می كند . وفقه های سخت افزاری از انجهت كه با هر بار وقوع آنها می توان برنامهای را اجرا كرد بسیار شبیه به وقفه های نرم افزاری هستند . در این صورت برنامه اجرا شده برنامه مقیم در حافظه مورد نظر ما خواهد بود . برای فعال كردن برنامه های مقیم در حافظه ما از وقفه های سخت افزاری استفاده میكنیم نه وقفه های نرم افزاری .دلیل این امر ان است كه وقفه های نرم افزاری فقط هنگام اجرای برنامه ایجاد می شود اما وقفه های سخت افزاری را می توان در هر لحظه دل خواه با زدن یك كلید فوری ایجاد كرد . وقفه های سخت افزاری و نرم افزاری از لحاظ اینكه ریز پردازنده چگونه آدرس برنامه مورد نظر را پس از وقوع وقفه پیدا می كند مشابه هم هستند . مثلاً اگر برنامه شما یك دستور INT 10H را اجرا كند پردازنده عمل جستجوی آدرس را به همان ترتیب انجام می دهد كه در صورت زدن یك كلید و دریافت وقفه 9 انجام خواهد داد . وقفه چگونه كار میكند كار ی كه عملا در اثر بروز وقفه (سخت افزاری یا نرم افزاری ) انجام می شود به شرح زیر است :آدرس برنامه مربوطه را از یك جدول تهیه شده برای این منظور موسوم به جدول بردارهای وقفه واقع در قسمت ابتدای حافظه لود می كند این جدول دقیقا در ابتدای حافظه قرار دارد و از آدرس 0000:0000 شروع میشود . ادامه خواندن تحقيق در مورد دستورالعمل پردازش داده‌هاي رشته‌اي

نوشته تحقيق در مورد دستورالعمل پردازش داده‌هاي رشته‌اي اولین بار در دانلود رایگان پدیدار شد.


Viewing all articles
Browse latest Browse all 46175

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>