سلام
فکرکنم منظورتان را متوجه شدم! احتمالاً !!!!
منظور شما آن است که CPU بخت برگشته از کجا بداند اطلاعات دریافتی یک دستور جمع است یا خود عدد مورد نظر برای جمع؟ درست میگویم، همین را میخواهید بدانید؟؟؟؟
اول بدانید که تمام واحدهای ورودی 8 بیتی هستند (یک بایت)
پس بحث میماند سر تفکیک بلوکهای بایت ها از هم نه تک بیت ها.
اولین بایتی که کشیده میشود داخل شامل نوع دستور است، مثلاً x04 کد دستور جمع یک عدد یک بایتی با محتویات ثبات AL است، و x05 و x80 و x81 و x83 و ... همه کد دستورات جمعغ هستند که در محل و مقصد جمع تفاوت دارند.
حال فرض میکنیم که CPU بایت اول را کشید و این بایت اول همان x04 خودمان بود! طبیعی است که چون AL باید با یک عدد تک بایتی جمع شود پس حتماً باید یک بایت شامل عدد مذکور هم وارد CPU شود، (گرفتید ؟!
) پس حتماً در ادامه کد x04 عددی میآید که باید با AL جمع شود، یعنی بایت بعد از x04 هر چه باشد (0 یا 1 یا 2 یا 4 یا 100 یا ...) به چشم عددی دیده میشود که باید با AL جمع شود، خوب دستور فوق که کلاً شامل دوبایت بود اجرا میشود و بعد هم واضح است مجدداً اولین بایت کشیده شده (که در مثال ما و در کل بایت سوم میشود) حتماً کد دستوری جدید است و حتماً با منطق میتوان مشخص کرد که تا چند بایت بعدی داده های این دستور هستند، حتی شاید دو بایت x04 در پشت هم بیایند ولی با توجه به مثال ما x04 اولی یک دستور است و به معنی جمع ... است و x04 دومی یک داده است نه دستور و عددی است که مورد جمع قرار میگیرد و بایت بعد از این دو. بایت مجدداً دستور است و... ، یعنی بایتی که به عنوان دستور شناخته میشود مشخص میکند که طول داده های مربوطش چقدر است و به صورت غیر مستقیم مشخص میکند دستور بعدی چندمین بایت بعدی قرار دارد.
حتماً الآن فکر میکنید که اگر CPU فقط یک واحد و یک بایت در مکش دستورات اشتباه کند، همه چیز کاملاً به هم میریزد! بله کاملاً درست است اگر ثبات IP که نگه دارنده اصلی مکش دستورات است فقط یک تک مقدار جابه جا شود همه چیز ....