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

2.3.2. Тарамдалымды бағдарламалар

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

 

 

 

 

 

 

 

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

1

2140

21

 

LXI

2250H

; HL ← 2250

2

2141

50

 

 

 

 

3

2142

22

 

 

 

 

4

2143

4E

 

MOV

C, M

; C ← [(HL)]

5

2144

97

 

SUB

A

; A ← 00

6

2145

47

 

MOV

B, A

; B ← 00

7

2146

23

K1:

INX

H

; HL ← (HL) + 1

8

2147

86

 

ADD

M

; A ← (A) + [(HL)]

9

2148

D2

 

JNC

K2

; TC  1: PC ← 214C

10

2149

4C

 

 

 

 

11

214A

80

 

 

 

 

12

214B

04

 

INR

B

; B ← (B) + 1

13

214C

23

K2:

INX

H

; HL ← (HL) + 1

14

214D

0D

 

DCR

C

; C ← (C) – 1

15

214E

C2

 

JNZ

K1

; TZ  1: PC ← 2146

16

214F

46

 

 

 

 

17

2150

21

 

 

 

 

18

2151

C9

 

RET

 

; PC ← [(SP)]

 

Бағдарламаны үш бөліктен (кезеңнен) тұрады деп қарастыруға болады, олар: дайындық кезеңі, қызмет кезеңі және нәтижені шығару кезеңі. Бағдарламаның дайындық кезеңінде LXI командасы арқылы жанама сілтеу регистрлеріне (яғни, HL жұбына) жадының жұмысқа қажетті бірінші ұяшығының адресі жазылды (1-жол), сосын ондағы операндтар саны микропроцессордың С регистріне әкелінді (4-жол), бұдан кейін аккумулятор бірбайтты SUB (алу) командасы арқылы (5-жол), B регистрі оған аккумуляторды көшіру арқылы тазартылды (6-жол).

Бағдарламаның негізгі өңдеу жұмысын атқару бөлігі (қызмет кезеңі) 7...16 жолдар арасында орналасқан. Бұнда алдымен жанама сілтеу регистріндегі (яғни, HL жұбындағы) адрес ұлғайтылып (7-жол), сосын осы адрес арқылы алынған операнд аккумуляторға қосылады (8-жол). Бұдан кейін нәтиженің сегіз разрядтан асып кетуі (яғни, тасымал шығуы) JNC командасымен тексеріледі де (9-жол), тасымал тууы кезінде B регистрі бірге ұлғайтылады (12-жол), ал оның тумаған кезінде бұл команда орындалмайды. 14-жолдағы DCR командасы арқылы операндтардың санауышы (C регистрі) бірге кемітіліп, операндтардың біткен-бітпегендігі тексеріліп (15-жол), олар бітпеген жағдайында бағдарламаның негізгі жұмысы (біздің жағдайда – қосу операциялары) әрі қарай жалғастырылады (бағдарламаның бұндай құрылымы айналымды құрылым деп аталады), ал олардың біткен жағдайында бағдарлама нәтижені шығару кезеңіне ауыстырылады.

Бұл бағдарламада нәтиже екібайтты сан түрінде екі регистрде қалыптасады: оның кіші байты аккумуляторда, ал үлкен байты В регистрінде болады. Бұл бағдарламаның болашақта қосалқы бағдарлама ретінде пайдаланылу мүмкіндігін қамтамасыз ету үшін ол RET командасымен аяқталды (18-жол).

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