Fiziksel adres kullandığını biliyorum = < < < 4 + offset register. Bu iki yazmaç 16 bit olsa da, 8086 nasıl 20 bitlik bir işlem gerçekleştirebilir?cpu gerçek modda 20-bit adresini nasıl hesaplar
cevap
Otobüs Arayüz Birimi kesimi kaydeder oluşur, toplayıcı 20 bitlik adres ve buyruk ön yüklemesi kuyruğu oluşturmak için. Bu adres BİG'den gönderildikten sonra, komut ve veri baytları bellekten getirilir ve bir İlk Giren İlk Çıkışı 6 bayt kuyruğu doldurur.
Google'dan kolayca bulunabilen "8086_Internal_Block_diagram_enotes.pdf" adlı bir belgeye bakın. Ayrıca, Bus Interface Unit ile ilgili bölümü this document'a bakın.
Bu nedenle, işlemci 20-bit adresleri "isteğe bağlı" olarak, özel bir 20 bitlik kayıtla üretecektir, eğer yapacaksanız.
16 bitlik bir sayıyı 4 yere sola kaydırdığınızda, aslında 20 bitlik bir sayı oluşturursunuz. Ofset daha sonra o aralığa ne kadar ilerleyeceğinizi gösterir. Wikipedia article on Real mode addressing'a bakın.
Örnek:
0x0001 << 4 -> 0x00010 (5 sets of 4 bits in each hex digit -> 20 bits)
Sorunun daha fazla olduğunu düşünüyorum: tüm yazmaçlar 16 bit olduğu için, işlemci normal bir kayıt için çok büyük olan 20 bitlik bir değeri nasıl işleyebilir? – DarkDust
@DarkDust Evet, ben de böyle yorumladım. Seninki daha eksiksiz, sadece soruyu doğrudan sormaya çalışıyordum. – jonsca
@ DarkDust, jonsca, tam olarak :) – Oxdeadbeef
Anlıyorum, teşekkürler! Bu nedenle, esasen adres hesaplaması, geleneksel 16 bit ALU (?) – Oxdeadbeef
@ 0xdeadbeef'i kullanmaz: Doğru, BIU'da kendine özel "mini-ALU" vardır. – DarkDust