Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабы 1-3 / 2_Laba3

.doc
Скачиваний:
28
Добавлен:
18.05.2014
Размер:
62.98 Кб
Скачать

Министерство образования и науки Российской Федерации

Федеральное агентство по образованию

Санкт-Петербургский государственный электротехнический университет «ЛЭТИ» имени В. И. Ульянова (Ленина)

Кафедра ИИСТ

Отчет по лабораторной работе № 3 по дисциплине «Микропроцессорные средства в ИИТ»

ИЗУЧЕНИЕ ЦИКЛИЧЕСКИХ ПРОГРАММ ОБРАБОТКИ ДАННЫХ

Выполнили ст. гр. 6587

Мазур С.С.

Шундрина Ю.А.

Бригада № 7

Проверил: Королев П. Г.

Санкт-Петербург

2010

Цель работы: Изучение основ программирования циклических измерительных алгоритмов и приобретение навыков их отладки на МПС.

Задание (вариант № 7):

В массиве из 16 слов, расположенном во внешней памяти, посчитать количество положительных и отрицательных чисел и вычислить отдельно их математические ожидания.

Распределение памяти

0030 ax : dsw 1

0032 mass_ptr : dsw 1

0034 kp : dsb 1

0035 kn : dsb 1

0036 spol : dsw 1

0038 sneg : dsw 1

003A mop : dsw 1

003C mon : dsw 1

003E n_loop : dsb 1

Листинг программы

MCS-96 MACRO ASSEMBLER THIRD_LAB 03/19/11 10:46:45 PAGE 1

DOS 7.10 (046-N) MCS-96 MACRO ASSEMBLER, V1.3

SOURCE FILE: d:\mcs96\6587_7\g6587l3.a96

OBJECT FILE: d:\mcs96\6587_7\g6587l3.obj

CONTROLS SPECIFIED IN INVOCATION COMMAND: <none>

LOC OBJECT STMT SOURCE STATEMENT

1 third_lab MODULE main

2 ;Мазур С.С.

3 ;Шундрина Ю.А.

4 $nolist

0030 70 rseg at (30h)

0030 71 ax : dsw 1 ;рабочий регистр

0032 72 mass_ptr : dsw 1 ;массив данных

0034 73 kp : dsb 1 ;счетчик положительных чисел

0035 74 kn : dsb 1 ;счетчик отрицательных чисел

0036 75 spol : dsw 1 ;сумма положительных чисел

0038 76 sneg : dsw 1 ;сумма отрицательных чисел

003A 77 mop : dsw 1 ;математическое ожидание положительных чисел

003C 78 mon : dsw 1 ;математическое ожидание отрицательных чисел

003E 79 n_loop : dsb 1 ;счетчик цикла

8100 80 cseg at 8100h

8100 113E 81 clrb n_loop ; очистка счетчика цикла

8102 1134 82 clrb kp ; очистка счетчика положительных чисел

8104 1135 83 clrb kn ; очистка счетчика отрицательных чисел

8106 0136 84 clr spol ;

8108 0138 85 clr sneg ;

810A 013C 86 clr mon ;

810C 013A 87 clr mop ;

810E 0132 88 clr mass_ptr ;

8110 B1103E 89 ldb n_loop, #16 ;

8113 90 schet:

8113 A333408130 91 ld ax, mass[mass_ptr] ;

8118 89000030 92 cmp ax, #0 ;

811C DE07 93 jlt minus ;

811E 1734 94 incb kp ;

8120 643036 95 add spol, ax ;

8123 2005 96 sjmp metka ;

8125 97 minus:

8125 1735 98 incb kn ;

8127 643038 99 add sneg, ax ;

812A 100 metka:

812A 65020032 101 add mass_ptr, #2 ;

812E E03EE2 102 djnz n_loop, schet ;

8131 A0363A 103 ld mop, spol ;

8134 A0383C 104 ld mon, sneg ;

8137 FE9C353C 105 divb mon, kn ;

813B FE9C343A 106 divb mop, kp ;

107

813F F0 108 ret

8140 109 mass:

8140 0200 110 dcw 2d

8142 0300 111 dcw 3d

8144 0600 112 dcw 6d

8146 FCFF 113 dcw -4d

8148 FBFF 114 dcw -5d

814A 0700 115 dcw 7d

814C 0900 116 dcw 9d

MCS-96 MACRO ASSEMBLER THIRD_LAB 03/19/11 10:46:45 PAGE 2

LOC OBJECT STMT SOURCE STATEMENT

814E F8FF 117 dcw -8d

8150 0400 118 dcw 4d

8152 FBFF 119 dcw -5d

8154 0300 120 dcw 3d

8156 FEFF 121 dcw -2d

8158 FAFF 122 dcw -6d

815A 0700 123 dcw 7d

815C 0400 124 dcw 4d

815E FBFF 125 dcw -5d

8160 126 end

MCS-96 MACRO ASSEMBLER THIRD_LAB 03/19/11 10:46:45 PAGE 3

SYMBOL TABLE LISTING

--------------------

N A M E VALUE ATTRIBUTES

AD_COMMAND. . . . . . . . . . . 0002H NULL ABS BYTE

AD_RESULT . . . . . . . . . . . 0002H NULL ABS BYTE

AD_RESULT_HI. . . . . . . . . . 0003H NULL ABS BYTE

AD_RESULT_LO. . . . . . . . . . 0002H NULL ABS BYTE

AD_TIME . . . . . . . . . . . . 0003H NULL ABS BYTE

AX. . . . . . . . . . . . . . . 0030H REG ABS WORD

BAUD_RATE . . . . . . . . . . . 000EH NULL ABS BYTE

HSI_MODE. . . . . . . . . . . . 0003H NULL ABS BYTE

HSI_STATUS. . . . . . . . . . . 0006H NULL ABS BYTE

HSI_TIME. . . . . . . . . . . . 0004H NULL ABS WORD

HSO_COMMAND . . . . . . . . . . 0006H NULL ABS BYTE

HSO_TIME. . . . . . . . . . . . 0004H NULL ABS WORD

IMASK1. . . . . . . . . . . . . 0013H NULL ABS BYTE

INT_MASK. . . . . . . . . . . . 0008H NULL ABS BYTE

INT_MASK1 . . . . . . . . . . . 0013H NULL ABS BYTE

INT_PEND. . . . . . . . . . . . 0009H NULL ABS BYTE

INT_PEND1 . . . . . . . . . . . 0012H NULL ABS BYTE

INT_PENDING . . . . . . . . . . 0009H NULL ABS BYTE

IOC0. . . . . . . . . . . . . . 0015H NULL ABS BYTE

IOC1. . . . . . . . . . . . . . 0016H NULL ABS BYTE

IOC2. . . . . . . . . . . . . . 000BH NULL ABS BYTE

IOC3. . . . . . . . . . . . . . 000CH NULL ABS BYTE

IOPORT0 . . . . . . . . . . . . 000EH NULL ABS BYTE

IOPORT1 . . . . . . . . . . . . 000FH NULL ABS BYTE

IOPORT2 . . . . . . . . . . . . 0010H NULL ABS BYTE

IOS0. . . . . . . . . . . . . . 0015H NULL ABS BYTE

IOS1. . . . . . . . . . . . . . 0016H NULL ABS BYTE

IOS2. . . . . . . . . . . . . . 0017H NULL ABS BYTE

IPEND1. . . . . . . . . . . . . 0012H NULL ABS BYTE

KN. . . . . . . . . . . . . . . 0035H REG ABS BYTE

KP. . . . . . . . . . . . . . . 0034H REG ABS BYTE

MASS. . . . . . . . . . . . . . 8140H CODE ABS WORD

MASS_PTR. . . . . . . . . . . . 0032H REG ABS WORD

METKA . . . . . . . . . . . . . 812AH CODE ABS ENTRY

MINUS . . . . . . . . . . . . . 8125H CODE ABS ENTRY

MON . . . . . . . . . . . . . . 003CH REG ABS WORD

MOP . . . . . . . . . . . . . . 003AH REG ABS WORD

N_LOOP. . . . . . . . . . . . . 003EH REG ABS BYTE

PTSSEL. . . . . . . . . . . . . 0004H NULL ABS WORD

PTSSRV. . . . . . . . . . . . . 0006H NULL ABS WORD

PWM_CONTROL . . . . . . . . . . 0017H NULL ABS BYTE

PWM1_CONTROL. . . . . . . . . . 0016H NULL ABS BYTE

PWM2_CONTROL. . . . . . . . . . 0017H NULL ABS BYTE

R0. . . . . . . . . . . . . . . 0000H NULL ABS WORD

SBUF. . . . . . . . . . . . . . 0007H NULL ABS BYTE

SCHET . . . . . . . . . . . . . 8113H CODE ABS ENTRY

SNEG. . . . . . . . . . . . . . 0038H REG ABS WORD

SP. . . . . . . . . . . . . . . 0018H NULL ABS WORD

SP_CON. . . . . . . . . . . . . 0011H NULL ABS BYTE

SP_STAT . . . . . . . . . . . . 0011H NULL ABS BYTE

SPOL. . . . . . . . . . . . . . 0036H REG ABS WORD

T2CAPTURE . . . . . . . . . . . 000CH NULL ABS WORD

T2CONTROL . . . . . . . . . . . 000CH NULL ABS BYTE

MCS-96 MACRO ASSEMBLER THIRD_LAB 03/19/11 10:46:45 PAGE 4

N A M E VALUE ATTRIBUTES

THIRD_LAB . . . . . . . . . . . ----- MODULE MAIN STACKSIZE(0)

TIMER1. . . . . . . . . . . . . 000AH NULL ABS WORD

TIMER2. . . . . . . . . . . . . 000CH NULL ABS WORD

WATCHDOG. . . . . . . . . . . . 000AH NULL ABS BYTE

WSR . . . . . . . . . . . . . . 0014H NULL ABS BYTE

ASSEMBLY COMPLETED, NO ERROR(S) FOUND.

Проверка срабатывания условных переходов

ldb n_loop, #16

metka:

<..тело цикла..>

djnz n_loop, schet ;

Цикл переходит по метке некоторое количество раз, которое мы первоначально задаем в счетчике n_loop. В нашем случае 16. Каждый последующий раз он уменьшается на 1, а дойдя до значения 0 переход по метке не совершается.

Адрес команды

Мнемоника

Адрес операнда назначения

Значение операнда до операции

Осуществление перехода

Слово состояния процессора PSW

Z

N

V

C

812Eh

DJNZ

3Eh

3Eh: 0Fh

Переход на команду с адресом 8113h

0

0

0

0

812Eh

DJNZ

3Eh

3Eh: 01h

Нет перехода

0

0

0

0

Проверка срабатывания команды JLT – «переход, если меньше нуля». Мы производим сравнение числа с нулем. После выполнения команды CMP ax, #0 флаг N слова состояния процессора (PSW) принимает значение 1, если значение ax меньше нуля и 0, если ax больше нуля. Этот флаг является определяющим при выполнении команды JLT.

Адрес команды

Мнемоника

Адрес операнда назначения

Результат операции

Осуществление перехода

Слово состояния процессора PSW

Z

N

V

C

8118h

CMP

30h

Значение операнда не меняется

-

0

1

0

1

811Сh

JLT

8125h

Флаг N=1. Переход на команду с адресом 8125h

Следующая команда

8125h

INCB

35h

35h: 01

-

0

0

0

0

8118h

CMP

30h

Значение операнда не меняется

-

0

0

0

1

811Сh

JLT

8125h

Флаг N=0. Перехода нет

Следующая команда

811Eh

INCB

34h

34h: 02

-

0

0

0

0

Проверка правильности работы программы:

По итогам работы программы в ячейке с адресом 34h (адрес счетчика положительных чисел) мы видим значение 09h. В ячейке с адресом 35h (адрес счетчика отрицательных чисел) – значение 07h. Аналогично, в ячейке с адресом 3Сh (адрес регистра мат. ожидания отрицательных чисел) – значение FBh. В ячейке с адресом 3Ah (адрес регистра мат. ожидания положительных чисел) – значение 05h. .

Выводы:

В ходе выполнения лабораторной работы мы научились использовать циклы при обработке данных. В массиве из 16 слов, расположенном во внешней памяти, посчитали количество положительных и отрицательных чисел и вычислили их математические ожидания.

Соседние файлы в папке Лабы 1-3