М. З. Якубова техника ғылымдарының кандидаты, доцент



бет66/141
Дата26.09.2023
өлшемі3.68 Mb.
#478578
1   ...   62   63   64   65   66   67   68   69   ...   141
КОМПЬЮТЕРЛІК ЖҮЙЕЛЕР АРХИТЕКТУРАСЫ

Регистрлік режим
Нәтижелік операндтың мәні алдын ала микропроцессордың кіріктірілген регистрлерінде сақталады. Регистрдің өзі тиімді ад- рес болады. Операнд (байт немесе сөз) регистрде орналасады. Бұл әдіс барлық программаланатын-адрестелетін процессордың регистрлеріне пайдаланылады.

inc CX

; CX регистрінің мәнін 1-ге арттыру.

push DS

; Сегменттік адрес стекте сақталады.

xchg BX,BP

; BX және BP регистрлері өздеріндегі сақталып тұрған мәлімет- термен алмасады.

mov ES,AX

; AX регистрінде сақталған мәліметтер ES регистріне жіберіледі.

Тікелей режим
Тікелей адрестеу. Операнд (байт немесе сөз) команда да көр- сетіледі және тасымалдаудан кейін команданың кодына түседі; ол кез келген мән қабылдай алады (сан, адрес, ASCII коды ), со- нымен қатар символдық белгілеу түрінде де болады.

mov АН, 40h

; 40h саны АН регистріне жүктеледі.

mov AL,сызба*сызба

ASCII кодының символы "*сызба AL регистріне жүктеледі.

int 21h

; 21h аргументті үзу командасы.

limit equ 528

; 528 саны limit белгілеуін алады.

mov CX,limit

; limit айнымалысы арқылы белгіленген сан СХ регистріне жүктеледі.

Соңғы қолданылып тұрған mov командасында екі операнд бар, бірінші операнд – регистрлік адресация, ал екіншісі тікелей адресациялау арқылы анықталады. Тікелей адресациялаудың маңызды қолданысы ретінде салыстырмалы адрестерді (ығыс- тырылуларды) тасымалдау болып табылады, ол үшін offset (ығыстыру) сипаттамасы қолданылады.
; мәліметтер сегменті.
132
string db «Privet»; символдар жолы.
; командалар сегменті.
mov DX,offset string; жолдың адресі DX регистріне жіберіледі.
Тура режим
Жады адрестеледі жады ұяшықтарының адрестері (сөз неме- се байт) командада (әдетте символдық түрде) көрсетіледі және команда кодына келіп түседі:
; мәліметтер сегменті.
meml dw 0; жады сөзінде 0 бар.
mem2 db 230; жады байтында 230 саны бар.
; командалар сегменті.
inc meml; meml сөзіндегі мәнді 1-ге арттырады.
mov DX, meml; menu анймалысында сақталған мән DX реги- стріне жүктеледі.
mov AL,mem2; mem2 айнымалысының мәні АL регистріне
жүктеледі.
Осы мысалды жоғарыдағы мысалмен салыстыра отырып, жады ұяшығында команданы көрсету, осы ұяшықтың мәні опе- ранд болатынын, ал жады ұяшығын offset сипаттаушысы арқы- лы көрсету, жады ұяшығының өзінің операнд болатынын білді- реді.
Жадыны тура адрестеу қарапайым және көрнекі. Егер біз meml жады ұяшығына қол жеткізгіміз келсе, тек оның атын программада көрсетеміз. Шындығында, бәрі басқаша. Кез кел- ген ұяшықтың адресі екі бөліктен: сегменттік адрестен және ығыстырылудан тұрады. Алдыңғы мысалдағы белгілеулер: meml және mem2 ығыстырулар болып табылады. Сегменттік ад- рестер сегменттік регистрлерде сақталады. Бірақ біз білетініміз- дей, сегменттік регистрлер төртеу: DS, ES, CS және SS.
Сонымен, процессор қай регистрден сегменттік адрес алын- ғанын қалай біледі және оны программаға қалай көрсетеді? Процессор префикс деп аталатын кодтар тобын ажыратады. Жалпы, префикстердің бірнеше топтары бар: қайталау, адрес өл- шемі, операнд өлшемі және сегментті алмастыру. Мұнда бізді қызықтыратыны – сегментті алмастыру префиксі. Жадымен жұ-
мыс істейтін процессордың командалары өздерінің бірінші байт-
тары ретінде сегментті алмастыру байттарынан тұрады, соның
133


Достарыңызбен бөлісу:
1   ...   62   63   64   65   66   67   68   69   ...   141




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет