Thread View: pl.comp.lang.asm
8 messages
8 total messages
Started by "Remek"
Sat, 07 Aug 2010 17:20
=?iso-8859-2?Q?Dzia³ania_na_liczbach_dziesiêtnych_"z_przecinkiem"?
Author: "Remek"
Date: Sat, 07 Aug 2010 17:20
Date: Sat, 07 Aug 2010 17:20
13 lines
470 bytes
470 bytes
Witam Mam napisany kalkulator czterodzia�aniowy, kt�ry potrafi operowa� na du�ych liczbach. Mo�na nawet u�ywa� dzielnika 128 bajtowego. Nie potrafi jednak operowa� na liczbach w postaci u�amka dziesi�tnego np. 12,123. Usi�uj� napisa� jakie� zgrabne procedury, ale nie wychodzi na razie. Chodzi o instrukcje procesora, bez u�ycia koprocesora. Czy kto� mo�e bawi� si� w takie co� i moze da� wskaz�wk�, albo namiar? Remek
Re: =?ISO-8859-2?Q?Dzia³ania_na_liczbach_dziesiêtnych_?= =?ISO-8859-2?Q?"z_przecinkiem"?
Author: Michoo
Date: Sun, 08 Aug 2010 10:51
Date: Sun, 08 Aug 2010 10:51
14 lines
394 bytes
394 bytes
Remek pisze: > Witam > > Mam napisany kalkulator czterodzia�aniowy, kt�ry potrafi operowa� na du�ych > liczbach. Mo�na nawet u�ywa� dzielnika 128 bajtowego. Nie potrafi jednak > operowa� na liczbach w postaci u�amka dziesi�tnego np. 12,123. Ale mo�e by� wyja�ni� jak� masz reprezentacj� liczb i jak chcesz reprezentowa� te u�amki? -- Pozdrawiam Michoo
=?iso-8859-2?Q?Re:_Dzia³ania_na_liczbach_dziesiêtnych_"z_przecink?= =?iso-8859-2?Q?iem"?
Author: "Remek"
Date: Sun, 08 Aug 2010 12:33
Date: Sun, 08 Aug 2010 12:33
38 lines
1006 bytes
1006 bytes
U�ytkownik "Michoo" napisa�: > Ale mo�e by� wyja�ni� jak� masz reprezentacj� liczb i jak chcesz > reprezentowa� te u�amki? Przepraszam, �e nie poda�em wi�cej danych. Program jest pod Windows z interfejsem okienkowym. Liczby wpisuj� do kontrolek i w kontrolkach wy�wietlam wyniki. W razie potrzeby mog� gdzie� wrzuci� screen. Obr�bk� z ASCII na hex i na odwr�t mam zrobion�. Chodzi tylko o procedury wykrywania przecinka i odpowiedniej na to reakcji. Moja wst�pna koncepcja wygl�da nast�puj�co: - w trakcie czytania kontrolki do bufora wykrywam przecinek i pomijam go. - licz� ilo�� miejsc po przecinku. - dopasowuj� odpowiednio wczytane liczby. Je�li ma by� wykonane dodawanie to: - wpisane argumenty: 12345,77 + 2876,345 - po obr�bce: 12345770 + 2876345 Konwertuj� to na hex, dodaj�. Nast�pnie wykonuj� operacj� odwrotn� tzn. konwersj� na dec i do wyniku dodaj� przecinek: 15222,115 Pozdrawiam Remek
Re: =?ISO-8859-2?Q?Dzia³ania_na_liczbach_dziesiêtnych_?= =?ISO-8859-2?Q?"z_przecinkiem"?
Author: Bernard
Date: Sun, 08 Aug 2010 19:07
Date: Sun, 08 Aug 2010 19:07
36 lines
1124 bytes
1124 bytes
On 2010-08-08 12:33, Remek wrote: > U�ytkownik "Michoo" napisa�: > >> Ale mo�e by� wyja�ni� jak� masz reprezentacj� liczb i jak chcesz >> reprezentowa� te u�amki? > > Przepraszam, �e nie poda�em wi�cej danych. Program jest pod Windows z > interfejsem okienkowym. Liczby wpisuj� do kontrolek i w kontrolkach > wy�wietlam wyniki. W razie potrzeby mog� gdzie� wrzuci� screen. Obr�bk� z > ASCII na hex i na odwr�t mam zrobion�. Chodzi tylko o procedury wykrywania > przecinka i odpowiedniej na to reakcji. Moja wst�pna koncepcja wygl�da > nast�puj�co: > > - w trakcie czytania kontrolki do bufora wykrywam przecinek i pomijam go. > - licz� ilo�� miejsc po przecinku. > - dopasowuj� odpowiednio wczytane liczby. > > Je�li ma by� wykonane dodawanie to: > > - wpisane argumenty: > > 12345,77 > + 2876,345 > > - po obr�bce: > > 12345770 > + 2876345 > > Konwertuj� to na hex, dodaj�. Nast�pnie wykonuj� operacj� odwrotn� tzn. A po co na hex? Reprezentacja w postaci cyfr dziesi�tnych (ASCII) jest cakiem odpowiednia dla takiego kalkulatora.
=?iso-8859-2?Q?Re:_Dzia³ania_na_liczbach_dziesiêtnych_"z_przecink?= =?iso-8859-2?Q?iem"?
Author: "Remek"
Date: Sun, 08 Aug 2010 22:00
Date: Sun, 08 Aug 2010 22:00
15 lines
336 bytes
336 bytes
U�ytkownik "Bernard" napisa�: > A po co na hex? > Reprezentacja w postaci cyfr dziesi�tnych (ASCII) jest cakiem > odpowiednia dla takiego kalkulatora. Widocznie czego� nie wiem. M�g�bys poda� przyk�ad kodu dla procesora x86, kt�ry wykona dzia�anie i poda prawid�owy wynik? 3132 * 32 = 3234 (w ASCII) Remek
Re: =?ISO-8859-2?Q?Dzia³ania_na_liczbach_dziesiêtnych_?= =?ISO-8859-2?Q?"z_przecinkiem"?
Author: Michoo
Date: Sun, 08 Aug 2010 22:41
Date: Sun, 08 Aug 2010 22:41
43 lines
1380 bytes
1380 bytes
Remek pisze: > U�ytkownik "Bernard" napisa�: > >> A po co na hex? > >> Reprezentacja w postaci cyfr dziesi�tnych (ASCII) jest cakiem >> odpowiednia dla takiego kalkulatora. > > Widocznie czego� nie wiem. M�g�bys poda� przyk�ad kodu dla procesora x86, > kt�ry wykona dzia�anie i poda prawid�owy wynik? > > 3132 * 32 = 3234 (w ASCII) struct num{ uint16_t len; uint8_t *data; }; data zawiera warto�ci 0-9, na ascii zamienia si� tylko do wy�wietlenia, kolejno��: od lewej do prawej. wykonujesz na tym mno�enie pisemne - nie jest to specjalnie wydajne, ale sprawdza si� do kalkulatora ca�kiem nie�le. Pseudokod: num mul(num *a,num *b){ num c; c.data = malloc(a->len+b->len); memset(c->data,0,a->len+b->len); for(int i=0;i<a->len;i++) for(int j=0;j<b->len;j++) add(c->data+i,(a->data[i]*(uint16_t)b->data[j])); c->len=len(c->data,a->len+b->len); c->data = realloc(c->data,c->len); return c; } Musisz sprawdzi�, czy nie ma b��d�w i skompilowa�. len zwraca ile bajt�w zaj�� wynik w rzeczywisto�ci - liczy si� przez przegl�danie od ko�ca tablicy tak d�ugo jak zawiera zera i odj�cie od pocz�tkowego rozmiaru. add dodaje wynik pojedynczego mno�enia do wyniku cz�ciowego (trzeba doda� dwa bajty i rozpropagowa� ewentualne przepe�nienie) -- Pozdrawiam Michoo
=?iso-8859-2?Q?Re:_Dzia³ania_na_liczbach_dziesiêtnych_"z_przecink?= =?iso-8859-2?Q?iem"?
Author: "Remek"
Date: Mon, 09 Aug 2010 13:16
Date: Mon, 09 Aug 2010 13:16
24 lines
529 bytes
529 bytes
U�ytkownik "Michoo" napisa�: > struct num{ > uint16_t len; > uint8_t *data; > }; > data zawiera warto�ci 0-9, na ascii zamienia si� tylko do wy�wietlenia, > kolejno��: od lewej do prawej. wykonujesz na tym mno�enie pisemne - nie > jest to specjalnie wydajne, ale sprawdza si� do kalkulatora ca�kiem nie�le. > > Pseudokod: > num mul(num *a,num *b){ ............. To jest asembler??? Czy powy�sza procedura przewiduje dzielenie? Wstawia przecinki we w�a�ciwe miejsca? 123,33 / 321,44 Remek
Re: =?ISO-8859-2?Q?Dzia³ania_na_liczbach_dziesiêtnych_?= =?ISO-8859-2?Q?"z_przecinkiem"?
Author: Michoo
Date: Mon, 09 Aug 2010 14:13
Date: Mon, 09 Aug 2010 14:13
40 lines
1298 bytes
1298 bytes
Remek pisze: > U�ytkownik "Michoo" napisa�: > >> struct num{ >> uint16_t len; >> uint8_t *data; >> }; >> data zawiera warto�ci 0-9, na ascii zamienia si� tylko do wy�wietlenia, >> kolejno��: od lewej do prawej. wykonujesz na tym mno�enie pisemne - nie >> jest to specjalnie wydajne, ale sprawdza si� do kalkulatora ca�kiem > nie�le. >> Pseudokod: >> num mul(num *a,num *b){ > > ............. > > To jest asembler??? Nie - to jest pesudokod C-like. Skompilowanie go nie jest chyba �adnym problemem? Ale nale�y uwzgl�dni� wiele warunk�w - jakie rejestry u�ywasz do czego, czy to ma by� PIC, czy nie, etc. tak jest imo czytelniej. > Czy powy�sza procedura przewiduje dzielenie? Powy�sza funkcja s�u�y do mno�enia. Ja robi�em dzielenie za pomoc� wyszukiwania binarnego, ale s� sprytniejsze metody. Dop�ki nie zdecydujesz si� skorzysta� z takiego zapisu nie ma chyba sensu si� o tym rozpisywa�. Og�lnie chodzi o dzia�ania jak w podstaw�wce, ale w reprezentacji od lewej do prawej. Wstawia > przecinki we w�a�ciwe miejsca? Przy zapisie dziesi�tnym wstawianie przecink�w po mno�eniu ogranicza si� do zsumowania ich pozycji w obu czynnikach. Przy dzieleniu pozycja jest znana. -- Pozdrawiam Michoo
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads