Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
TsUiMP_lektsia.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
246 Кб
Скачать
☆

2.3.9. Шешім қабылдау бағдарламалары

Микропроцессорлық басқару жүйелері, негізінде, оның ішінде туған немесе оған сырттан түскен сигналдардың мәніне байланысты шешім қабылдап, сәйкесті құрылғыларды іске қосу немесе оларды жүйе желісінен ажырату арқылы жұмыс істейді. Бұндай жағдайларды суреттейтін бірнеше мысал келтірелік:

       алшақ орналасқан екі құрылғының арасында тізбелі түрде жіберілген информацияның дұрыс жеткендігі міндетті түрде жұптық белгісі арқылы тексеріледі;

       микропроцессордың RSTn кірістеріне сыртқы құрылғылардың біреуінен түскен үзіліс сұранысына байланысты қосалқы бағдарламаға ауысу туралы шешім үзілістерге жалпы рұқсаттың алдын ала берілгендігіне (EI (Enable Interrupt) командасымен қойылған) немесе оларға тиым салынғандығына (DI (Disable Interrupt) командасымен қойылған) байланысты қабылданады. Үзіліс сұранысының жұмысына рұқсат берілген жағдайда, сәйкесті қосалқы бағдарламаның бастапқы адресі кіріс нөмірінің мәніне (n = 5,5; 6,5; 7,5) байланысты (8n) анықталады (002СН, 0034Н немесе ООЗСН);

       параллель адаптердің қай портының (PA, PB, PCH, PCL) іске қосылатындығы, оның қай бағытта (енгізу немесе шығару) дерек жіберетіндігі және қандай режимде (0, 1, 2) істейтіндігі оған жіберілген режимдік басқару сөзінің (БС1) сәйкесті разрядтарының мәндеріне байланысты анықталады. Екінші басқару сөзімен (БС2, ол қою/тазарту сөзі деп аталады) С портының жолдары арқылы жіберілетін басқару сигналдарының деңгейлері (0 немесе 1) қойылады. Басқару сөздерінің қайсысы (БС1 немесе БС2) келгендігі оның екілік кодының жетінші разрядының мәніне байланысты анықталады. Және т.б.

Бағдарламалы шешімдер көптеген жағдайда логикалық командалар арқылы жүзеге асырылады. Олардың орындалу тәртібін суреттеу мақсатында жадының 2300-ұяшығынан бастап орналастырылған таңбалы жетіразрядты 50 санға келесі операциялардың орындалу керек:

a)     жұп мәнді теріс сандардың үлкен тетрадасының разряд мәндерін нөлге айналдыру керек;

b)    тақ мәнді теріс сандардың үлкен тетрадасының разряд мәндерін бірге айналдыру керек;

c)     жұп мәнді оң сандардың кіші тетрадасының разряд мәндерін бірге айналдыру керек;

d)    тақ мәнді оң сандардың барлық разряд мәнін терістеу керек.

Әртүрлі сілтемелі логикалық командаларды пайдалану арқылы қойылған мәселелердің орындалуын келесі бағдарламамен жүзеге асыруға болады:

 

 

 

 

 

 

 

; 11-бағдарлама

1

2260

31

 

LXI

SP, 2400H

; HL ← 2400

2

2261

00

 

 

 

 

3

2262

24

 

 

 

 

4

2263

21

 

LXI

H, 23A0

; HL ← 2300

5

2264

00

 

 

 

 

6

2265

23

 

 

 

 

7

2266

0E

 

MVI

C, 32H

; C← 3216 = 5010

8

2267

32

 

 

 

 

9

2268

16

 

MVI

D, 0FH

; D ← 0F16 = 000011112

10

2269

0F

 

 

 

 

11

226A

1D

 

MVI

E, F0H

; E ← F016 = 111100002

12

226B

F0

 

 

 

 

13

226C

7E

K7:

MOV

A, M

; A ← [(HL)]

14

226D

47

 

MOV

B, A

; B ← (A)

15

226E

07

 

RLC

 

;  A7-1 ← (A6-0), A0 ← (A7),

; TC←A7

16

226F

0F

 

RRC

 

; A6-0 ← (A7-1), A7 ← (TC),

; TC←A0

17

2270

DC

 

CС

2280H

; TC = 1: SP ← (PC),PC ← 2280

18

2271

80

 

 

 

 

19

2272

22

 

 

 

 

20

2273

DA

 

JC

K8

; TC = 1: PC ← 2279

21

2274

79

 

 

 

 

22

2275

22

 

 

 

 

23

2276

CD

 

CALL

2290H

; SP ← (PC), PC ← 2290

24

2277

90

 

 

 

 

25

2278

22

 

 

 

 

26

2279

77

K8:

MOV

M, A

; [(HL)] ← (A)

27

227A

0C

 

INR

C

; C ← (C) – 1

27

227B

C2

 

JNZ

K7

; TZ = 0: PC ← 226C

28

227C

6A

 

 

 

 

29

227D

22

 

 

 

 

30

227E

76

 

HLT

 

; Тоқтатылым

31

227F

 

 

 

 

 

32

2280

E6

 

ANI

01

; A ← (A) ۸ 01

33

2281

01

 

 

 

 

34

2282

CA

 

JZ

K9

; TZ = 1: PC ← 228A

35

2283

8A

 

 

 

 

36

2284

22

 

 

 

 

37

2285

78

 

MOV

A, B

; A ← (B)

38

2286

A2

 

ANA

D

; A ← (A) ۸ (D)

39

2287

CA

 

JMP

KA

; PC ← 228C

40

2288

8C

 

 

 

 

41

2289

22

 

 

 

 

42

228A

78

K9:

MOV

A, B

; A ← (B)

43

228B

B3

 

ORA

E

; A ← (A) ۷  (E)

44

228C

C9

KA:

RET

 

; PC ← [(SP)]

45

228D

 

 

 

 

 

46

228E

 

 

 

 

 

47

228F

 

 

 

 

 

48

2290

E6

 

ANI

01

; A ← (A) ۸ 01

49

2291

01

 

 

 

 

50

2292

CA

 

JZ

KC

; TZ = 1: PC ← 229B

51

2293

9B

 

 

 

 

52

2294

22

 

 

 

 

53

2295

78

 

MOV

A, B

; A ← (B)

54

2296

F6

 

ORI

0FH

; A ← (A) ۷  0F

55

2297

0F

 

 

 

 

56

2298

C3

 

JMP

KD

; PC ← 229E

57

2299

9E

 

 

 

 

58

229A

22

 

 

 

 

59

229B

78

KC:

MOV

A, B

; A ← (B)

60

229C

EE

 

XRI

FF

; A ← (A)  FF

61

229D

FF

 

 

 

 

62

229E

C9

KD:

RET

 

; PC ← [(SP)]

 

Бұл бағдарлама қосалқы бағдарламалармен жұмыс істейтін болғандықтан, оларға ауысу кезінде негізгі бағдарламаға қайту мүмкіндігін қамтамасыз ету үшін негізгі бағдарламаның дайындық кезеңінің басында (1-жол) жадының нақтылы аймағы стекке бөлініп, оның түбі (SP) белгіленді.

Жанама сілтеу регистрлеріне (яғни, HL жұбына) бірінші операндтың адресі енгізіліп (4-жол), С регистріне жадыдан шығарылатын операндтардың саны жазылды (7-жол). Сосын D және E регистрлеріне болашақ операцияларға қажетті тұрақты операндтар енгізілді (9-, 11-жолдар).

Негізгі бағдарламаның қызмет кезеңінде кезекті сан аккумуляторға (13-жол) және В регистріне енгізілді (14-жол). Аккумулятор солға ығыстырылып (15-жол), оның ығысып шыққан 7-разрядының мәні (TC) арқылы бұл санның таңбасы анықталады да (TC = 0 – оң сан, TC = 1 – теріс сан), сәйкесті қосалқы бағдарлама шақырылады (17-, 23-жолдар).

Бірінші қосалқы бағдарламада (32…44-жолдар) теріс санға байланысты мәселелер шешіледі. Санның жұптығы (немесе тақтығы) оның кіші разрядының мәніне (0 – жұп сан, 1 – тақ сан) байланысты анықталады (32-жол).

D регистріндегі тұрақтымен (00001111) жүргізілген логикалық көбейту операциясы (38-жол) жұп санның үлкен тетрадасының разряд мәндерін нөлге айналдырады, ал E регистріндегі тұрақтымен (11110000) жүргізілген логикалық қосу операциясы (43-жол) жұп санның үлкен тетрадасының разряд мәндерін бірге айналдырады.

Екінші қосалқы бағдарламада (48…62-жолдар) оң санға байланысты мәселелер шешіледі. Санның жұптығы (немесе тақтығы) алдыңғы қосалқы бағдарламадағыдай анықталады (48-жол).

Тіке сілтемелі ORI командасы арқылы 0F (00001111) тұрақтысымен  жүргізілген логикалық қосу операциясы (54-жол) тақ санның үлкен тетрадасының разряд мәндерін бірге айналдырады, ал XRI командасы арқылы FF (11111111) тұрақтысымен  жүргізілген екілік қосу операциясы (60-жол) тақ санның барлық разряд мәнін терістейді.

Жоғарыда келтірілген бағдарламаларды (яғни, олардың екінші (жады ұяшығының адрестері) және үшінші (команда кодтары мен операндтар) бағаналарындағы мәліметтерді) оқу жүйесінде пайдаланылатын микропроцессорлық жүйелердің зертханалық құрылымдарының жадысына енгізіп, олардың жұмысын тексеруге болады. Тексерімді (яғни, микропроцессордың регистрлері мен жады ұяшықтарындағы өзгерістерді) бағдарлама жұмысы толықтай біткен кезде немесе әрбір команданың орындалғанынан кейін (ол қадамдық режим деп аталады) жүргізуге болады. Зертханалық құрылымның құрамында ассемблер тілінде құрылған бағдарламаларды машина тіліне аударушы Ассемблер бағдарламасы болған жағдайда, әрине, оларға бағдарлама мнемоникалық жазылым түрінде енгізіледі. 

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]