Скачиваний:
16
Добавлен:
09.05.2014
Размер:
39.42 Кб
Скачать

Лабораторная работа по Организации ЭВМ

Вычисление функции

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

Митрофанов Александр

Пермяков Валерий

Вычислить значение функции. cosx ~ 1 – x2/2! + x4/4! – x6/6! + и с помощью логического анализатора построить график.

Вычисление значений функции с плавающей запятой на С

#include <reg51.h>

#include <math.h>

float x;

void main()

{

x = 0;

for ( x = 0; x < 6.28; x+=0.001)

{

P3 = 127 * cos(x) + 127;

}

}

Вычисление значений функции с фиксированной запятой на С

#include <reg51.h>

unsigned char tmp;

unsigned char power (unsigned char base, unsigned char arg)

{

tmp = 100;

while (arg--)

tmp = base * tmp/100;

return tmp;

}

void main()

{

unsigned char z;

while(1)

for (z = 0; z < 100; z++)

{

P3 = 100 - power (z,2)/2 + power (z,4)/24;

}

}

Вычисление значений функции с фиксированной запятой на ассемблере

dseg at 08

tmp: ds 1

za: ds 1

zb: ds 1

zc: ds 1

zd: ds 1

ze: ds 1

stec: ds 4

RLreg MACRO x

mov A, x

rlc A

mov x, A

ENDM

cseg at 0

jmp start

cseg at 0x20

start:

mov SP,#stec-1

main:

mov r0,#0

rep:

inc r0

mov a,r0

mov r1,a

call power

mov a,#100

clr C

subb a,ze

mov tmp,a

mov 01,ze

call power

mov a,r3

add a,tmp

mov p3,a

cjne r0,#100,rep

ljmp main

power:

;r3-tmp

;r1-base

;r2-arg

mov a,r1

mov b,r1

mul ab

mov za,a

mov zb,b

mov zc,#100

call div_my

ret ;r5-return

div_my: ;zb.za/zc=ze zd=8 repeat

mov zd, #0x80

mov ze, #0

CYCL:

clr C

mov A, za

rlc A

mov za, A

mov A, zb

rlc A

mov zb, A

jc PWS

subb A, zc

jnc PARS

CONT:

mov A, zd

clr C

rrc A

mov zd, A

jnz CYCL

Ret

PWS:

clr C

subb A, zc

PARS:

mov zb, A

mov A, ze

orl A, zd

mov ze, A

sjmp CONT

ENDL:

ret

en:

end

Соседние файлы в папке общий отчет