Thread View: pl.comp.lang.asm
12 messages
12 total messages
Started by Remek
Sun, 26 Aug 2007 09:34
Systemy liczbowe
Author: Remek
Date: Sun, 26 Aug 2007 09:34
Date: Sun, 26 Aug 2007 09:34
7 lines
986 bytes
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
Author: Bogdan (bogdro)
Date: Sun, 26 Aug 2007 16:08
Date: Sun, 26 Aug 2007 16:08
26 lines
2145 bytes
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
Author: Remek
Date: Sun, 26 Aug 2007 16:55
Date: Sun, 26 Aug 2007 16:55
24 lines
1789 bytes
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
Author: Bogdan (bogdro)
Date: Mon, 27 Aug 2007 15:10
Date: Mon, 27 Aug 2007 15:10
42 lines
2707 bytes
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
Author: Remek
Date: Mon, 27 Aug 2007 20:02
Date: Mon, 27 Aug 2007 20:02
9 lines
1255 bytes
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
Author: Remek
Date: Mon, 03 Sep 2007 10:33
Date: Mon, 03 Sep 2007 10:33
8 lines
1171 bytes
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
Author: Bogdan (bogdro)
Date: Mon, 03 Sep 2007 15:33
Date: Mon, 03 Sep 2007 15:33
23 lines
1827 bytes
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
Author: Remek
Date: Mon, 03 Sep 2007 18:10
Date: Mon, 03 Sep 2007 18:10
29 lines
1809 bytes
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
Author: Remek
Date: Thu, 06 Sep 2007 12:08
Date: Thu, 06 Sep 2007 12:08
7 lines
1263 bytes
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
Author: Kicer
Date: Thu, 06 Sep 2007 15:01
Date: Thu, 06 Sep 2007 15:01
14 lines
1447 bytes
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
Author: Jakub Bogusz
Date: Thu, 06 Sep 2007 15:07
Date: Thu, 06 Sep 2007 15:07
13 lines
1488 bytes
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
Author: Wojciech Muła
Date: Thu, 06 Sep 2007 15:12
Date: Thu, 06 Sep 2007 15:12
13 lines
1433 bytes
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