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

10.4 Бақылау сұрақтары

  1. Event,Sum, _Work,W, _Status,Status мәндерін қалай қалпына келтіруге болады?

  2. Үзуді өңдегіштен бас программаға арналған ішкі программаны шақыруға болады ма?

  3. Үзу дегеніміз не?

  4. Үзуге рұқсат қалай беріледі?

  5. Үзу флагының қызметі?

  6. Контакттар «дребезгі» дегеніміз не?«Дребезгтен» қорғау.

  7. Фондық программа дегеніміз не?

  8. Үзу векторы қай адресте орналасқан?

  9. Қайта жіберу векторы дегеніміз не?

  10. Status регистрін сақтау үшін неге SWAPF командасы қолданылады?

  11. Тәжірибеде программаның күткен нәтижесін бұзатын қандай бөгеттер (помехи, наводки) бар?

  12. W және Status регистрлерінің мәні қандай мақсатта сақталады?

11 Зертханалық жұмыс. Екі байттық сандарды қосу

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

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

Жұмыста қолданылатын регистрлердің символдық аттары 11.1-суретте және 11.1-кестеде келтірілген.

Л11 программасыныңфрагменттері.Екібайттық сандарды қосу.

МБ жұмысын реттеу және айнымалыларға ат беру көрсетілмеген.

CLRF SUM_M ; қосындыға арналған регистрлерді тазартамыз.

CLRF SUM_S

CLRF SUM_3

; Бірінші қосылғышты енгіземіз

MOVLW h’04’

MOVWF S1_M ; кіші байт S1_M= h’04’.

MOVLW h’FF’

MOVWF S1_S ; үлкен байт S1_S= h’FF’.

; Екінші қосылғышты енгіземіз

MOVLW h’FE’

MOVWF S2_M ; кіші байт S2_M=h’FE’.

MOVLW h'FF'

MOVWF S2_S ; үлкен байт S2_S= h'FF'.

; S1_M және S2_M кіші байттарын қосу

MOVF S1_M, W

ADDWF S2_M, W

MOVWF SUM_M

BTFSC STATUS, C; егер ауысу (толу) болса, қосынды 255-тен үлкен, онда

INCF SUM_S, F ; С=1 кезінде байтты өсіреміз.

; Үлкен байттарын қосу

MOVF SUM_S, W

ADDWF S1_S, W

BTFSC STATUS, C ;ауысу болды ма?

INCF SUM_3, F ; қосындының үшінші байтын тек С=1 болғанда өсіреміз.

ADDWF S2_S, W

MOVWF SUM_S

BTFSC STATUS, C; ауысу болды ма?

INCF SUM_3, W ; қосындының үшінші байтын тек С=1 болғанда өсіреміз.

GOTO$

END

11.3 Жұмысты орындау тәртібі

11.1және11.2 кестелеріндегі тапсырмалар бойынша оналтылық санақ жүйесін қолданып екі байттық сандарды қосуды орындаңыздар.Нәтижелерін 11.3және11.4 кестелеріне толтырыңыздар.

11.1 кесте–Бүтін ондық сандар үшін тапсырма нұсқалары

Нұсқа

Сан S1

Сан S2

Нұсқа

Сан S1

Сан S2

1

60001

10001

6

65406

60006

2

30002

20002

7

60007

10007

3

40003

30003

8

30008

20008

4

65504

40004

9

40009

30009

5

64505

50005

10

50010

40010

11.2 кесте–Бөлшек ондық сандар үшін тапсырма нұсқалары

Нұсқа

Сан S1

Сан S2

Нұсқа

Сан S1

Сан S2

1

110,01

110,1

6

160,06

160,6

2

120,02

120,2

7

170,07

170,7

3

130,03

130,3

8

180,08

180,8

4

140,04

140,4

9

190,09

190,9

5

150,05

150,5

10

200,10

200,20

11.1 Жұмыс тақырыбы бойынша қысқаша теориялық ақпарат

Сандарды қосу технологиялық процесс көрсеткіштерін қосу кезінде қолданылады. Қосынды мәндерін зерттеп қондырғыны басқару процесіне бір өзгертулер енгізеді.

Бір байтқа 0-ден255-ке дейінгі сандарды жазуға болады. Кейбір практикалық есептер үшін бұл жеткіліксіз. Егер екі байт қолданса, онда 0-ден 65535-ке дейінгі сандарды жазуға болады. Сандарды он алтылық санақ жүйесінде беріп қосуға болады.

Мысалы, 65284және65534 ондық жүйедегі сандарды қосу керек.Сандарымызды 16-лықжүйеде көрсетейік, әрқайсын екі регистрге жазамыз, 11.3-кестеге қараңыздар. Зертханалық жұмыста бұл байттар әрбір қосылғыш үшін үлкен және кіші байттар деп аталады, мысалы h’23’ және h’22’.

11.3кесте–Сандарды оналтылық кодта қосу

Атаулар

Ондық жүйе

Оналтылық жүйе

Қосылғыштар немесе SUM_3

Үлкен байттар (регистрлер)

Кіші байттар (регистрлер)

1-ші қосылғыш

65284

h’FF04’

S1_S =h’FF’

S1_M =h’04’

2- ші қосылғыш

65534

h’FFFE’

S2_S =h’FF’

S2_M =h’FE’

Табылған қосынды

130818

SUM_3=h’01’

SUM_S=h’FF’

SUM_M =h’02’

Нәтижесін ондық санақ жүйесінде көрсетейік:h’01FF02’1164+15163+15162+0161+2160=65536+61440+3840+0+2=130818.

Байттарды қосқан кезде егер қосындыh’FF’ (яғни 255-тен) жоғары болса, онда үлкен байттың 0-нші битіне 1 қосуды ескеру керек.Қосынды үш байт шығатыны анық. Регистрдің толу кезі Status регистрінің С битінде көрсетіледі, яғни ол 1-ге тең. Осы кезді қолданып үлкен байттын 1-ге өсіруді орындаймыз, яғни арифметикалық ауысу болады.

Басқа жағынан қарасақ үлкен байтта санның бүтін бөлігі көрсетілген, ал кіші байтта бөлшек бөлігі бар деп қарастыруға болады. Мұндай санды көпмүшеге келтіреміз A=K2162+ К1161+K0160+ K-1/16-1-2/16-2.

Ондық жүйедегі 255,017 және 255,991 бөлшек сандарды қосайық. Бұл сандарды қосу үшін бөлшек және бүтін бөліктерін бөлек оналтылық санақ жүйесіне өткізіп қосамыз [2].

Санның бүтін бөлігін 16 санақ жүйесіне аудару алгоритмі:

Алгоритм басы

Берілген санның бүтін бөлігін енгізу

Бөлінгішті берілген санға теңестіру

Бөлінгіш нөл болғанға дейін келесіні қайталау:

Бөлінгішті 16-ға бөліп бүтін бөлігін және қалдығын табу

Қалдығын есте сақтау

Бөлінгішті бүтін бөлікке теңестіру

Цикл соңы

Алгоритм соңы

Мысалы, 255 санын 16 санақ жүйесіне аударайық: 255:16=15(15) 15:16=0 (15).

онымен, 16 санақ жүйесіне алғанымыз 25510=FF16.

Санның бөлшек бөлігін 16 санақ жүйесіне аудару алгоритмі:

Алгоритм басы

Берілген санның бөлшек бөлігін енгізу

Көбейтілгішті енгізілген санға теңестыру

Көбейтінді 0-ден үлкен болса келесіні қайталай беру:

Көбейтілгіштің 16-ға көбейтіндісін табу

Көбейтіндінің бүтін бөлігін нәтижеге 16 жүйедегі сан ретінде жазу

Егер барлық маңызды сандар табылса, онда циклдан шығу

Цикл соңы

Алгоритм соңы

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

0.01716=0.272; 0.27216=4.352; 0.35216=5.63.

Сонымен, 0.01710=0.0416.Үшінші 5 цифрасы8-ден кіші болғандықтан қарастырмаймыз.

Екінші қосылғыштың бөлшек бөлігі:

0.99116=15.856; 0.85616=13.696; 0.69616=11.136.

Сонымен, 0.99110=0.FDB16.

Оналтылық жүйеде алынған санды екі санға дейін дөңгелектеп алатынымыз 0,99110=0,FE16.

Программа жұмысының нәтижесінде алынған мәндер 11.4 кестеде көрсетілген.

11.4 кесте–Екі байттық бөлшек сандарды қосу

Атаулар

Ондық жүйе

Оналтылық жүйе

Қосылғыштар немесе SUM_3

Үлкен байттар (регистрлер)

Кіші байттар (регистрлер)

1-ші қосылғыш

255,017

h’FF,04’

S1_S =h’FF’

S1_M =h’04’

2- ші қосылғыш

255,991

h’FF,FE’

S2_S =h’FF’

S2_M =h’FE’

Алынған қосынды

511,008

SUM_3=h’01’

SUM_S=h’FF’

SUM_M =h’02’

Оналтылық жүйеде алынған h’01FF,02’ нәтижені ондық жүйеге келтірейік:

Sum=1162+15161+15160+016-1+216-2=256+240+15+0+0,0078,

=511,0078.

Осыдан көргеніміздей екі жағдайдағы да нәтиже бөлшек мәніне дейін тура келді.

11.1-суретте екібайттық сандарды қосу блок-сұлбасы көрсетілген, онда қосылғыштар берілген деп қарастырылады.

11.1 сурет – Блок-сұлба