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

лаба8 макс

.docx
Скачиваний:
5
Добавлен:
09.02.2015
Размер:
86.82 Кб
Скачать

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

Калужский филиал государственного образовательного учреждения высшего

профессионального образования

«Московский государственный технический университет имени Н.Э.Баумана»

(КФ МГТУ им. Н.Э.Баумана)

Отчет по лабораторной работе №8

по курсу: “Системы реального времени”

«Исследование качества воспроизведения функции на Ассемблере с использованием команд блока FPU»

Выполнил: студент

группы ЭВМ-М31

Новосельцев А.Е.

Проверил:

Максимов А.В.

Калуга 2011

Цель работы: приобрести практические навыки исследования точности реализации функции на Ассемблере с использованием команд блока FPU.

Необходимое оборудование и программное обеспечение: для выполнения лабораторной работы необходима ПЭВМ на базе микропроцессора с системой команд ix86, среда программирования языка Асслемблера для указанной ПЭВМ, табличный процессор Excel.

Исходные данные:

№ п.п.

Функция

Исх. ф.

|Х|max

7

Y=1+0,5*x2+0,20833*x4+0,08472*x6

Sex(x)

4

Расчеты:

Y=1+0,5*x2+0,20833*x4+0,08472*x6

при изменении аргумента x от -4 до 4.

  1. Разработка вычислительного алгоритма.

вычисление функции представленной по схеме Горнера

y = 1+x*(x*(0,5+x*(x*(0, 20833+x*(0,08472*x)

Таблица 1

Промежуточная переменная

х = -4

х = 4

y1 = 0,08472*x

-0,33888

0,33888

y2 = y1*x

1,35552

1,35552

y3 = y2+0, 20833

1,56385

1,56385

y4 = y3*x

-6,2554

6,2554

y5 = y4*x

25,0216

25,0216

y6 = y5+0,5

25,5216

25,5216

y7 = y6*x

-102,0864

102,0864

y8 = y7*x

408,3456

408,3456

y9 = y8+1

409,3456

409,3456

Таблица 2. Эталонные значения полиномиальной функции (шаг 0,25)

Эталонные значения

 

X1

Y1

-4

409,3546452

-3,75

284,8346023

-3,5

194,1295611

-3,25

129,3623646

-3

84,13733797

-2,75

53,33923933

-2,5

32,94710285

-2,25

19,8629747

-2

11,75554133

-1,75

6,918650366

-1,5

4,14472403

-1,25

2,613065083

-1

1,793055333

-0,75

1,362246664

-0,5

1,139344615

-0,25

1,032084486

0

1

0,25

1,032084486

0,5

1,139344615

0,75

1,362246664

1

1,793055333

1,25

2,613065083

1,5

4,14472403

1,75

6,918650366

2

11,75554133

2,25

19,8629747

2,5

32,94710285

2,75

53,33923933

3

84,13733797

3,25

129,3623646

3,5

194,1295611

3,75

284,8346023

4

409,3546452


Рис 1. График эталонной функции (шаг 0, 25)

Листинг программы при разрядности 16:

dosseg

.model tiny

.code

.486

m1: mov ax,@code

mov ds,ax

mov es,ax

xor ax,ax

xor bx,bx

xor cx,cx

xor dx,dx

;=======================

;-----------------------

mov ah, 3ch

mov cx, 0

mov dx, offset f_name

int 21h

mov handle, ax

;-----------------------

m2: xor ax, ax ;

xor bx, bx ;

xor cx, cx ;

xor dx, dx ;

;-----------------------

finit

fld mx

fild x

fscale

fld c0

fmul st(0), st(1)

fmul st(0), st(1)

fld c1

fadd st(0), st(1)

fmul st(0), st(2)

fmul st(0), st(2)

fld c2

fadd st(0), st(1)

fmul st(0), st(3)

fmul st(0), st(3)

fld c3

fadd st(0), st(1)

fld my

fxch

fscale

frndint

fist y

;-----------------------

mov ah,40h

mov bx, handle

mov cx, 2

mov dx, offset x

int 21h

;-----------------------

mov ah, 40h

mov dx, offset y

int 21h

;-----------------------

cmp x, 4000h

je m3

add x, 0400h ;

jmp m2

;-----------------------

;-----------------------

m3: mov ah,3eh

mov bx, handle

int 21h

;=======================

;-----------------------

mov ah, 4ch

int 21h

;=======================

;-----------------------

x dw 0C000h

mx dt -12.0

y dw ?

my dt 6.0

c0 dt 0.08472

c1 dt 0.20833

c2 dt 0.5

c3 dt 1.0

handle dw ?

f_name db 'C:\TASM\t.hex'

;=======================

end m1

Таблица 4. Рабочие значения полиномиальной функции (шаг 0,25),

разрядность 16

[X1]

[Y1]

X1

Y1

Эталон

Ошибка

0C000h

6656h

-4

409,3438

409,3546452

0,0265202

0C400h

4735h

-3,75

284,8281

284,8346023

0,0221023

0C800h

3088h

-3,5

194,125

194,1295611

0,0045611

0CC00h

2057h

-3,25

129,3594

129,3623646

0,0186146

0D000h

1509h

-3

84,14063

84,13733797

0,01233797

0D400h

0D56h

-2,75

53,34375

53,33923933

0,01111433

0D800h

083Dh

-2,5

32,95313

32,94710285

0,00960285

0DC00h

04F7h

-2,25

19,85938

19,8629747

0,0035997

0E000h

02F0h

-2

11,75

11,75554133

0,00554133

0E400h

01BBh

-1,75

6,921875

6,918650366

0,012400366

0E800h

0109h

-1,5

4,140625

4,14472403

0,00409903

0EC00h

00A7h

-1,25

2,609375

2,613065083

0,003690083

0F000h

0073h

-1

1,796875

1,793055333

0,011805333

0F400h

0057h

-0,75

1,359375

1,362246664

0,002871664

0F800h

0049h

-0,5

1,140625

1,139344615

-0,001280385

0FC00h

0042h

-0,25

1,03125

1,032084486

0,000834486

0000h

0040h

0

1

1

0

0400h

0042h

0,25

1,03125

1,032084486

0,000834486

0800h

0049h

0,5

1,140625

1,139344615

0,014344615

0C00h

0057h

0,75

1,359375

1,362246664

0,002871664

1000h

0073h

1

1,796875

1,793055333

0,011805333

1400h

00A7h

1,25

2,609375

2,613065083

0,003690083

1800h

0109h

1,5

4,140625

4,14472403

0,00409903

1C00h

01BBh

1,75

6,921875

6,918650366

0,012400366

2000h

02F0h

2

11,75

11,75554133

0,00554133

2400h

04F7h

2,25

19,85938

19,8629747

0,0192247

2800h

083Dh

2,5

32,95313

32,94710285

0,02522785

2C00h

0D56h

2,75

53,34375

53,33923933

0,02673933

3000h

1509h

3

84,14063

84,13733797

0,02796297

3400h

2057h

3,25

129,3594

129,3623646

0,0342396

3800h

3088h

3,5

194,125

194,1295611

0,0201861

3C00h

4735h

3,75

284,8281

284,8346023

0,0533523

4000h

6655h

4

409,3281

409,3546452

0,0265202

Рис. 2. График рабочей функции (шаг 0, 25), разрядность 16

Рис. 3. График ошибок (шаг 0, 25), разрядность 16.

Таблица 6. Рабочие значения полиномиальной функции (шаг 0,25), разрядность 32

[X1]

[Y1]

X1

Y1

Эталон

Ошибка

0C0000000h

66561E60h

-4

409,3456039

409,3464532

0,009041257

0C4000000h

4735043Fh

-3,75

284,8283842

284,8290405

0,006218139

0C8000000h

30880654h

-3,5

194,1253862

194,1258845

0,004174862

0CC000000h

2057044Ch

-3,25

129,3596373

129,3600078

0,00272734

0D0000000h

1508ADD9h

-3

84,1356108

84,13587999

0,001727151

0D4000000h

0D55A4D0h

-2,75

53,3381844

53,33837438

0,001054973

0D8000000h

083C9335h

-2,5

32,9464848

32,9466145

0,000618046

0DC000000h

04F73554h

-2,25

19,8626299

19,86271501

0,00034481

0E0000000h

02F057D2h

-2

11,7553601

11,75541329

0,000181204

0E4000000h

01BAC9B7h

-1,75

6,9185617

6,91859293

8,8669E-05

0E8000000h

01094282h

-1,5

4,1446843

4,144701242

3,97153E-05

0EC000000h

00A73C33h

-1,25

2,6130493

2,613057375

1,58143E-05

0F0000000h

0072C155h

-1

1,7930501

1,79305315

5,28226E-06

0F4000000h

00572F07h

-0,75

1,3622453

1,362246275

1,34273E-06

0F8000000h

0048EB05h

-0,5

1,1393445

1,139344454

1,61188E-07

0FC000000h

00420DACh

-0,25

1,0320845

1,032084465

2,09731E-08

00000000h

00400000h

0

1,0000000

1

0

04000000h

00420DACh

0,25

1,0320845

1,032084465

2,09731E-08

08000000h

0048EB05h

0,5

1,1393445

1,139344454

1,61188E-07

0C000000h

00572F07h

0,75

1,3622453

1,362246275

1,34273E-06

10000000h

0072C155h

1

1,7930501

1,79305315

5,28226E-06

14000000h

00A73C33h

1,25

2,6130493

2,613057375

1,58143E-05

18000000h

01094282h

1,5

4,1446843

4,144701004

3,97153E-05

1C000000h

01BAC9B7h

1,75

6,9185617

6,918592691

8,8669E-05

20000000h

02F057D2h

2

11,7553601

11,75541329

0,000181204

24000000h

04F73554h

2,25

19,8626299

19,86271501

0,00034481

28000000h

083C9335h

2,5

32,9464848

32,94661427

0,000618046

2C000000h

0D55A4D0h

2,75

53,3381844

53,3383739

0,001054973

30000000h

1508ADD9h

3

84,1356108

84,13587952

0,001727151

34000000h

2057044Ch

3,25

129,3596373

129,3600073

0,00272734

38000000h

30880654h

3,5

194,1253862

194,1258841

0,004174862

3C000000h

4735043Fh

3,75

284,8283842

284,8290398

0,006218139

40000000h

66561E60h

4

409,3456039

409,3464532

0,009041257