🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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"?
#2309
Author: "Remek"
Date: Sat, 07 Aug 2010 17:20
13 lines
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"?
#2310
Author: Michoo
Date: Sun, 08 Aug 2010 10:51
14 lines
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"?
#2311
Author: "Remek"
Date: Sun, 08 Aug 2010 12:33
38 lines
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"?
#2312
Author: Bernard
Date: Sun, 08 Aug 2010 19:07
36 lines
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"?
#2313
Author: "Remek"
Date: Sun, 08 Aug 2010 22:00
15 lines
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"?
#2314
Author: Michoo
Date: Sun, 08 Aug 2010 22:41
43 lines
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"?
#2315
Author: "Remek"
Date: Mon, 09 Aug 2010 13:16
24 lines
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"?
#2316
Author: Michoo
Date: Mon, 09 Aug 2010 14:13
40 lines
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