Скачиваний:
11
Добавлен:
01.05.2014
Размер:
43.01 Кб
Скачать

Государственный комитет Российской Федерации

по высшему образованию

Санкт-Петербургский государственный электротехнический университет

Кафедра ИИСТ

Лабораторная работа №3

Студенты: Виноградов К. ãð. 6561

Евдокимов С.

Преподаватель: Королев П.Г.

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

Задание.

Сгенерировать массив из 10 элементов:

  1. Вычислить математическое ожижание

  2. Вычислить дисперсию.

Алгоритм

  1. Заполнение массива данными. В качестве механизма заполнения используем косвенную адресацию с автоинкрементированием, специально предназначенную для работы с массивами данных. Присвоение значений элементам массива производится в цикле loop1. В качестве значений мы приняли числа от 10 до 1 с шагом, равным единице.

  2. Вычисление математического ожидания. Т. к. математическое ожидание находится как отношение суммы всех элементов массива к количеству элементов, мы в цикле loop2 суммируем все элементы и затем по выходу из цикла делим полученную сумму на 10.

  3. Вычисление дисперсии. Дисперсия ищется как отношение суммы квадратов разностей элементов массива и математического ожидания к количеству элементов. Математические операции, стоящие до операции деления выполняются в цикле loop3 с учетом типа данных, т. к. при использовании команд для работы с беззнаковыми числами могут возникнуть нелепые ошибки. По выходу из цикла выполняется операция деления, которая и завершает нахождение дисперсии.

  4. В достоверности результатов убедимся при дальнейшем анализе работы программы.

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

MCS-96 MACRO ASSEMBLER F_LAB 05/09/10

19:23:54 PAGE 1

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

SOURCE FILE: lab_3_4.a96

OBJECT FILE: lab_3_4.obj

CONTROLS SPECIFIED IN INVOCATION COMMAND: <none>

LOC OBJECT STMT SOURCE STATEMENT

1 F_lab MODULE main

2 ; Бригада і4:

3 ; Виноградов К.Ю. & Евдокимов С.Н.

4 ;

5 $nolist ; подавление листинга

71

8100 72 dseg at 8100h

000A 73 num equ 10 ; количество элементов массива (10)

8100 74 array: dsb num ; выделяем память под массив

0030 75 rseg at 30h

0030 76 count: dsb 1 ; сч±тчик для реализации цикла

0032 77 ptr: dsw 1 ; указатель на массив

0034 78 sum: dsw 1 ; сумма элементов массива

0036 79 m: dsb 1 ; математическое ожидание

0037 80 b: dsb 1 ; доп. байт для получения C

0038 81 c: dsw 1 ; квадрат разности элемента массива и мат.

ожидания

003A 82 d: dsb 1 ; дисперсия

9000 83 cseg at 9000h

9000 B10A30 84 ldb count, #num

9003 A1008132 85 ld ptr, #array

9007 C63330 86 loop1: stb count, [ptr]+ ; заполняем массив значениями от 10

до 1

900A E030FA 87 djnz count, loop1 ; счетчик сравнивается с 0,

вычитается 1 и выполняется loop1.

900D A1008132 88 ld ptr, #array ; указатель на первый элемент массива

9011 0134 89 clr sum

9013 B10A30 90 ldb count, #num

9016 763334 91 loop2: addb sum, [ptr]+ ; суммируем элементы массива

9019 E030FA 92 djnz count, loop2 ; счетчик сравнивается с 0, вычитается

1 и выполняется loop2.

901C 9D0A34 93 divub sum, #num ; получаем мат. ожидание

901F B03436 94 ldb m, sum

9022 A1008132 95 ld ptr, #array ; указатель на первый элемент массива

9026 B10A30 96 ldb count, #num

9029 0134 97 clr sum

902B B23337 98 loop3: ldb b, [ptr]+ ; получаем дисперсия

902E 783637 99 subb b, m

9031 FE5C373738 100 mulb c, b, b

9036 643834 101 add sum, c

9039 E030EF 102 djnz count, loop3 ; счетчик сравнивается с 0,

вычитается 1 и выполняется loop3.

903C 9D0A34 103 divub sum, #num

903F A0343A 104 ld d, sum

105

106

9042 F0 107 ret ; необходима для корректного завершения

108 ; пользователя

109 ;****************************************************************************

9043 110 END

MCS-96 MACRO ASSEMBLER F_LAB 05/09/10

19:23:54 PAGE 2

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

ARRAY . . . . . . . . . . . . . 8100H DATA ABS BYTE

B . . . . . . . . . . . . . . . 0037H REG ABS BYTE

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

C . . . . . . . . . . . . . . . 0038H REG ABS WORD

COUNT . . . . . . . . . . . . . 0030H REG ABS BYTE

D . . . . . . . . . . . . . . . 003AH REG ABS BYTE

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

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

LOOP1 . . . . . . . . . . . . . 9007H CODE ABS ENTRY

LOOP2 . . . . . . . . . . . . . 9016H CODE ABS ENTRY

LOOP3 . . . . . . . . . . . . . 902BH CODE ABS ENTRY

M . . . . . . . . . . . . . . . 0036H REG ABS BYTE

NUM . . . . . . . . . . . . . . 000AH NULL ABS

PTR . . . . . . . . . . . . . . 0032H REG ABS WORD

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

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

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

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

SUM . . . . . . . . . . . . . . 0034H REG ABS WORD

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

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

MCS-96 MACRO ASSEMBLER F_LAB 05/09/10

19:23:54 PAGE 3

N A M E VALUE ATTRIBUTES

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.

Соседние файлы в папке Лабораторная работа №3
  • #
    01.05.201443.01 Кб11LAB3_4.DOC
  • #
    01.05.20141.84 Кб9LAB_3_4.A96
  • #
    01.05.20147.33 Кб9LAB_3_4.LST