ADRESOVANIE PAMATI

Procesor 8086 ma segmentovu architekturu pamati. Je schopny adresovat 1 megabyte pamati. Tomu odpoveda aj sirka adresovej zbernice 20-bitov. Ako uz bolo vysvetlene procesor 8086 pouziva styri rozne segmentove registre: CODE, DATA, STACK a EXTRA.

V segmente CODE (CS) su ulozene strojove instrukcie, v segmente DATA (DS) su ulozene data programu, segment STACK (SS) obsahuje zasobnik a konecne segment EXTRA (ES) sa zvycajne pouziva pre dalsie data.

Logicka adresa sa sklada z dvoch 16-bitovych hodnot. Z adresy segmentu a offsetu. V realnom rezime sa adresa zlozena zo segmentu a offsetu preklada priamo na adresu fyzicku. Z tejto tzv. logickej adresy sa vytvara 20-bitova fyzicka adresa tak, ze segmentova cast adresy sa posunie o styri bity vlavo a k takto vzniknutemu cislu sa pripocita offset. Tym vznikne 20-bitova adresa ukazujuca na konkretne miesto v pamati. Ukazeme si to na adrese video pamati v textovom rezime.

adresa segmentu: 1011 1000 0000 0000 0000 - 0B800H (zaciatok video pamati)

                  offset:        + 0000 0000 0001 1000 - 00018H (posunutie)

  vysledna adresa: 1011 1000 0000 0001 1000 - B8018H (20-bitova fyzicka adresa)

Standartny zapis logickej adresy je SEGMENT:OFFSET. SEGMENT - je blok pamati, ktory ma velkost 64KB. OFFSET - predstavuje adresu, pomocou ktorej sa mozeme pohybovat v danom segmente, teda v bloku 64KB.

Segmenty sa mozu aj prekryvat. Ide o programy s priponou *.COM. Tento typ programov moze mat maximalne velkost 64KB (1 segment). Z toho dovodu sa vsetky segmenty (CODE, DATA, STACK, EXTRA) musia zacinat na tej istej adrese.