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

2.3.7. Көбейту бағдарламасы

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

 

Бірінші жазылымда көбейткіштің разряд мәндерін өзімізге үйреншіктікті оңнан солға қарай алып көбейту тәртібі келтірілген. Екінші жазылымда көбейткіштің разряд мәндерін солдан оңға қарай алып көбейту тәртібі келтірілген. Цифрлық құрылғыларда қосу операциясы екі санға ғана жүргізілетініне байланысты ондық сандардың жеке көбейтінділерінің солай қосылғаны үшінші жазылымда келтірілді. Бұнда төртразрядты сандардың көбейтіндісі сегізразрядты болатындығы ескеріліп, операция басында нәтиже нөл мәнінде алынды және ығыстыру операциясы (олар бағыттама арқылы көрсетілген) әрбір жеке көбейту операцияларының алдында жүргізіліп, жазылым қосу операцияларын орындауға ыңғайландырылды. Тап осы жазылым тәртібі екілік сандарды цифрлық құрылғыда көбейтуге ыңғайлы келеді. Сонымен, бірбайтты екілік сандарды көбейту алгоритмі келесі тәртіппен жүзеге асырылады:

        сегізразрядты сандардың көбейтілу нәтижесі оналтыразрядты сан болатындықтан және жеке қосылымдардың да  оналтыразрядты сандарға жүргізілетіндігіне байланысты, оналтыразрядты аккумулятор ретінде HL регистрлік жұбы алынып, ол операция басында тазартылады;

       DE регистрлік жұбының E регистріне бірінші сан (көбейтілгіш), ал оның D регистріне нөл енгізіліп, көбейтілгіш қосуға ыңғайлы оналтыразрядты санға айналдырылады;

       екінші сан (көбейтілгіш) оның разрядтарын ығыстырып шығару үшін аккумуляторға (сөзімізді шатыстырмас үшін, оны бұдан әрі A регистрі деп атаймыз) енгізіледі;

       ығыстыру операциясының санын бақылап отыру үшін, көбейткіштің разряд саны микропроцессордың бір регистріне (мысалы, С регистріне) енгізіледі;

       әрбір жеке көбейту алдында осы мезетке дейін жиналған нәтиже (HL жұбындағы) солға ығыстырылады;

       ығыстыру арқылы А регистрінен шығарылған көбейткіштің кезекті разрядының мәні нөл болғанда, жеке көбейту осымен бітеді (яғни, алдыңғы ығыстырыммен);

       А регистрінен шығарылған көбейткіштің кезекті разрядының мәні бір болғанда, HL жұбына DE жұбы қосылады.

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

 Жадының 22E0- және 22E1-ұяшықтарындағы сандарды келтірілген алгоритм бойынша көбейту бағдарламасын келесі түрде құруға болады:

 

 

 

 

 

 

 

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

1

2200

3A

 

LDA

22E0H

; A ← [22E0]

2

2201

E0

 

 

 

 

3

2202

22

 

 

 

 

4

2203

5F

 

MOV

E, A

; E ← (A)

5

2204

3A

 

LDA

22E1H

; A ← [22E1]

6

2205

E1

 

 

 

 

7

2206

22

 

 

 

 

8

2207

16

 

MVI

D, 00H

; D ← 00

9

2208

00

 

 

 

 

10

2209

21

 

LXI

H, 0000H

; HL ← 0000

11

220A

00

 

 

 

 

12

220B

00

 

 

 

 

13

220C

0E

 

MVI

C, 08H

; C ← 08

14

220D

08

 

 

 

 

15

220E

29

K5:

DAD

H

; HL ← (HL) + (HL)

16

220F

07

 

RLC

 

; TC←A7

17

2210

D2

 

JNC

K6

; TC = 0: PC ← 2214

18

2211

14

 

 

 

 

19

2212

22

 

 

 

 

20

2213

19

 

DAD

D

; HL ← (HL) + (DE)

21

2214

0D

K6:

DCR

C

; C ← (C) – 1

22

2215

C2

 

JNZ

K5

; TZ = 0: PC ← 220E

23

2216

0E

 

 

 

 

24

2217

22

 

 

 

 

25

2218

C9

 

RET

 

; PC ← [(SP)]

 

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

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