🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.asm
12 messages
12 total messages Started by Remek Sun, 26 Aug 2007 09:34
Systemy liczbowe
#1482
Author: Remek
Date: Sun, 26 Aug 2007 09:34
7 lines
986 bytes
Witam

Poszukuję procedur w asemblerze konwertujących do różnych systemów
liczbowych liczby większe niż dword. Oczywiście chodzi o pracę na PC IBM
z procesorem 32 bitowym.

Pozdrawiam  Remek
Re: Systemy liczbowe
#1483
Author: Bogdan (bogdro)
Date: Sun, 26 Aug 2007 16:08
26 lines
2145 bytes
Remek pisze:
> Witam
> 
> Poszukuję procedur w asemblerze konwertujących do różnych systemów
> liczbowych liczby większe niż dword. Oczywiście chodzi o pracę na PC IBM
> z procesorem 32 bitowym.

 Chodzi oczywiście o *wyświetlanie* liczb większych niż dword w
postaci liczb w różnych systemach liczenia.
 Jeśli system ma podstawę postaci 2^n (np. ósemkowy czy szesnastkowy),
spawa jest prosta - wypychasz n bitów (po jednym) w lewo do jakiegoś
wolnego rejestru, po czym w odpowiedni sposób wyświetlasz ten rejestr
(jak 2^n < 10, to po prostu dodajesz kod '0', jak nie, to trzeba
przekładać na literki).
 Każdy inny system wprowadza dzielenie. Dzielisz liczbę, którą chcesz
wypisać przez podstawę wybranego systemu liczenia, np. 7. Innymi
słowy, dzielisz długą liczbę przez liczbę, która mieści się w 32
bitach, a dokładnie ten algorytm masz u mnie na stronie :) I sprawa
jest identyczna, jak ze "zwykłymi" liczbami - zachowujesz reszty, po
czym wypisujesz je wspak, w razie potrzeby przerabiając na literki.

-- 
Pozdrawiam/Regards - Bogdan                         (Linux & FreeDOS)
Kurs asemblera x86  (DOS & Linux):  http://rudy.mif.pg.gda.pl/~bogdro
Grupy dyskusyjne o asm:  pl.comp.lang.asm alt.pl.asm alt.pl.asm.win32
Rozmawiaj bezpiecznie: www.JabberPL.org Surfuj anonimowo: tor.eff.org
Re: Systemy liczbowe
#1484
Author: Remek
Date: Sun, 26 Aug 2007 16:55
24 lines
1789 bytes
Użytkownik "Bogdan napisał:

> Chodzi oczywiście o *wyświetlanie* liczb większych niż dword w
> postaci liczb w różnych systemach liczenia.

Tak, ale nie tylko. W drugą stronę również. Także konwersję znaków z
edita na liczbę. Próbuję rozgryźć problem konstrukcji kalkulatora, do
którego mógłbym wprowadzić np. 20 cyfrową liczbę dec i pomnożyć ją przez
drugą też 20 cyfrową. Po drodze trzeba zrobić parę konwersji i tu jest
problem. Do dworda jest dobrze, a powyżej sobie nie umiem tego nawet
wyobrazić.

>  Każdy inny system wprowadza dzielenie.

I to są właśnie schody.

> a dokładnie ten algorytm masz u mnie na stronie

Szukałem go i znalazłem w dziale Linuksowym w postaci pdf'a. Jednak na
moim sprzęcie wszystko powyżej Readera 4 strasznie się muli. A ten nie
daje rady. Byłbym Ci ogromnie wdzięczny za postać tekstową, albo html.

Pozdrawiam  Remek
Re: Systemy liczbowe
#1485
Author: Bogdan (bogdro)
Date: Mon, 27 Aug 2007 15:10
42 lines
2707 bytes
Remek pisze:
> Użytkownik "Bogdan napisał:
> 
>> Chodzi oczywiście o *wyświetlanie* liczb większych niż dword w
>> postaci liczb w różnych systemach liczenia.
> 
> Tak, ale nie tylko. W drugą stronę również. Także konwersję znaków z
> edita na liczbę.

 Konwersja tekstu na liczbę to właśnie jest "w drugą stronę", bo to
jest równoważne wczytywaniu liczby (co za różnica, czy z klawiatury, z
pliku, czy łańcucha?).

> Próbuję rozgryźć problem konstrukcji kalkulatora, do
> którego mógłbym wprowadzić np. 20 cyfrową liczbę dec i pomnożyć ją przez
> drugą też 20 cyfrową. Po drodze trzeba zrobić parę konwersji i tu jest
> problem. Do dworda jest dobrze, a powyżej sobie nie umiem tego nawet
> wyobrazić.

 Mnożenie masz u mnie na stronie (patrz link poniżej). Dzielenie 2
liczb dowolnej długości jest nieco bardziej skomplikowane, tu odsyłam
do 32-bitowej wersji książki "Art of Assembler".

>> a dokładnie ten algorytm masz u mnie na stronie
> 
> Szukałem go i znalazłem w dziale Linuksowym w postaci pdf'a. Jednak na
> moim sprzęcie wszystko powyżej Readera 4 strasznie się muli. A ten nie
> daje rady. Byłbym Ci ogromnie wdzięczny za postać tekstową, albo html.

 Cokolwiek jest w PDFie, jest na stronie, bo i PDFy, i wersja tekstowa
jest generowana automatycznie z całej zawartości HTML. To chyba po
prostu było tak oczywiste, że aż przeoczyłeś:

http://rudy.mif.pg.gda.pl/~bogdro/dos/a_kurs14.htm#a_kurs1404

 Mnożenie jest o 1 sekcję wyżej na tej stronie.

-- 
Pozdrawiam/Regards - Bogdan                         (Linux & FreeDOS)
Kurs asemblera x86  (DOS & Linux):  http://rudy.mif.pg.gda.pl/~bogdro
Grupy dyskusyjne o asm:  pl.comp.lang.asm alt.pl.asm alt.pl.asm.win32
Rozmawiaj bezpiecznie: www.JabberPL.org Surfuj anonimowo: tor.eff.org
Re: Systemy liczbowe
#1486
Author: Remek
Date: Mon, 27 Aug 2007 20:02
9 lines
1255 bytes
Użytkownik "Bogdan (bogdro)" napisał:

> http://rudy.mif.pg.gda.pl/~bogdro/dos/a_kurs14.htm#a_kurs1404

Piękne dzięki za wskazówkę. Może głupio się tłumaczyć, ale strona tak się
rozrosła, że niełatwo trafić na potrzebny materiał. Do pdf'a odesłał mnie
link z Googla i to mnie zmyliło.

Pozdrawiam  Remek
Re: Systemy liczbowe
#1487
Author: Remek
Date: Mon, 03 Sep 2007 10:33
8 lines
1171 bytes
Ciąg dalszy problemu. Mam zmienną typu qword. Ładuję do niej dane:

   mov dword ptr zmienna, eax

Dane są ładowane do górnej połówki "zmienna". Jak je przesunąć do dolnej
połówki?

 Pozdrawiam  Remek
Re: Systemy liczbowe
#1488
Author: Bogdan (bogdro)
Date: Mon, 03 Sep 2007 15:33
23 lines
1827 bytes
Remek pisze:
> Ciąg dalszy problemu. Mam zmienną typu qword. Ładuję do niej dane:
> 
>    mov dword ptr zmienna, eax
> 
> Dane są ładowane do górnej połówki "zmienna". Jak je przesunąć do dolnej
> połówki?

 Po tej komendzie dane lądują w górnych 32 bitach?
 Ale na temat: zmienna typu QWORD ma 2 dwordy, młodszy w [zmienna],
starszy w [zmienna+4]. Proponuję na początek:

	mov	eax, [zmienna+4]
	mov	[zmienna], eax

 Jeśli chodziło o przesunięcie arytmetyczne bitowe w prawo, to mów. A
z resztą, gotowy kod masz w tym samym rozdziale na mojej stronie :)

-- 
Pozdrawiam/Regards - Bogdan                         (Linux & FreeDOS)
Kurs asemblera x86  (DOS & Linux):  http://rudy.mif.pg.gda.pl/~bogdro
Grupy dyskusyjne o asm:  pl.comp.lang.asm alt.pl.asm alt.pl.asm.win32
Rozmawiaj bezpiecznie: www.JabberPL.org Surfuj anonimowo: tor.eff.org
Re: Systemy liczbowe
#1489
Author: Remek
Date: Mon, 03 Sep 2007 18:10
29 lines
1809 bytes
Użytkownik "Bogdan (bogdro)" napisał:

>  Po tej komendzie dane lądują w górnych 32 bitach?

Oczywiście, że nie. Pomyliłem. Nie mogę się przwyczaić do "zboczonego"
sposobu zapisywania danych do pamięci. Dzięki za "wyprostowanie".

> na temat: zmienna typu QWORD ma 2 dwordy, młodszy w [zmienna],
> starszy w [zmienna+4]. Proponuję na początek:

> mov eax, [zmienna+4]
> mov [zmienna], eax

Ja mam zmienną:

zmienna  dq

Co nie zmienia faktu, że działa również tak:

  mov zmienna, eax
  mov zmienna+4, edx

Zresztą jak zwykle po Twoich wyjaśnieniach wszystko staje się łatwe i
proste.
Teraz muszę znaleźć sposób, aby tę liczbę hex zapisana w zmiennej
zwizualizować w postaci dec. To jet główne zadanie.

Dziekuję i pozdrawiam  Remek
Re: Systemy liczbowe
#1490
Author: Remek
Date: Thu, 06 Sep 2007 12:08
7 lines
1263 bytes
Kontynuując temat. Zrobiłem konweter Hex/Dec działający w zakresie 4 x
dword. Proszę o informację, czy wynik:

FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFh =
340282366920938463463374607431768211455d

Pozdrawiam  Remek
Re: Systemy liczbowe
#1491
Author: Kicer
Date: Thu, 06 Sep 2007 15:01
14 lines
1447 bytes
Remek wrote:

> Kontynuując temat. Zrobiłem konweter Hex/Dec działający w zakresie 4 x
> dword. Proszę o informację, czy wynik:
> 
> FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFh =
> 340282366920938463463374607431768211455d
> 
te dziesietne mi sie miesci w kalkulatorze, hex juz nie, ale dec->hex
zwraca 16x F (wiec zgaduję ze gbyby nie ograniczenia kalkulatora to
będzie tak jak masz ;)
-- 
Michał Walenciak,   gg: 3729519,  mail: Kicer86 na gmail kropka com
http://kicer.elsat.net.pl
Re: Systemy liczbowe
#1492
Author: Jakub Bogusz
Date: Thu, 06 Sep 2007 15:07
13 lines
1488 bytes
W Cz, 06 IX 2007 o 12:08 GMT, Remek napisał(a):
> Kontynuując temat. Zrobiłem konweter Hex/Dec działający w zakresie 4 x
> dword. Proszę o informację, czy wynik:
>
> FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFh =
> 340282366920938463463374607431768211455d

$ echo 'ibase=16;FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF' | bc
340282366920938463463374607431768211455


-- 
Jakub Bogusz  |  http://qboosh.pl/
Re: Systemy liczbowe
#1493
Author: Wojciech Muła
Date: Thu, 06 Sep 2007 15:12
13 lines
1433 bytes
Remek wrote:
> Kontynuując temat. Zrobiłem konweter Hex/Dec działający w zakresie 4 x
> dword. Proszę o informację, czy wynik:
>
> FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFh =
> 340282366920938463463374607431768211455d

Zainstaluj sobie interpreter Pythona, obsługuje długie liczby:

>>> 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
340282366920938463463374607431768211455L

w.
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