Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ Прог ЦТ лаб_каз_2012_последн вариант.doc
Скачиваний:
18
Добавлен:
01.05.2015
Размер:
4.19 Mб
Скачать

4 Зертханалық жұмыс. Көбейту және бөлу

Жұмыс мақсаты: көбейту және бөлуді орындау алгоритмін оқып, сандарды салыстыру мен алгоритмді тармақтауды орындауды үйрену.

4.1 Зертханалық жұмыс тапсырмасы және берілгендер

6 санын 0,8-ге көбейтуді орындау мысалын оқыңыз. Алдымен калькуляторда жуықпен берілген коэффициентті алу үшін бүтін көбейткішін және бүтін бөлгішін келтіріп аламыз. Бұл жағдайда көбейткіш 4және бөлгіш5 дәл келеді,өйткені4/5=0,8.Ары қарай берілген санды 4 көбейтеміз де нәтижесін 5-ке бөлеміз.Қалдығы өткізілген есептеулердің қателігін көрсетеді. Көбейту және бөлуді ішкі программалар түрінде жазамыз.

4.1 кесте – Бүтін бөлу алгоритмі

Цикл

Бүтін бөлігі

Жұмысшы регистрі

Әрекет

Жұмыс регистрі

«С» битінің мәні

С=0?

Әрекет

1

1

35

Rab_peg= Rab_peg- Delitel

25

1

Жоқ

Циклды қайталау

2

2

25

15

1

Жоқ

Циклды қайталау

3

3

15

5

1

Жоқ

Циклды қайталау

4

4

5

-5

0

Иә

1 қадамға артқа қайтамыз

3

5

Қалдық =5

Бөлу нәтижесі: бүтін бөлігі =3, қалдық =5, яғни 35/10=3 (5)

Л4 көбейту және бөлу программасының фрагменті.

Микробақылауыштың стандартты реттеулері келтірілмеген.

; Программаның жұмыс бөлігі

CLRF PORTC ; PORTC-ға нөл жазу (жарықдиодтарын өшіру).

CLRF Delitel ; бөлгіш адресін тазарту.

; 60,8 көбейтеміз, =64/5=4(4)

MOVLW D'6'

MOVWF Chislo ; берілген сан

MOVWF Umn_Chislo ; Umnozhenie ішкі прогаммасындағы регистр

MOVLW D'4'

MOVWF Mnozh ;көбейткіш.

MOVLW D'5'

CALL Umnozhenie ; ішкі прогаммадан кейін көбейтінді Pr -ға жазылады.

; Бөлуге дайындық

Movf Pr, W ; Pr мәні Umnozhenie ішкі прогаммасынан алынады.

Movwf Delimoe

Movlw D'5'

movwf Delitel ; егер мәні берілмесе 0-ге бөлу болады.

CALL Delenie

Goto$

; Ішкі программа.

Umnozhenie ; Umn_Chislo және Mnozh кірістері, шығысы Pr.

Clrf Pr

Clrf Kol_slag

Sled_slag

Movf Pr, W

Addwf Umn_Chislo, W ; келесі қосылғышты қосу.

Movwf Pr

Incf Kol_slag, F ; қосылғыштар санын есептейміз.

MOVF Kol_slag, W

XORWF Mnozh, F ; Kol_slag=Mnozh теңдігін маскалау арқылы тексеру.

BTFSS STATUS, Z

Goto Sled_slag ; Z=0 болғанда орындалады.

RETURN

; Ішкі программа.

Delenie ; Delimoe, Delitel кірістері, Chastnoe, Ostatok шығыстары.

CLRF Chastnoe

Movf Delimoe, W;

MOVWF Rab_peg ; Delimoe .

MOVF Delitel, W ; нөлге тексеру.

BTFSC STATUS, Z ; нөлге бөлуден қорғау.

GOTO NUL ; Z=1 болғанда орындалады.

Metka

INCF Chastnoe, F ;бүтін бөліктің мәнін санау.

SUBWF Rab_peg, F ; Rab_peg=Rab_peg – Delitel шегереміз.

BTFSC STATUS, C ;айырмасы теріс екендігін тексереміз?

GOTO Metka ; C=1 болғанда орындалады.

; Бір қадамға кейін қайту

DECF Chastnoe, F ; бүтін бөлікті қайта орнына келтіреміз.

ADDWF Rab_peg, W ; Rab_peg қайта орнына келтіреміз.

MOVWF Ostatok ; қалдықты аламыз.

RETURN

NUL MOVLW D'255' ; нөлге бөлген кезде программаны аяқтау белгісі.

MOVWF PORTC ; нөлге бөлу болғаны жайлы сигнал береміз.

GOTO $

END

Қолданылған жалпы қызмет регистрлері 4.1 суретте келтірілген.

Зертханалық жұмысқа тапсырма. 4.2 кестедегі нұсқа үшін бөлшек санға көбейту программасын жазыңыз.