лаба8 макс
.docxФедеральное агентство по образованию
Калужский филиал государственного образовательного учреждения высшего
профессионального образования
«Московский государственный технический университет имени Н.Э.Баумана»
(КФ МГТУ им. Н.Э.Баумана)
Отчет по лабораторной работе №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.
-
Разработка вычислительного алгоритма.
вычисление функции представленной по схеме Горнера
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 |