سلام مجدد!
در مورد زبان سازنده من دیگر بحثی نمیکنم! شاید اگر طرف حسابمان آقای تکنیک برتر نبود این بحث را تا قیامت هم ادامه میدادم ولی به هرحال ایشان الکی چیزی نمیگویند (گرچه برایم هیچ تردیدی در نظریه ++C هم به وجود نیامده و هنوز به آن ایمان دارم ولی به نظر آقای تکنیک برتر هم احترام میگذاریم!)
اما در مورد بحث جداسازی دستورات، باید ببخشید داشت یادم میرفت! من اصولاً و به شدت فراموش کار هستم! (به طرز وحشتناک!
) ولی به یک باره جمعه یادم آمد که گفته بودم "باز میگردم!" ....
---------------------------------------------------------------------
ما اعداد زیر را به عنوان دستور داریم و حالا میخواهیم آن را مثل CPU پردازش کنیم!:
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
خوب شروع میکنیم:
- بایت اول xB8 است و بدون شک یک دستور است! و معنی آن این است که قرار است عددی دو بایتی در AX ریخته شود، پس تا اینجا به زبان اسمبلی قابل فهم برای ما میشود ???,mov ax
- از قبل میدانیم که بایت x23 , x01 نمایانگر یک عدد دو بایتی است و این یعنی عدد x0123 (طبق قوانین پردازنده های اینتل، بایت با ارزش در آدرس بالاتر قرار میگیرد، پس x23 بایت اول و کم ارزش و x01 بایت بعدی و پر ارزش است) پس تا ایجنا به دستور mov ax,123H یا mov ax,291 میرسیم (291 عدد ده دهی x0123 میشود)
- دستور قبلی تمام شد پس بایت بعدی حتماً کد دستور جدید است، پس xBB کد دستور است و به معنی ریختن عدد دوبایتی در BX است، پس به دستور ???,mov bx میرسیم
- مجدداً دو بایت بعدی شامل یک عدد دو بایتی است که میشود عدد X0AC4 یا عدد 2756 و دستور جدید ما میشود mov bx,0AC4H یا mov bx,2756 .
- چون دستور قبلی و دنباله هایش تمام شد! بایت بعدی مجدداً کد دستور جدید است، بایت بعدی xD8 است و این به معنی اضافه شدن محتویات bx به ax است، در اصل ax و bx با هم جمع میشوند و حاصل در ax ریخته میشود. و دستور اسمبلی میشود add ax,bx .
- دستور قبلی دنباله ای نداشته و یک بایتی بوده و تمام شد و مجدداً بایت بعدی کد دستور جدید است ....
خوب ما با ترجمه این اعداد به سه دستور زیر رسیدیم:
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
و دیگر واضح است که در دستورات فوق ناشی از اجرا شدن آن اعداد باینری، دو عدد 291 و 2756 با هم جمع میشوند و حاصل در AX ریخته میشود که میتوان برای عملیاتهای بعدی مثل چاپ و نمایش و ... از آن استفاده کرد.
امیدوارم مشکلتان با چگونگی جداسازی دستورات از هم حل شده باشد.