In ARM (ali celo x86) MCU/CPU z von Neumann strukturo, njegov naslovni prostor je enoten in neprekinjen, kodni pomnilnik/RAM/CPU registri, in celo PC video pomnilnik so vsi naslovljene enotno. Samo spomin z različnimi funkcijami zaseda različne naslovne bloke in počnejo svoje stvari.
Vrnimo se v MCS-51.
Za programski pomnilnik sta dva dela: on-chip in off-chip. In ne glede na programski pomnilnik na čipu ali off-chip programski pomnilnik, so njihovi naslovi v skupni rabi. Če je na čipu 4k ROM, je naslov 0x0000-0x0FFF, 0x1000-0xFFFF pa je naslovni prostor zunanjega ROM-a. Ali 0x0000-0x0FFF del zunanjega ROM-a, je odvisno od ravni vrednosti EA pin mikrokontrolerja. Ko se uporablja EA=1, se uporablja ta del notranjega ROM-a in ta del zunanjega ROM-a se zamuja in ne uporablja; pri EA=0 se uporablja ta del zunanjega ROM-a, notranji ROM pa se zasuka in ne uporablja. Če želite prebrati podatke iz segmenta CODE, uporabite navodila za MOVC. Mikrokompjuter z enim čipom samodejno določi, iz katerega pomnilnika je treba prineti podatke v skladu z navodili MOVC, stanjem EA in vrednostjo naslova, ki jo je treba prebrati
Za podatkovni pomnilnik je razdeljen na dva dela: notranji podatkovni pomnilnik (IDATA/RAM) in zunanji podatkovni pomnilnik (XDATA), vendar ta dva spomina ne delita naslovnega prostora, kot je pomnilnik kode. Splošni čip 8051, notranji RAM je samo 128B, od 0x00-0x7F, in od 0x80-0xFF je področje SFR (CPU delovni registri in različni periferni registri so tukaj). Za 8052 ima notranji RAM 256B, zato 0x80-0xFF je visok 128B RAM v uporabi. Ampak ali ni ta del posvečen SFR? Namenjen je SFR, vendar upoštevajte, da lahko SFR dostop uporablja samo "neposredno naslavčevanje" (izvaja se z uporabo posebnih navodil za sestavljanje), razlika je tukaj. Samo naslov, do katerega lahko dostopate z neposrednim naslovom, je SFR, sicer je navaden RAM. Glede razširjenega RAM-a (XDATA) je naslov tudi iz 0x0000-0xFFFF, 0x0000 pa se tukaj razlikuje od 0x00 notranjega RAM-a in so popolnoma neodvisni od dveh presledkov. Različne so tudi njihove metode dostopa. MCS-51 uporablja MOVX navodila za branje in pisanje območja XDATA. Poleg tega je za dostop do območja XDATA potrebna pomoč registra DPTR. Ker lahko samo DPTR drži naslednji 16-bitni XDATA naslov.
Torej, MCS-51 ima najhitrejšo hitrost branja in pisanja območja IDATA in najbolj dostopne metode. Hitrost dostopa do območja XDATA je razmeroma počasna. Kup MCS-51 je treba najprej razviti na območju IDATA, kup, odprt v območju IDATA, pa je mogoče nadzorovati s registrovo registrov stack pointer SP. Če je kup res prevelik in ga je mogoče odpreti samo na področju XDATA, potem se bo SP register CPU težko sposodil, in lahko samo zgradimo strukturo stack in stack kazalec sami. Ker sta zunanji programski prostor in podatkovni prostor tako 0-64K (0x0000-0xFFFF), potem lahko dejansko shranim težave/priročne programe za prepis in druge razloge, lahko zunanja KODA in DATA delita prepisljiv pomnilnik (na primer različne What RAM je mogoče izbrisati in zapisati). Na primer, sistem ima 64K zunanji POMNILNIK. Spodnji 32K se uporablja za shranjevanje KODE, mikrokontroler pa lahko bere in zažene program v tem 32K, višji 32K pa se uporablja kot shranjevalno mesto za uporabniške podatke. Toda v tem trenutku, prvotno popolnoma neodvisna KODA in PODATKOVni prostor, ker je pomnilnik v skupni rabi na strojnem čipu, lahko vplivajo drug na drugega, in program lahko ponovno na novo program sam. Na primer, 0x0020 je navodilo, in sem ponovno 0x0020 preko MOVX, nato uporabite MOVC za branje 0x0020, in podatki so drugačni od originala.
Zmedenost je v tem, da je prostor za shranjevanje mikrokompjuterja z enim čipom logičen koncept, ki sta dva ločena prostora, ki sta umetno razdeljena. Spominski čip na strojnem vezju je koncept v resnici. Prostor za shranjevanje mikrokompjuterja z enim čipom se bo sčasoma izvajal na čipu na ravni vezja, zato se bo logični prostor za shranjevanje prekrival zaradi fizične povezave vezja. A na logični ravni sta ta dva prostora še vedno popolnoma neodvisna.
Priloga: Opredelitev različnih imen prostora za shranjevanje:
Podatki: fiksno se nanašajo na 128 ramov 0x00-0x7f spredaj, ki jih lahko neposredno prebere in piše register, najhitrejša in najmanjša ustvarjena koda.
Idata: fiksno se nanaša na 256 ramov 0x00-0xff spredaj, od katerih je prvih 128 popolnoma enako 128 podatkov, samo zaradi različnih metod dostopa. dostop do idata s kazalcem, podobnim C. Izjava v sestavu je: mov ACC,@Rx. (ni pomemben dodatek: idata v c ima dober učinek dostopa do kazalca) xdata: zunanji razširjen RAM, se na splošno nanaša na zunanji prostor 0x0000-0xffff, do katerega dostopa DPTR. pdata: spodnjih 256 bytes zunanjega razširjenega RAM-a, preberite in pišite, ko se naslov pojavi na A0-A7, uporabite movx ACC, @Rx za branje in pisanje. To je precej poseben, in C51 zdi, da imajo ta bug, je priporočljivo, da uporabljajo manj. Obstajajo pa tudi njegove prednosti. Specifična uporaba je vmesni problem, ne vem, kako ga uporabiti, zato ga tukaj ne bom omenjal.







