فكر كنم با اين جوابتون غير مستقيم و ناخواسته بهم گفته باشين از اين سطح پايين تر وجود نداره.
ولي سطحي كه در نظر من بود و با فرض اون مشكل تفكيك شدن اطلاعات از هم برام پيش اومده بود سطحي هست كه حتي براي رايانه مبناي شانزده شانزدهي يا به قول شما هگزا دسيمال تعريف نشده همچنين ثباتهاي سي پي يو به صورت حروف الفباي انگليسي تعريف نشده مانند همين ثبات AL
مثلاً(ميدونم اشتباه هست ولي فرض ميكنيم ،چون حوصله ندارم برم ببينم عمل جمع رو به صورت صفر و يك چطور نشون ميدن)عمل جمع رو رايانه با مقدار 01010010 ميفهمه و ما ميخوهيم عدد 00000001 رو با عدد 00000010 جمع كنيم كه به اين صورت ميشه 000000010101001000000010
كه منظورم از اون صفر و يك هاي پر رنگ همون عمل جمع هست.
خب تو اين سطح ما اگه بخواهيم بين اين مقدارها فاصله بذاريم خب خود فاصله هم كدش چند تا صفر يك هست.
و همچنين به قول شما سي پي يو بايد از كجا بفهمه كه كدوم هشتايي صفر و يك، عمل جمع رو نشون ميده و كدوم عدد البته من براي ديده شدن براي خودمون هشتا از صفر و يك ها رو پر رنگ كردم وگرنه تو اون سطح پايين پايين اصلاً به اين روش تفكيك كردن امكان نداره تازه اگه همچين سطح پاييني وجود داشته باشه.
حتي از اين سطح پايين تر هم ميشه تصور كرد و اون وقتيه كه فكر كنيم همين نمايش صفر و يك هم يعني تعريف شدن براي سي پي يو كه اين دكمه كه زده شد بياد اين پيكسلها رو روشن كنه تا صفر يا يك به صورت 0 ، 1 نمايش داده بشوند.
اگر هم بازم بريم پايين تر و فرض كنيم صفحه نمايشي نداريم و نه صفه كليدي داراي صفر و يك، اون وقت بايد يه چيزي مثل دستگاه توليد رمز مورس رو بسازيم و با اون صفر و يك رو توليد كنيم البته بازم مشكل تفكيك شدن ديده ميشه.
ميدونم كمي طولاني شد ولي اينم بگم ديگه تموم ميشه . چيكار كنم ذهن كنجكاو و هزار تا سوال بي جواب
من چون هيچ كدوم از اينها قانعم نميكنه و فكر ميكنم ميشه سطح پايين پايين وجود داشته باشه دنبال جواب قانع كننده بودم كه يه بار تو تلويزيون در مورد همين صفر و يك و رايانه برنامه اي ديدم كه صفر و يك رو با يك مدار ساخته شده اين طوري تعريف كرده بود كه دو تا چراغ بودند، اگه هر دو روشن بودند يعني يك و اگر هر دو خاموش بودن يعني صفر نميدونم تو اون برنامه حالت يكي روشن يكي خاموش گفته شده بود يا نه ولي اگه اين حالت رو در نظر بگيريم ميتونيم اين حالت يكي خاموش يكي روشن رو تو اون مدار به معني تفكيك صفر يكهاي متوالي بگيريم.
چون تو اون مدار اگه بخواهيم دو تا 1 رو پشت سر هم نمايش دهيم چون 1 يعني هر دو چراغ روشن ، و نميتونيم با دو چراغ خاموش چون براي حالت صفر تعريف شده اند ، به عنوان تفكيك كننده استفاده كنيم . پس تنها راه تفكيك دو تا 1 يا دو تا 0 همون يك چراغ روشن و يك چراغ خاموشه.
ببخشيد سرتون رو درد آوردم حالا مخصوصاً تو اين مطلب آخر نظرتون رو بگوييد
با تشكر
فرصت دهید با توشه ای پر تر باز میگردم!
سلام مجدد!
در مورد زبان سازنده من دیگر بحثی نمیکنم! شاید اگر طرف حسابمان آقای تکنیک برتر نبود این بحث را تا قیامت هم ادامه میدادم ولی به هرحال ایشان الکی چیزی نمیگویند (گرچه برایم هیچ تردیدی در نظریه ++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 ریخته میشود که میتوان برای عملیاتهای بعدی مثل چاپ و نمایش و ... از آن استفاده کرد.
امیدوارم مشکلتان با چگونگی جداسازی دستورات از هم حل شده باشد.