Коммерциялық емес акционерлік қоғамы
АЛМАТЫ ЭНЕРГЕТИКА ЖӘНЕ БАЙЛАНЫС УНИВЕРСИТЕТІ
«Электроника» кафедрасы
МИКРОПРОЦЕССОРЛЫҚ ТЕХНИКА НЕГІЗДЕРІ
3-бөлім
5B070300 – Информациялық жүйелер
мамандығының барлық оқу түрінің студенттерінің
зертханалық жұмыстарды орындауына арналған әдістемелік нұсқаулар
Алматы 2011
ҚҰРАСТЫРУШЫ: О.Т. Шанаев. Микропроцессорлық техника негіздері. 3-бөлім. 5B070300 – Информациялық жүйелер мамандығының барлық оқу түрінің студенттерінің “Микропроцессорлық техника негіздері” пәні бойынша зертханалық жұмыстарды орындауына арналған әдістемелік нұсқаулар. – Алматы: АЭжБУ, 2011. – 30 б.
Ұсынылып отырған әдістемелік нұсқамада микропроцессорлық жүйелердің бағдарламалық бөлігіне, яғни олардың құрылымдық және іскерлік блоктарының іс жүзінде қойылған мәселені шешу жолындағы өзара әрекеттесуін қамтамасыз ету принциптерін оқуға арналған зертханалық жұмыстар келтірілген. Сонымен, бұл жұмыстар студенттердің микропроцессорлық жүйелердің жұмысын ассемблер тілінде бағдарлау негіздерін игеруіне бағытталған.
Зертханалық жұмыстардың жұмыс тапсырмаларының орындалуы екі кезеңмен жүзеге асырылады: алдымен – виртуалды түрде (бағдарламалық симуляторда), сосын – іс жүзіндегі құрылғыда (зертханалық құралымда). бағдарламалық симуляторда. Алуан түрлі іскерлік элементтерімен қамтылған және олардың іс-әрекеттерінің көрнекілігімен көзге түсетін бағдарламалық симулятор оқушылардың құрамы жағынан түр-түрлі жүйе моделдерін құруына және олардың жұмысын зерттеуіне кең мүмкіндік береді, демек, олардың оқу материалын толық игеруіне жағдай жасайды. Іс жүзіндегі құрылғыдағы жұмыс, бір жағынан, студенттердің алдыңғы кезеңде алған теориялық білімінің түбегейлі тиянақталуына мүмкіндік туғызады, ал екінші жағынан, олардың болашақтағы мамандығы бойынша жұмысына қажетті іскерлік қабілеттерінің қалыптастырылуына әсер етеді.
Зертханалық жұмыстарға берілген әдістемелік нұсқаулар 5B070300 – Информациялық жүйелер мамандығының барлық оқу түрінің студенттеріне арналған. Бұл нұсқауларды өзге мамандықтарға жоспарланған осы сияқты пәндердің сәйкесті тақырыптарынан зертханалық жұмыстар ұйымдастыру үшін де пайдалануға болады.
Без. 3, кест. 3, әдеб. көрсеткіші. – 10 атау.
Пікір беруші: физ-мат. ғыл. д-р., проф. С. Б. Бимурзаев
“Алматы энергетика және байланыс университеті” коммерциялық емес акционерлік қоғамының 2011 ж. басылым жоспары бойынша басылады.
© “Алматы энергетика және байланыс университеті” КЕАҚ, 2011 ж.
Кіріспе
Микропроцессорлық жүйелердің құрылым принциптері мен іскерлік негіздерін оқып үйренуге арналған “Микропроцессорлық техника” пәні өзара байланысты және өзара толтырымды екі бөліктен тұрады: аппараттық бөлігі (hardware) және бағдарламалық бөлігі (software). Демек, пәнді толық игеру үшін оның аппараттық бөлігін де, бағдарламалық бөлігін де игеру керек болады.
Алдыңғы әдістемелік нұсқамаларда [1, 2] микропроцессорлық жүйелердің аппараттық бөлігіне, яғни микропроцессорлық жүйелердің құралым блоктарының құрылымдық принциптерін және олардың істеу сипаттамаларын оқуға, арналған зертханалық жұмыстар келтірілген.
Ұсынылып отырған әдістемелік нұсқамада микропроцессорлық жүйелердің бағдарламалық бөлігіне, яғни олардың құрылымдық және іскерлік блоктарының іс жүзінде қойылған мәселені шешу жолындағы өзара әрекеттесуін қамтамасыз ету принциптерін оқуға арналған зертханалық жұмыстар келтірілген. Сонымен, бұл жұмыстар студенттердің микропроцессорлық жүйелердің жұмысын ассемблер тілінде бағдарлау негіздерін игеруіне бағытталған.
Зертханалық жұмыстардың жұмыс тапсырмаларының орындалуы екі кезеңмен жүзеге асырылады: алдымен – виртуалды түрде (бағдарламалық симуляторда), сосын – іс жүзіндегі құрылғыда (зертханалық құралымда). бағдарламалық симуляторда. Алуан түрлі іскерлік элементтерімен қамтылған және олардың іс-әрекеттерінің көрнекілігімен көзге түсетін бағдарламалық симулятор оқушылардың құрамы жағынан түр-түрлі жүйе моделдерін құруына және олардың жұмысын зерттеуіне кең мүмкіндік береді, демек, олардың оқу материалын толық игеруіне жағдай жасайды. Іс жүзіндегі құрылғыдағы жұмыс, бір жағынан, студенттердің алдыңғы кезеңде алған теориялық білімінің түбегейлі тиянақталуына мүмкіндік туғызады, ал екінші жағынан, олардың болашақтағы мамандығы бойынша жұмысына қажетті іскерлік қабілеттерінің қалыптастырылуына әсер етеді.
Зертханалық жұмыстардың ұсынылған ұйымдастырылу әдістемесі автордың көптеген жылдық сабақ жүргізу барысында тексеріліп, уақыт тәжірибесінен өткен. Оқу зерттелімдерінің бірнеше түрде ұйымдастырылуы студенттердің цифрлық жүйелердің оқылатын элементтері мен құрылғылары жөніндегі игерген білімдерінің тереңділігін қамтамасыз етуге және олардың моделдік және іс жүзіндегі тәжірибелер жүргізуіне қажетті іскерлік қабілеттерінің қалыптасуына мүмкіндікті ұлғайтады, ал бұлар, ақырында, зертханалық сабақтардың алдына қойылған мақсаттарға толығымен жеткізеді.
1 Қажетті мәліметтер мен жалпы әдістемелік ұсынылымдар
Зертханалық сабақтарға арналған жұмыс тапсырмаларының орындалуы екі кезеңмен жүзеге асырылады: виртуалды түрде (бағдарламалық симуляторда) және іс жүзіндегі құрылғыда (зертханалық құралымда). Жұмыстың виртуалды да, іс жүзіндегі де бөліктерінің де негізі – Intel 8085 микропроцессоры.
1.1 Intel 8085 микропроцессорының командалар жүйесі
1.1 кестесінде представлены команды Intel 8085 микропроцессорының командалар жүйесі келтірілген. Кестенің бірінші бағанасында командалардың мнемоникасы (шартты жазылымы) келтірілген, бұнда келесі белгіленімдер пайдаланылған: r – регистрлер, rp – регистр жұптары, М – жанама сілтеу кезіндегі жады ұяшығы, b3b2 – команданың екінші және үшінші байттары, port – перифериялық құрылғының адресі.
Екінші бағанада команда кодтары (бірінші байты) келтірілген: микропроцессор регистрінің адресін көсету қажеттілігінде – сегізразрядты екілік сан түрінде, ал қалған жағдайларда – оналтылық санауыш түрінде. Регистрлердің жалпылама адрестерінің разрядтары үшін келесі белгілемелер алынған: дерек көзіне (Data Source) – S символы, дерек қабылдағышына (Data Destination) – D символы, ал регистр жұптарына (Pair) – P символы.
Үшінші бағанада сәйкесті команданың орындалуынан кейін қойылатын тулар жөніндегі мәліметтер келтірілген: “–” символы – ешқандай ту көтетілмейді, “+” символы – тулардың барлығы да көтеріледі, “+” – тасымал туынан басқа тулардың барлығы көтеріледі, “С” – тасымал туы ғана көтеріледі. Бұл тулар (S – терістік, Z – нөлдік, AC – ондық тасымал, P – жұптық, С – тасымал) ту регистрінде қалыптастырылады:
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
S |
Z |
0 |
AC |
0 |
P |
1 |
C |
Келесі үш бағанада команда байттарының саны мен оның орындалу уақытына сәйкесті такт саны мен цикл саны келтірілген.
Соңғы бағанада командаларға түсініктеме келтірілген.
1.1 К е с т е
Мнемокод |
Код |
Ту |
Байт |
Такт |
Цикл |
Түсініктеме |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
Дерек тарату командалары |
||||||
MOV r1, r2 |
01DDDSSS |
– |
1 |
4 |
1 |
r1 ← (r2) |
MOV M, r |
01110SSS |
– |
1 |
7 |
2 |
[(HL)] ← (r) |
MOV r, M |
01DDD110 |
– |
1 |
7 |
2 |
(r) ← [(HL)] |
MVI r, b2 |
00 DDD110 |
– |
2 |
7 |
2 |
r1 ← b2 |
MVI M, b2 |
36 |
– |
2 |
10 |
3 |
[(HL)] ← b2 |
LXI rpb3b2 |
00PP0001 |
– |
3 |
10 |
3 |
rp ← b3b2 |
LDA b3b2 |
3A |
– |
3 |
13 |
4 |
A ← b3b2 |
1.1 К е с т е (жалғасы)
1 |
2 |
3 |
4 |
5 |
6 |
7 |
|
STA b3b2 |
32 |
– |
3 |
13 |
4 |
b3b2 ← (A) |
|
LHLD b3b2 |
2A |
– |
3 |
16 |
5 |
HL ← b3b2 |
|
SHLD b3b2 |
22 |
– |
3 |
16 |
5 |
b3b2 ← (HL) |
|
LDAX rp |
00PP0010 |
– |
1 |
7 |
2 |
A ← [(rp)] |
|
STAX rp |
00PP1010 |
– |
1 |
7 |
2 |
[(rp)] ← (A) |
|
XCHG |
EB |
– |
1 |
4 |
1 |
(HL) ↔ (rp) |
|
Арифметикалық және логикалық операциялардың командалары |
|||||||
ADD r |
10000SSS |
+ |
1 |
4 |
1 |
A ← (A) + (r) |
|
ADD M |
86 |
+ |
1 |
7 |
2 |
A ← (A) + [(HL)] |
|
ADI b2 |
C6 |
+ |
2 |
7 |
2 |
A ← (A) + b2 |
|
ADC r |
10001SSS |
+ |
1 |
4 |
1 |
A ← (A) + (r) + (TC) |
|
ADC M |
8E |
+ |
1 |
7 |
2 |
A ← (A) + [(HL)] + (TC) |
|
ACI b2 |
CE |
+ |
2 |
7 |
2 |
A ← (A) + b2 + (TC) |
|
SUB r |
10010SSS |
+ |
1 |
4 |
1 |
A ← (A) – (r) |
|
SUB M |
96 |
+ |
1 |
7 |
2 |
A ← (A) – [(HL)] |
|
SUI b2 |
D6 |
+ |
1 |
7 |
2 |
A ← (A) – b2 |
|
SBB r |
10011SSS |
+ |
1 |
4 |
1 |
A ← (A) – (r) – (TC) |
|
SBB M |
9E |
+ |
1 |
7 |
2 |
A ← (A) – [(HL)] – (TC) |
|
SBI b2 |
DE |
+ |
2 |
7 |
2 |
A ← (A) – b2 – (TC) |
|
INR r |
00DDD100 |
(+) |
1 |
4 |
1 |
r ← (r) + 1 |
|
INR M |
34 |
(+) |
1 |
10 |
3 |
[(HL)] ← [(HL)] + 1 |
|
DCR r |
00DDD101 |
(+) |
1 |
4 |
1 |
r ← (r) – 1 |
|
DCR M |
35 |
(+) |
1 |
10 |
3 |
[(HL)] ← [(HL)] – 1 |
|
INX rp |
00PP0011 |
– |
1 |
6 |
1 |
rp ← (rp) + 1 |
|
DCX rp |
00PP1011 |
– |
1 |
6 |
1 |
rp ← (rp) – 1 |
|
DAD rp |
00PP1001 |
– |
1 |
10 |
3 |
[(HL)] ← [(HL)] + (rp) |
|
DAA |
27 |
+ |
1 |
4 |
1 |
A ← (A)2-10 |
|
ANA r |
10100SSS |
+ |
1 |
4 |
1 |
A ← (A) ۸ (r) |
|
ANA M |
A6 |
+ |
1 |
4 |
1 |
A ← (A) ۸ [(HL)] |
|
ANI b2 |
E6 |
+ |
2 |
7 |
2 |
A ← (A) ۸ b2 |
|
XRA r |
10101SSS |
+ |
1 |
4 |
1 |
A ← (A) (r) |
|
XRA M |
AE |
+ |
1 |
7 |
2 |
A ← (A) [(HL)] |
|
XRI b2 |
EE |
+ |
2 |
7 |
2 |
A ← (A) b2 |
|
ORA r |
10110SSS |
+ |
1 |
7 |
2 |
A ← (A) ۷ (r) |
|
ORA M |
B6 |
+ |
1 |
7 |
2 |
A ← (A) ۷ [(HL)] |
|
ORI b2 |
F6 |
+ |
2 |
7 |
2 |
A ← (A) ۷ b2 |
|
CMP r |
10111SSS |
+ |
1 |
4 |
1 |
(A) – (r) |
|
CMP M |
BE |
+ |
1 |
4 |
1 |
(A) – [(HL)] |
|
CPI b2 |
FE |
+ |
2 |
7 |
2 |
(A) – b2 |
|
CMA |
2F |
– |
1 |
4 |
1 |
A ← |
|
STC |
37 |
C |
1 |
4 |
1 |
TC ← 1 |
|
CMC |
3F |
C |
1 |
4 |
1 |
TC ← |
|
RLC |
07 |
C |
1 |
4 |
1 |
A7-1 ← (A6-0), A0 ← (TC), TC←A7 |
|
RRC |
0F |
C |
1 |
4 |
1 |
A6-0 ← (A7-1), A7 ← (TC), TC←A0 |
|
1.1 К е с т е (жалғасы)
1 |
2 |
3 |
4 |
5 |
6 |
7 |
||
RAL |
17 |
C |
1 |
4 |
1 |
A7-1 ← (A6-0), A0 ← (A7), TC←A7 |
||
RAR |
1F |
C |
1 |
4 |
1 |
A6-0 ← (A7-1), A7 ← (A0), TC←A0 |
||
Бағдарламаның орындалу бағытын басқару командалары |
||||||||
JMP b3b2 |
C3 |
– |
3 |
10 |
3 |
PC ← b3b2 |
||
Jcond b3b2 |
11CCCC01 |
– |
3 |
10 |
3 |
Cond = 1: PC ← b3b2 |
||
CALL b3b2 |
CD |
– |
3 |
18 |
5 |
SP ← (PC), PC ← b3b2 |
||
Ccond b3b2 |
11CCC100 |
– |
3 |
2/5 |
9/18 |
Cond = 1: SP ← (PC), PC ← b3b2 |
||
RET |
C9 |
– |
3 |
10 |
3 |
PC ← [(SP)] |
||
Rcond |
11CCC100 |
– |
3 |
17/11 |
5/3 |
Cond = 1: PC ← [(SP)] |
||
RST n |
111nnn111 |
– |
1 |
11 |
3 |
PC ← 8n |
||
SPHL |
E9 |
– |
1 |
6 |
1 |
SP ← (HL) |
||
Арнайы командалар |
||||||||
PUSH rp |
11PP0101 |
– |
1 |
11 |
3 |
SP ← (SP) – 2; [(SP)];[(SP) + 1]← (rp) |
||
PUSH PSW |
F5 |
– |
1 |
11 |
3 |
SP ← (SP) – 2; [(SP)],[(SP) + 1]←(A),(F) |
||
POP rp |
11PP0001 |
– |
1 |
10 |
3 |
rp ← [(SP)],[(SP) + 1], SP ← (SP) + 2 |
||
POP PSW |
F1 |
– |
1 |
10 |
3 |
F,A ← [(SP)],[(SP) + 1]; SP ← (SP) + 2 |
||
XTHL |
E3 |
– |
1 |
18 |
5 |
(HL) ↔ [(SP)],[(SP) + 1] |
||
PCHL |
F9 |
– |
1 |
5 |
1 |
PC ← (HL) |
||
IN port |
DB |
– |
2 |
10 |
3 |
A ← (port) |
||
OUT port |
D3 |
– |
2 |
10 |
3 |
port ← (A) |
||
EI |
FB |
– |
1 |
4 |
1 |
Үзіліске рұқсат |
||
ВI |
F3 |
– |
1 |
4 |
1 |
Үзіліске тиым |
||
HLT |
76 |
– |
1 |
7 |
2 |
Тоқтатылым |
||
NOP |
00 |
– |
1 |
4 |
1 |
Операция жоқ |
||
RIM |
20 |
– |
1 |
4 |
1 |
Үзіліс маскасын оқу |
||
SIM |
30 |
– |
1 |
4 |
1 |
Үзіліс маскасын қою |
||
Intel 8085 микропроцессорының кез келген командасының кодын 1.2 кестедегі команданың орналасқан орнының горизонталь және вертикаль аталымдарын тізбелеп жазу арқылы жеңіл анықтауға болады.
1.2 К е с т е
|
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
A |
B |
C |
D |
E |
F |
|
0 |
NOP |
LXI B |
STAX B |
INX B |
INR B |
DCR B |
MVI B |
RLC |
|
DAD B |
LDAX B |
DCX B |
INR C |
DCR C |
MVI C |
RRC |
0 |
1 |
|
LXI D |
STAX D |
INX D |
INR D |
DCR D |
MVI D |
RAL |
|
DAD D |
LDAX D |
DCX D |
INR E |
DCR E |
MVI E |
RAR |
1 |
2 |
RIM |
LXI H |
SHLD |
INX H |
INR H |
DCR H |
MVI H |
DAA |
|
DAD H |
LHLD |
DCX H |
INR L |
DCR L |
MVI L |
CMA |
2 |
3 |
SIM |
LXI SP |
STA |
INX SP |
INR M |
DCR M |
MVI M |
STC |
|
DAD SP |
LDA |
DCX SP |
INR A |
DCR A |
MVI A |
CMC |
3 |
4 |
MOV B,B |
MOV B,C |
MOV B,D |
MOV B,E |
MOV B,H |
MOV B,L |
MOV B,M |
MOV B,A |
MOV C,B |
MOV C,C |
MOV C,D |
MOV C,E |
MOV C,H |
MOV C,L |
MOV C,M |
MOV C,A |
4 |
5 |
MOV D,B |
MOV D,C |
MOV D,D |
MOV D,E |
MOV D,H |
MOV D,L |
MOV D,M |
MOV D,A |
MOV E,B |
MOV E,C |
MOV E,D |
MOV E,E |
MOV E,H |
MOV E,L |
MOV E,M |
MOV E,A |
5 |
6 |
MOV H,B |
MOV H,C |
MOV H,D |
MOV H,E |
MOV H,H |
MOV H,L |
MOV H,M |
MOV H,A |
MOV L,B |
MOV L,C |
MOV L,D |
MOV L,E |
MOV L,H |
MOV L,L |
MOV L,M |
MOV L,A |
6 |
7 |
MOV M,B |
MOV M,C |
MOV M,D |
MOV M,E |
MOV M,H |
MOV M,L |
HLT |
MOV M,A |
MOV A,B |
MOV A,C |
MOV A,D |
MOV A,E |
MOV A,H |
MOV A,L |
MOV A,M |
MOV A,A |
7 |
8 |
ADD B |
ADD C |
ADD D |
ADD E |
ADD H |
ADD L |
ADD M |
ADD A |
ADC B |
ADC C |
ADC D |
ADC E |
ADC H |
ADC L |
ADC M |
ADC A |
8 |
9 |
SUB B |
SUB C |
SUB D |
SUB E |
SUB H |
SUB L |
SUB M |
SUB A |
SBB B |
SBB C |
SBB D |
SBB E |
SBB H |
SBB L |
SBB M |
SBB A |
9 |
A |
ANA B |
ANA C |
ANA D |
ANA E |
ANA H |
ANA L |
ANA M |
ANA A |
XRA B |
XRA C |
XRA D |
XRA E |
XRA H |
XRA L |
XRA M |
XRA A |
A |
B |
ORA B |
ORA C |
ORA D |
ORA E |
ORA H |
ORA L |
ORA M |
ORA A |
CMP B |
CMP C |
CMP D |
CMP E |
CMP H |
CMP L |
CMP M |
CMP A |
B |
C |
RNZ |
POP B |
JNZ |
JMP |
CNZ |
PUSH B |
ADI |
RST 0 |
RZ |
RET |
JZ |
|
CZ |
CALL |
ACI |
RST 1 |
C |
D |
RNC |
POP D |
JNC |
OUT |
CNC |
PUSH D |
SUI |
RST 2 |
RC |
|
JC |
IN |
CC |
|
SBI |
RST 3 |
D |
E |
RPO |
POP H |
JPO |
XTHL |
CPO |
PUSH H |
ANI |
RST 4 |
RPE |
PCHL |
JPE |
XCHG |
CPE |
|
XRI |
RST 5 |
E |
F |
RP |
POP PSW |
JP |
DI |
CP |
PUSH PSW |
ORI |
RST 6 |
RM |
SPHL |
JM |
EI |
CM |
|
CPI |
RST 7 |
F |
|
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
A |
B |
C |
D |
E |
F |
|
1.2 Жұмыс орнының құрал-жабдықтары:
- компьютер;
- 8085 Simulator IDE бағдарламасы;
- Degem Systems фирмасының PU-2000 зертханалық құралымы;
- алмалы-салмалы EB-151 және EB-152 тақташалары;
- жалғама сымдар мен жалғамыштар.
1.3 Жұмыс орнының суреттемесі
Жұмыстың виртуалды бөлімін орындау үшін компьютерге 8085 Simulator IDE бағдарламасын орналастыру керек. Симулятордың құрылымы мен оның іскерлік мүмкіндіктерінің пайдаланылуы зертханалық жұмыстардың орындалу барысында кездесу ретімен суреттеледі. Ал қазір жұмыстың зертханалық құралымда орындалу тәртібін қысқаша суреттей кетелік.
Зертханалық құралымдағы микропроцессорлық жүйенің (микрокомпьютердің) орталық буыны – Intel 8085 микропроцессоры (МП), ол бағдарлама арқылы анықталған мәселенің шешілуін (орындалуын) жүзеге асырады және онымен қатар осы мәселені шешу кезіндегі МПЖ модулдерінің сәйкесті жұмыс істеуін (нақты айтқанда, деректердің әртүрлі модулдер арасында жіберілуін, арифметикалық және логикалық операциялардың орындалуын) басқарады.
Жүйе жадысы екі микросұлбамен жүзеге асырылған:
- басқару бағдарламасын сақтауға пайдаланылатын, 2764 (EPROM, Erasable Programmable Read-Only Memory) микросұлбасы;
- жұмыс бағдарламасы мен деректерді сақтауға пайдаланылатын, 6116 (RAM, Random Access Memory) микросұлбасы. Жұмыс жадысының бағдарлама жазуға арналған аймағы 2100H адресінен басталады.
Енгізу порты ретінде – сегіз ауыстырғыш, ал шығыс порты ретінде сегіз жарық диоды пайдаланылады.
Жүйенің көрсетілген бөліктемелері EB-151 орналастырылған.
EB-152 тақташасында келесі бөліктемелер орналастырылған:
- жадыға жұмыс бағдарламасы мен оның жұмысына қажетті деректер енгізуге пайдаланылатын, түймежинам;
- микропроцессор регистрлері мен жады ұяшықтарындағы деректерді көрсетуге, яғни оларды оқуға пайдаланылатын, дисплей.
Жұмыс орнын, яғни жүйені зертханалық жұмысты орындауға дайындау келесі тәртіппен жүзеге асырылады:
- EB-151 тақташасын зертханалық құралымға, ал EB-152 тақташасын оның сол жақ жанына орналастыр. Келесі жалғамалар арқылы EB-151 және EB-152 тақташаларын қоректендірілу жағынан біріктір және олардың өзара дерек жіберу мүмкіндігін қамтамасыз ет:
PU-2000 |
|
EB-152 |
+12 V |
↔ |
+12 V |
–12 V |
↔ |
–12 V |
+5 V |
↔ |
+5 V |
GND |
↔ |
GND |
RX |
↔ |
TX |
TX |
↔ |
RX |
- EB-152 тақташасындағы S1 (SIG.ANAL/KB+DISP) ауыстырғышын KB+DISP жағдайына қой (немесе оған көзіңді жеткіз). Құралымдағы қорек көзін қосып, EB-152 тақташасындағы дисплейдің “EBHt” көрсетіп тұрғанына көзіңді жеткіз;
- EB-151 тақташасындағы микрокомпьютерді ондағы “Reset” түймесін тез басу арқылы қайта қос. Жалғанымдардың дұрыс қойылғанында При EB-152 тақташасындағы дисплей “Eb-151” көрсетіп тұру керек, ал бұның өзгеше жағдайында жалғанымдардың дұрыстығын тексеру керек.
Оқу бағдарламасын (яғни, пайдаланушының дайындаған бағдарлама-сын) жұмыс жадысына енгізу үшін MEM түймесін басып, одан кейін дисплейдің адрестік алқабына жадының бірінші ұяшығының адресін енгіз. Дисплейдің деректік алқабына қажетті код мәнін енгіз де, ENTER түймесін бас, бұл кезде жады ұяшығының адресі бірге ұлғаяды да, келесі деректі (операция кодын немесе операнд мәнін) енгізуге мүмкіндік беріледі. Және с.с.
Жады ұяшықтарының құрамын тексеру осы сияқты жүзеге асырылады, яғни MEM түймесін басып, одан кейін дисплейдің адрестік алқабына жадының тексерілетін бірінші ұяшығының адресін енгізіледі. Бұдан әрі ENTER түймесін басу арқылы ұяшық адрестерін тібелі түрде өзгерте отырып, олардың құрамын оқуға болады. Қажетті жағдайда, әрине, оларды өзгертуге болады.
Микропроцессордың регистрлерінің құрамын тексеру үшін REG түймесін басып, сосын регистр нөмірін енгізу керек, одан кейін дисплейдің деректік аймағында көрсетілген регистрдің құрамы көрсетіледі. Осы сияқты өзге регистрлердің де құрамын қарап шығуға болады. Тексерілетін егистрлердің нөмірін ENTER түймесін басу арқылы тізбелеп те өзгертуге болады (1.3 кестені қара).
1.3 К е с т е
Регистр нөмірі |
Регистрлер |
Регистрдің суреттемесі |
1 |
A |
Аккумулятор |
2 |
B |
Регистр B |
3 |
C |
Регистр C |
4 |
D |
Регистр D |
5 |
E |
Регистр E |
6 |
H |
Регистр H |
7 |
L |
Регистр L |
8 |
F |
Ту регистрі |
9 |
I |
Үзіліс жасырмасы |
A |
PC |
Бағдарлама санауышы |
B |
SP |
Стек көрсеткіші |
C |
HL |
Жады көрсеткіші |
D |
AF |
Процессордың ахуал сөзі |
E |
BC |
BC регистрлік жұбы |
F |
DE |
DE регистрлік жұбы |
Бағдарламаны іске қосу GO түймесін басып, одан кейін бағдарламаның бастапқы адресін енгізіп, сосын ENTER түймесін басу арқылы жүзеге асырылады.
2 Зертханалық жұмыс. Дерек жіберілімдері
Жұмыс мақсаты:
- Intel 8085 микропроцессорының негізіндегі микропроцессорлық жүйенің (МПЖ) құрылымымен танысу;
- Intel 8085 микропроцессорының командалар жүйесіндегі әртүрлі сілтемелі дерек жіберім командаларының іс-әрекеттерімен танысу;
- Intel 8085 микропроцессорының негізіндегі бағдарламалық МПЖ симуляторының қызмет мүмкіндіктерін пайдаланып үйрену;
- Ассемблер тілінде бағдарлауды үйренуге арналған зертханалық құралыммен жұмыс істеу тәртібін игеру.
2.1 Жұмыс тапсырмасы
2.1.1 C:\Program Files\8085 Simulator IDE ішінде студент туралы жеткілікті мәлімет (топ нөмірі, фамилиясы мен аты) берілген аталыммен бума (папка) ашып, алда құрылатын файлдардың барлығын да сонда сақтау керек.
2.1.2 Симулятор бағдарламасын әлпеттемесімен аш та, ашылған симулятор терезесінде (2.1 суретті қара) Tools/Assembler таңдап, кезекті Assembler терезесінде File/New таңда.
2.1 Сурет
2.1.3 Бағыттаманы Tab түймесімен ығыстырып, төмендегі бағдарламаның бірінші командасын енгіз де, Enter түймесін бас. Осы сияқты бағдарламаның келесі командаларын да енгіз. Белгілер жол басында жазылады. Жазылған бағдарламаны Transfers (Жіберілімдер) аталымымен сақта (File/Save As). Нәтижесінде asm кеңейтілімді файл құрылады.
;WRITING to MEMORIES
SW: ;Single Writing
MVI A,0FH;Direct Loading
STA 00D0H;Direct Writing
NOP
S1: ;Serial Writing-1
MVI C,07h;Data Counter
LXI D,00D0H;Initial Address
MVI A,00H;Cleaning
T0: ADI 13H;Expansion Step
INX D;Address Increment
STAX D;Indirect Writing
DCR C;Monitoring of the Data Counter
JNZ T0;Continue
XCHG;Exchange
NOP
S2: ;Serial Writing-2
MVI C,08H;Data Counter
T1: ADI 09H;Expansion Step
INX H;Address Increment
MOV M,A;Indirect Writing
DCR C;Monitoring of the Data Counter
JNZ T1;Continue
NOP
AW: ;Data Access and Writing
LXI D,00EFH;Initial Address
MVI C,08H;Data Counter
T2: MOV A,M;Indirect Loading
STAX D;Indirect Writing
DCX H;Address Decrement
DCX D;Address Decrement
DCR C;Monitoring of the Data Counter
JNZ T2;Continue
NOP
AC: ;Data Access, Conversion and Writing
MVI C,07H;Data Counter
T3: MOV A,M;Indirect Loading
RLC;Left Shift
XCHG;Exchange
MOV M,A;Indirect Writing
DCX H;Address Decrement
DCX D;Address Decrement
XCHG;Exchange
DCR C;Monitoring of the Data Counter
JNZ T3;Continue
NOP
SA: ;Single Access and Writing
LDA 00D0H;Direct Loading
STA 00E0H;Direct Writing
HLT;Ending
Бірнеше блок түрінде құрылған бұл бағдарламада процессор мен жады арасындағы дерек жіберілімдері жүзеге асырылады. Бірінші блокта (Single Writing-1) жадыға тура сілтемелі команда арқылы жеке жіберілім жүзеге асырылады. Екінші блокта (Serial Writing) жадыға жанама сілтемелі команда арқылы дерек массивінің (арифметикалық прогрессияның мүшелері түріндегі) жіберілімі жүзеге асырылады. Дерек массивінің жіберілімінің ыңғайлырақ тәсілі келесі блокта (Single Writing-2) келтірілген.
Келесі үш блокта (Data Access, Data Access and Conversion, Single Writing) деректердің жадының бір аймағынан екінші аймағына алғы пайдаланылған командаларға ұқсас командалармен жіберілуі (тек кері тәртіппен) жүзеге асырылады.
2.1.4 Assembler терезесінде Tools/Assemble&Load таңда. Нәтижесінде hex, lst, obj кеңейтілімді файлдар құрылады.
2.1.5 Симулятордың негізгі терезесінде Tools/Breakpoints Manager таңдап, әрбір блоктан кейін, яғни NOP командасы тұрған жолдарға (2.2 суретті қара), тексерім нүктелерін қой.
2.1.6 Симулятордың негізгі терезесінде моделдеу жылдамдығын (мысалы, Rate/Normal) таңдап, симуляторды іске қос (Simulation/Start).
2.1.7 Бағдарламаның әрбір тексерім нүктесіндегі тоқталымында орындалған бағдарлама блогындағы командалардың іс-әрекетін және алынған нәтижелерін (микропроцессор регистрлері мен жадының сәйкесті ұяшықтарындағы) талда.
2.1.8 Моделдеу жылдамдығын (мысалы, Rate/...) таңдау арқылы симулятор жұмысын жалғастыр.
2.2 Сурет
Қажетті жағдайда (оқытушының ұсынысы бойынша) бағдарламаның әрбір блоктарын жеке орында. Ол үшін бағдарламаның бірінші жолына JMP командасын қойып, оған қажетті блоктың белгісін жалға да, блок соңындағы NOP командасын HLT командасына ауыстыр.
2.1.9 Микрокомпьютерді (зертханалық құралымды) іске дайындап (1.3 тарауын қара) жады ұяшықтарына келтірілген бағдарламаның жеке блоктарындағы команда кодтарын енгіз. Команда кодтарын 1.2 кестесі арқылы анықтауға немесе алдыңғы тәжірибеде (мысалы, Memory Editor арқылы) алынған кодтарды пайдалануға болады. Ауысу адрестерін, әрине, бағдарламаның іс жүзіндегі жүйе жадысында орналастырылуына сәйкесті түзету керек. Бағдарламаның әрбір блогын RST7 командасымен бітіру керек.
2.1.10 Бағдарламаның әрбір блогын GO түймесін басып, блоктың бастапқы адресін енгізу арқылы іске қос (1.3 тарауын қара).
2.1.11 Орындалған бағдарлама блогында алынған нәтижелерді симуляторда алынған нәтижелермен салыстыр.
2.2 Тексерім сұрақтары
1. Микропроцессордың ішкі құрылымын және оның құрама бөліктерінің қызметін түсіндір.
2. Бағдарламаның жеке блоктарындағы ауыстыру командаларының іс-әрекетін түсіндір.
3 Зертханалық жұмыс. Бірбайтты арифметика
Жұмыс мақсаты:
- бірбайтты арифметикалық командалардың (қосу және алу) іс-әрекетімен танысу;
- айналымды бағдарламалық құрылымдардың ұйымдастырылу принциптерін игеру;
- перифериялық құрылғылармен жұмыстардың ұйымдастырылуының принциптерін игеру.
3.1 Жұмыс тапсырмасы
3.1.1 Симулятор бағдарламасын әлпеттемесімен іске қос та, ашылған симулятор терезесінде Tools/Assembler таңдап, сосын File/New таңда.
3.1.2 Төмендегі бағдарламаны енгізіп, оны Single-Byte Arithmetic (Бірбайтты арифметика) аталымымен сақта.
;SINGLE-BYTE ARITHMETIC
DA: ;Data Array (arithmetical progression)
LXI H,00E0H;Initial Address
MVI C,0AH;Data Quantity
MVI A,00H;Cleaning
MOV M,C;Writing in the Memory
SD: INX H;Address Increment
ADI 55H;Increment Step of the Linear Series
MOV M,A;Writing in the Memory
DCR C;Monitoring of the Data Counter
JNZ SD;Continue
NOP
CS: ;Cumulative Summation
;SUM=((2a1+(n-1)d)/2)n
;a1-first operand,n-quantity,d-step,
LXI H,00E0H;Initial Address
MVI A,00H;Cleaning
MOV B,A;Cleaning
MOV C,M;Installation of the Data Counter
C1: INX H;Address Increment
ADD M;Addition
JNC C2;Carry Monitoring
INR B;Carry Accumulation
C2: DCR C;Monitoring of the Data Counter
JNZ C1;Continue
NOP
RR: ;Retention of Result
INX H;
MOV M,A;Low Byte
INX H;
MOV M,B;High Byte
NOP
SS: ;Series Subtraction
LXI H,00E0H;Initial Address
MOV C,M;Installation of the Data Counter
S1: INX H;Address Increment
SUB M;Subtraction
JNC S2;Borrow Monitoring
DCR B;Borrow Subtraction
S2: DCR C;Monitoring of the Data Counter
JNZ S1;Continue
NOP
AD: ;ALTERNATIVE of the Single-Byte Summation
;Data
IN 01H;First Operand
MOV E,A
IN 01H;Data Quantity
MOV C,A
IN 02H;Step
MOV D,A
LXI H,0000H
NOP
AC ;Cumulative Summation-A
A1: MOV A,E
ADD D
MOV E,A
MOV A,L
ADD E
JNC A2
INR H
A2: MOV L,A
DCR C
JNZ A1
MOV A,L
OUT 03H
MOV A,H
OUT 04H
HLT;Ending
Бұл бағдарлама келесі блоктардан тұрады:
- Data Array – жадыға арифметикалық прогрессия мүшелері түріндегі деректердің жазылуын жүзеге асырады (прогрессияның берілген параметрлерін (n = 0AH – мүшелер санын, a1 = 00H – бірінші мүшенің мәнін, d = 55H – прогрессия қадамын) жұмыстың орындалу барысында өзгертуге болады);
- Cumulative Summation – бағдарламаның алдыңғы блогында жадыға жазылған арифметикалық прогрессия мүшелерінің қосындысын анықтайды;
- Retention of Result – алынған қосынды нәтижесін жадыда сақтайды;
- Series Subtraction – алдында алынған қосындыдан арифметикалық прогрессия мүшелерінің мәндерін тізбелеп алады;
- екі қосалқы блок түрінде (Data и Cumulative Summation-A) құрылған ALTERNATIVE of the Single-Byte Summation блогында арифметикалық прогрессия мүшелерінің қосындысын анықтаудың перифериялық құрылғыларды пайдалану арқылы (IN, OUT) анықталатын өзгеше түрі жүзеге асырылады.
3.1.3 Assembler терезесінде выбрать Tools/Assemble&Load таңда.
3.1.4 Симулятордың негізгі терезесінде Tools/Breakpoints Manager таңдап, әрбір блоктан кейін, яғни NOP командасы тұрған жолдарға (2.2 суретті қара) тексерім нүктелерін қой.
3.1.5 Симулятор терезесінде Tools/Peripheral Devices терезесін аш. Ашылған Peripheral Devices терезесінде Device 1 түймесін басып, порт адресін 01 түрінде анықта да, сосын бұл портты IN жағдайына қой. Осы сияқты келесі порт адресін 02 түрінде анықтап, оны да IN жағдайына қой. Келесі порттардың адресін 03 және 04 түрінде анықтап, оларды OUT жағдайына қой (3.1 суретті қара).
3.1.6 Симулятордың негізгі терезесінде моделдеу жылдамдығын (мысалы, Rate/Normal) таңдап, симуляторды іске қос (Simulation/Start).
3.1.7 Бағдарламаның әрбір тексерім нүктесіндегі тоқталымында орындалған бағдарлама блогындағы командалардың іс-әрекетін және алынған нәтижелерін (микропроцессор регистрлері мен жадының сәйкесті ұяшықтарындағы) талда.
3.1.8 Моделдеу жылдамдығын (мысалы, Rate/...) таңдау арқылы симулятор жұмысын жалғастыр.
Алынған қосынды нәтижесінің өрнегі арқылы есептелген мәнге сәйкестігін тексер.
Қажетті жағдайда (оқытушының ұсынысы бойынша) бағдарламаның әрбір блоктарын жеке орында. Ол үшін бағдарламаның бірінші жолына JMP командасын қойып, оған қажетті блоктың белгісін жалға да, блок соңындағы NOP командасын HLT командасына ауыстыр.
3.1 Сурет
3.1.9 Микрокомпьютерді (зертханалық құралымды) іске дайындап (1.3 және 2.1.9 тарауларын қара) жады ұяшықтарына келтірілген бағдарламаның жеке блоктарындағы команда кодтарын енгіз.
3.1.10 Бағдарламаның әрбір блогын GO түймесін басып, блоктың бастапқы адресін енгізу арқылы іске қос (1.3 тарауын қара).
3.1.11 Орындалған бағдарлама блогында алынған нәтижелерді симуляторда алынған нәтижелермен салыстыр.
3.2 Тексерім сұрақтары
1. Бағдарламаның жеке блоктарындағы ауыстыру командаларының іс-әрекетін түсіндір.
2. Перифериялық құрылғылармен жұмыстың ұйымдастырылу принциптерін түсіндір.
4 Зертханалық жұмыс. Екібайтты арифметика
Жұмыс мақсаты:
- екібайтты операндтармен арифметикалық операциялар (қосу және алу) орындау тәртібімен танысу;
- екібайтты арифметикалық операцияларды орындаудың альтернативті мүмкіндігін игеру.
4.1 Жұмыс тапсырмасы
4.1.1 Симулятор бағдарламасын іске қос та, ашылған симулятор терезесінде Tools/Assembler таңдап, сосын File/New таңда.
4.1.2 Төмендегі бағдарламаны енгізіп, оны Double-Byte Arithmetic (Екібайтты арифметика) аталымымен сақта.
;DOUBLE-BYTE ARITMETIC
;Data Array (arithmetical progression)
LXI H,00E0H;initial address
MVI C,0AH;data quantity
MOV M,C
MVI A,00H;low byte
MVI B,12H;high byte
DD: ADI 15H;step of the low byte=15H
INR B;step of the high byte=01H
INX H
MOV M,A;loading in the low byte memory
INX H
MOV M,B;loading in the high byte memory
DCR C;monitoring of the data counter
JNZ DD;continue
NOP
CC: ;Cumulative Summation
;SUM=((2a1+(n-1)d)/2)n
;a1-first operand,n-quantity,d-step,
LXI H,00E0H;initial address
LXI D,0000H;temporary repository for the result
MOV B,M;installation of the data counter
MOV C,B;doublet of the data counter
CS: MOV A,E
INX H
ADD M;low byte
MOV E,A
MOV A,D
INX H
ADC M;high byte
MOV D,A
DCR B;monitoring of the data counter
JNZ CS;continue
NOP
AD: ;Addition with Direct Addressing
MOV A,E
ADI 3DH;low byte
MOV E,A
MOV A,D
ACI 5AH;high byte
MOV D,A
NOP
RR: ;Retention of the Result
INX H;
MOV M,E;low byte
INX H;
MOV M,D;high byte
NOP
SS: ;Series Subtraction
LXI H,00E0H
S0: MOV A,E
INX H
SUB M;low byte
MOV E,A
MOV A,D
INX H
SBB M;high byte
MOV D,A
DCR C;monitoring of the data counter
JNZ S0;continue
NOP
SD: ;Subtraction with Direct Addressing
MOV A,E
SUI 3DH;low byte
MOV E,A
MOV A,D
INX H
SBI 5AH;high byte
MOV D,A
NOP
AL: ;ALTERNATIVE of the Double-Byte Summation
LDA 00E0H
MOV C,A;data counter
LXI SP,00E1H;initial address
LXI H,0000H;Double-Byte Accumulator
AS: POP D;Pulling
DAD D;Double-Byte Summation
DCR C;monitoring of the data counter
JNZ AS;continue
LXI B,5A3DH
DAD B
HLT
Бұл бағдарлама келесі блоктардан тұрады:
- Data Array – жадыға арифметикалық прогрессия мүшелері түріндегі деректердің жазылуын жүзеге асырады (прогрессияның берілген параметрлерін (n = 0AH – мүшелер санын, a1 = 1200H – бірінші мүшенің мәнін, d = 0115 – прогрессия қадамын) жұмыстың орындалу барысында өзгертуге болады). Қалыптастырылған прогрессия мүшесі жадының екі ұяшығында сақталады (алдымен – кіші байты, сосын – үлкен байты);
- Cumulative Summation – бағдарламаның алдыңғы блогында жадыға жазылған арифметикалық прогрессия мүшелерінің қосындысын анықтайды;
- Addition with Direct Addressing – қосу операциясын тікелей сілтенімді командалар арқылы жүзеге асырады;
- Retention of Result – алынған қосынды нәтижесін жадыда сақтайды;
- Series Subtraction – алдында алынған қосындыдан арифметикалық прогрессия мүшелерінің мәндерін тізбелеп алады;
- Subtraction with Direct Addressing – алу операциясын тікелей сілтенімді командалар арқылы жүзеге асырады;
- ALTERNATIVE of the Double-Byte Summation – арифметикалық прогрессия мүшелерінің қосындысының екібайтты қосу командасы DAD арқылы анықталатын өзге жолын жүзеге асырады.
4.1.3 Assembler терезесінде выбрать Tools/Assemble&Load таңда.
4.1.4 Симулятордың негізгі терезесінде Tools/Breakpoints Manager таңдап, әрбір блоктан кейін, яғни NOP командасы тұрған жолдарға тексерім нүктелерін қой.
4.1.5 Симулятордың негізгі терезесінде моделдеу жылдамдығын (мысалы, Rate/Normal) таңдап, симуляторды іске қос (Simulation/Start).
4.1.6 Бағдарламаның әрбір тексерім нүктесіндегі тоқталымында орындалған бағдарлама блогындағы командалардың іс-әрекетін және алынған нәтижелерін (микропроцессор регистрлері мен жадының сәйкесті ұяшықтарындағы) талда.
4.1.7 Моделдеу жылдамдығын (мысалы, Rate/...) таңдау арқылы симулятор жұмысын жалғастыр.
Алынған қосынды нәтижесінің өрнегі арқылы есептелген мәнге сәйкестігін тексер.
Қажетті жағдайда (оқытушының ұсынысы бойынша) бағдарламаның әрбір блоктарын жеке орында. Ол үшін бағдарламаның бірінші жолына JMP командасын қойып, оған қажетті блоктың белгісін жалға да, блок соңындағы NOP командасын HLT командасына ауыстыр.
4.1.8 Микрокомпьютерді (зертханалық құралымды) іске дайындап (1.3-ті қара) жады ұяшықтарына келтірілген бағдарламаның жеке блоктарындағы команда кодтарын енгіз.
4.1.9 Бағдарламаның әрбір блогын GO түймесін басып, блоктың бастапқы адресін енгізу арқылы іске қос (1.3 тарауын қара).
4.1.10 Орындалған бағдарлама блогында алынған нәтижелерді симуляторда алынған нәтижелермен салыстыр.
4.2 Тексерім сұрақтары
1. Бағдарламаның жеке блоктарындағы ауыстыру командаларының іс-әрекетін түсіндір.
2. Тасымалды және тасымалсыз арифметикалық командалардың іс-әрекетінің айырмашылығын түсіндір.
3. Екібайтты деректерді DAD командасымен қосылуының ұйымдастырылу принциптерін түсіндір.
5 Зертханалық жұмыс. Программа умножения
Жұмыс мақсаты:
- екі бірбайтты санды арифметикалық көбейту бағдарламасын құру тәртібін түсіну;
- перифериялық құрылғылармен жұмыс ұйымдастырылуының принциптерін игеру.
5.1 Көбейту алгоритмі
Intel 8085 микропроцессорында көбейту командасы жоқ, сондықтан көбейту операциясын орындау үшін сәйкесті бағдарлама құру керек болады. Көбейту алгоритмін анықталық. Машина алгоритмін көрнек түсіндіру мақсатында төменде ондық сандардың көбейтілімінің мектеп қабырғасынан белгілі үш түрлі жүзеге асырылу алгоритмі келтірілген:
|
|
|
Бірінші жазылымда көбейткіштің разряд мәндерін өзімізге үйреншіктікті оңнан солға қарай алып көбейту тәртібі келтірілген. Екінші жазылымда көбейткіштің разряд мәндерін солдан оңға қарай алып көбейту тәртібі келтірілген. Цифрлық құрылғыларда қосу операциясы екі санға ғана жүргізілетініне байланысты ондық сандардың жеке көбейтінділерінің солай қосылғаны үшінші жазылымда келтірілді. Бұнда төртразрядты сандардың көбейтіндісі сегізразрядты болатындығы ескеріліп, операция басында нәтиже нөл мәнінде алынды және ығыстыру операциясы (олар бағыттама арқылы көрсетілген) әрбір жеке көбейту операцияларының алдында жүргізіліп, жазылым қосу операцияларын орындауға ыңғайландырылды. Тап осы жазылым тәртібі екілік сандарды цифрлық құрылғыда көбейтуге ыңғайлы келеді. Сонымен, бірбайтты екілік сандарды көбейту алгоритмі келесі тәртіппен жүзеге асырылады:
- сегізразрядты сандардың көбейтілу нәтижесі оналтыразрядты сан болатындықтан және жеке қосылымдардың да оналтыразрядты сандарға жүргізілетіндігіне байланысты, оналтыразрядты аккумулятор ретінде HL регистрлік жұбы алынып, ол операция басында тазартылады;
- DE регистрлік жұбының E регистріне бірінші сан (көбейтілгіш), ал оның D регистріне нөл енгізіліп, көбейтілгіш қосуға ыңғайлы оналтыразрядты санға айналдырылады;
- екінші сан (көбейтілгіш) оның разрядтарын ығыстырып шығару үшін аккумуляторға (сөзімізді шатыстырмас үшін, оны бұдан әрі A регистрі деп атаймыз) енгізіледі;
- ығыстыру операциясының санын бақылап отыру үшін, көбейткіштің разряд саны микропроцессордың бір регистріне (мысалы, С регистріне) енгізіледі;
- әрбір жеке көбейту алдында осы мезетке дейін жиналған нәтиже (HL жұбындағы) солға ығыстырылады;
- ығыстыру арқылы А регистрінен шығарылған көбейткіштің кезекті разрядының мәні нөл болғанда, жеке көбейту осымен бітеді (яғни, алдыңғы ығыстырыммен);
- А регистрінен шығарылған көбейткіштің кезекті разрядының мәні бір болғанда, HL жұбына DE жұбы қосылады;
- әрбір жеке көбейтілімнен кейін санауыш құрамы бірге кемітіледі де, оның нөлге тең болған кезінде көбейту бағдарламасы өз жұмысын тоқтатады.
Сонымен, ығыстыру операциясы сегіз рет жүргізіледі, ал қосу операциясының саны көбейткіштің құрамындағы бірліктердің санымен анықталады.
5.2 Жұмыс тапсырмасы
5.2.1 Симулятор бағдарламасын іске қос та, ашылған симулятор терезесінде Tools/Assembler таңдап, сосын File/New таңда.
5.2.2 Төмендегі бағдарламаны енгізіп, оны Multiplication (Көбейту) аталымымен сақта.
M: ;MULTIPLICATION
;Data
IN 01H
MOV E,A
MVI D,00H
IN 02H
LXI H,0000H
MVI C,08H
;Implementation
M1: DAD H
RLC
JNC M2
DAD D
M2: DCR C
JNZ M1
MOV A,L
OUT 03H
MOV A,H
OUT 04H
HLT
Бұл бағдарлама екі блоктан тұрады: Data блогында көбейткіштер мәнінің енгізілуі және деректердің көбейтуге дайындалымы, ал Implementation блогында енгізілген деректердің көбейтілуі жүзеге асырылады.
5.2.3 Assembler терезесінде выбрать Tools/Assemble&Load таңда.
5.2.4 Симулятор терезесінде Tools/Peripheral Devices аш та, онда порт адрестерін 01…04 арасында анықтап, екі портты (01 және 02 адресті) – IN жағдайына, ал қалғанын OUT жағдайына қой.
5.2.5 Симулятордың негізгі терезесінде Tools/Breakpoints Manager таңдап, тексерім нүктесін DAD H командасы тұрған жолға (яғни, жеке көбейтілімдердің жүзеге асырылар алдында) қой.
5.2.6 Симулятордың негізгі терезесінде моделдеу жылдамдығын (мысалы, Rate/Normal) таңдап, симуляторды іске қос (Simulation/Start).
5.2.7 Бағдарламаның тексерім нүктесіндегі әрбір тоқталымында орындалған бағдарлама блогындағы командалардың іс-әрекетін және алынған нәтижелерін (микропроцессор регистрлері мен жадының сәйкесті ұяшықтарындағы) талда.
5.2.8 Моделдеу жылдамдығын (мысалы, Rate/...) таңдау арқылы симулятор жұмысын жалғастыр.
5.2.9 Микрокомпьютерді (зертханалық құралымды) іске дайындап (1.3 тарауын қара) жады ұяшықтарына келтірілген бағдарламаның жеке блоктарындағы команда кодтарын және көбейткіштер мәнін енгіз.
5.2.10 Бағдарламаны GO түймесін басып және оның бастапқы адресін енгізу арқылы іске қос (1.3 тарауын қара).
5.2.11 Орындалған бағдарлама блогында алынған нәтижелерді симуляторда алынған нәтижелермен салыстыр.
5.3 Тексерім сұрақтары
1. Көбейту операциясын жүзеге асыруға арналған бағдарламаның негізіне алынған алгоритмді түсіндір.
2. Көбейту бағдарламасының құрылымын түсіндір.
6 Зертханалық жұмыс. Стекпен жұмыс
Жұмыс мақсаты:
- қосалқы бағдарламалармен жұмыстың ұйымдастырылу принциптерін игеру;
- стекпен жұмыстың ұйымдастырылу принциптерін игеру.
6.1 Мәселе қойылымы
Микропроцессорлық жүйе жұмысының негізгі бағдарламасының құрамында әдетте, одан шақырылатын және нақтылы мәселелерді шешуге арналған, бірнеше қосалқы бағдарлама болады.
Қосалқы бағдарламалармен жұмыс ұйымдастырылуы кезінде шақырылған бағдарлама орындалып біткеннен кейін негізгі бағдарламаға қайту мүмкіндігін қамтамасыз ету керек. Ол үшін жадының жеке бір аймағы стекке бөлінеді де, оның түбі стек көрсеткіші SP ретінде белгіленеді.
Қосалқы бағдарламаның шақырылуы кезінде, ол орындалып біткеннен кейін қайтып келетін негізгі бағдарламаның келесі командасының адресі стекте сақталады. Әрбір қосалқы бағдарлама, негізгі бағдарламаға қайтуды қамтамасыз ететін, RET командасымен аяқталу керек.
Қажетті жағдайда регистрлердегі (дәлірек айтқанда, регистрлік жұптардағы) деректерді де стекте PUSH командасымен сақтап, сосын оларды стектен POP командасымен оқуға болады.
Қосалқы бағдарламалармен және стекпен жұмыс ұйымдастырылу тәртібін қарастыру мақсатында y = a1*a2 + a3*a4 + өрнегі бойынша есептеу бағдарламасы қарастырылады.
6.2 Жұмыс тапсырмасы
6.2.1 Симулятор бағдарламасын іске қос та, ашылған симулятор терезесінде Tools/Assembler таңдап, сосын File/New таңда.
6.2.2 Төмендегі бағдарламаны енгізіп, оны Stack (Стек) аталымымен сақта.
;SUM=a1*a2+a3*a4+sum(ai,n,d)
LXI SP,0FFH
MVI B,0A0H
;mul1=a1*a2
IN 01H;first multiplier
MOV E,A
IN 02H;second multiplier
CALL MUL
PUSH H
CALL PER
NOP
;mul2=a3*a4
IN 01H;first multiplier
MOV E,A
IN 02H;second multiplier
CALL MUL
PUSH H
CALL PER
NOP
;sum(ai,n,d)
IN 01H;quantity - n
MOV C,A
IN 02H;step - d
MOV D,A
IN 01h;first operand - a1
MOV D,A
LXI H,0000H
CALL SUM
CALL PER
NOP
;S3
POP D
DAD D
POP D
DAD D
CALL PER
HLT
MUL: ;Multiplication (subroutine)
MVI D,00H
LXI H,0000H
MVI C,08H
M1: DAD H
RLC
JNC M2
DAD D
M2: DCR C
JNZ M1
RET
SUM: ;Cumulative Summation (subroutine)
CS3: MOV A,E
ADD D
MOV E,A
MOV A,L
ADD E
JNC CS4
INR H
CS4: MOV L,A
DCR C
JNZ CS3
RET
PER: ;Displaying on the Periphery
;and Writing on the Memory
MOV C,B
MVI B,00H
MOV A,L
OUT 03H
STAX B
INR C
MOV A,H
OUT 04H
STAX B
INR C
MOV B,C
RET
Бағдарламаның негізгі бөлігі келесі блоктардан тұрады:
- SUM – негізгі бағдарламаның басы, онда стек көрсеткішінің мәні SP және нәтижелерді шығару құрылғысында көрсетуге арналған қосалқы бағдарламаның жұмысын ұйымдастыруға қажетті информация қойылады;
- mul1 и mul2 – көбейтуге арналған деректер енгізіледі де, сосын – көбейту бағдарламасы, одан кейін нәтиже көрсету бағдарламасы шақырылады;
- sum – қосуға арналған деректер енгізіліп, содан соң – қосу бағдарламасы, одан кейін нәтиже көрсету бағдарламасы шақырылады;
- S3 – ақырғы нәтиже, яғни алдыңғы кезеңдерде алынған жеке нәтижелердің қосындысы есептеледі.
Бағдарламада үш қосалқы бағдарлама пайдаланылады:
- Multiplication – шақырылар алдында енгізілген екі санның көбейтілуін жүзеге асырады;
- Cumulative Summation – алдын-ала енгізілген деректердің қосындысын есептейді;
- Displaying – қосалқы бағдарламаларда алынған нәтижелердің сыртқы құрылғыда шығарылуын және олардың жадыда сақталуын жүзеге асырады.
6.2.3 Assembler терезесінде выбрать Tools/Assemble&Load таңда.
6.2.4 Симулятор терезесінде Tools/Peripheral Devices аш та, онда порт адрестерін 01…04 арасында анықтап, екі портты (01 және 02 адресті) – IN жағдайына, ал қалғанын OUT жағдайына қой.
6.2.5 Симулятордың негізгі терезесінде Tools/Breakpoints Manager таңдап, негізгі бағдарламаның әрбір блогынан кейін, яғни NOP командалары тұрған жолдарға тексерім нүктелерін қой.
6.2.6 Симулятордың негізгі терезесінде моделдеу жылдамдығын (мысалы, Rate/Normal) таңдап, симуляторды іске қос (Simulation/Start).
6.2.7 Бағдарламаның әрбір тексерім нүктесіндегі тоқталымында орындалған бағдарлама блогындағы командалардың іс-әрекетін және алынған нәтижелерін (микропроцессор регистрлері мен жадының сәйкесті ұяшықтарындағы) талда.
6.2.8 Моделдеу жылдамдығын (мысалы, Rate/...) таңдау арқылы симулятор жұмысын жалғастыр.
6.2.9 Микрокомпьютерді (зертханалық құралымды) іске дайындап (1.3 тарауын қара), жады ұяшықтарына келтірілген бағдарламаның жеке блоктарындағы команда кодтарын және көбейткіштер мәнін енгіз.
6.2.10 Бағдарламаны GO түймесін басып және оның бастапқы адресін енгізу арқылы іске қос (1.3-ті қара).
6.2.11 Орындалған бағдарлама блогында алынған нәтижелерді симуляторда алынған нәтижелермен салыстыр.
6.3 Тексерім сұрақтары
1. Қосалқы бағдарламалармен жұмыс ұйымдастырылу принциптерін түсіндір.
2. Стекпен. жұмыс ұйымдастырылу принциптерін түсіндір.
Әдебиеттер тізімі
1. Шанаев О.Т. Микропроцессорлық техника негіздері. 1-бөлім. Зертханалық жұмыстарға арналған әдістемелік нұсқаулар. – Алматы: АЭжБУ, 2011.
2. Шанаев О.Т. Микропроцессорлық техника негіздері. 2-бөлім. Зертханалық жұмыстарға арналған әдістемелік нұсқаулар. – Алматы: АЭжБУ, 2011.
3. Шанаев О.Т. Цифрлық құрылғылар және микропроцессорлар: Оқу құралы / Алматы: АЭжБИ, 2009.
4. Шанаев О.Т. Микропроцессорлық жүйелер: Оқу құралы / Алматы: АЭжБИ, 2009.
5. Шанаев О.Т. Electronic Workbench моделдеу жүйесі / қазақ және орыс тілдерінде. – Алматы: АИЭС, 2003.
6. Токхайм Р. Микропроцессоры. Курс и упражнения: Пер. с. англ. – М.: Мир, 1988.
7. Угрюмов Е. П. Цифровая схемотехника. – СПб.: БХВ-Петербург, 2004.
8. Сугано Т. Дж., Уидмер Н. С. Цифровые системы. Теория и практика: Пер. с англ. – М.: Издательский дом “Вильямс”, 2004.
9. Хамахер К. И др. Организация ЭВМ. Пер. с. англ. – СПб.: Питер, 2003.
10. Уэйкерли Дж. Ф. Проектирование цифровых устройств: Пер. с. англ. – М.: Постмаркет, 2002.
Мазмұны
1 Қажетті мәліметтер мен жалпы әдістемелік ұсынылымдар
2 Зертханалық жұмыс. Дерек жіберілімдері
3 Зертханалық жұмыс. Бірбайтты арифметика
4 Зертханалық жұмыс. Екібайтты арифметика
5 Зертханалық жұмыс. Программа умножения
6 Зертханалық жұмыс. Стекпен жұмыс
Жинақ жоспар 2011 ж., орны 207