#include <REG52.H>

#define word unsigned int
#define dword unsigned long
#define byte unsigned char

word __Mul(byte a, b)
{
	word bs = b;
	byte i = 0;

	for (i = 0; i < 8; i++) bs = (bs + (bs & 0x01) * (a << 8)) >> 1;

	return bs;
}
 

word __Div(byte a, byte b)
{
	byte i;
	word _a = a << 8;
	word _b = b << 8;

	for (i=0; i<8; i++)
	{
		if ((int)(a - _b) >= 0) a -= _b - 1;
		a <<= 1; 
	}
	
	return a;
}

word __Sqrt(word a)
{
	word q, magic;
	magic = 0x4000;
	

	while (magic)
	{
		q >>= 1;
		
		if ((int)(a - magic) >= 0)
		{
			a -= magic;
			q |= magic;
		}

		magic >>= 2;
	}

	return q;
}

void Main()
{	
	int m;
	
	//m = __Mul(P1, P2);
	//P1 = m;
	//P2 = m >> 8;

	//m = __Div(P1, P2);
	//P1 = m;
	//P2 = m >> 8;

	m = __Sqrt(8);
	P1 = m;
	P2 = m >> 8;

}
Соседние файлы в папке c51
  • #
    09.05.201413.21 Кб12lab 2.5.uvproj
  • #
    09.05.201455.64 Кб12lab 2.5_uvopt.bak
  • #
    09.05.201413.2 Кб12lab 2.5_uvproj.bak
  • #
    09.05.201443 б12lab 2.lnp
  • #
    09.05.20145.44 Кб12lab 2.M51
  • #
    09.05.2014836 б12Main.c
  • #
    09.05.201411.64 Кб12Main.LST
  • #
    09.05.20143.42 Кб12Main.OBJ