Szkoda, że nikt (ze studentów) nie wpadł na to, że wystarczy jedna funkcja, by przedstawić wczytaną wartość w dowolnym systemie pozycyjnym. Chodziło tu o uzmysłowienie sobie ("odkrycie"), że wartość liczby nie jest trwale związana z jej reprezentacją i nie ma znaczenia to, jak liczba jest fizycznie reprezentowana w pamięci komputera. Dlatego było tak...
zapisze to matematycznie w postaci "bajtowej" gdzie jedna wielka litera to jeden bajt a 0 to jeden bajt tylko że równy zero X,Y / Z,A = 0W (wynik) + 0R (reszta) teraz reszta mnozona razy 256 czyli 0R * 256 = R0 R0 / Z,A = 0V i ostateczny wynik to W,V teraz lepiej to zapisałem ??? hehe
sorka zapomniałem napisac, chodzi o AVRy...
8 tysięcy przerwań na sekundę z nietrywialną obsługą na AVR niekoniecznie musi się udać. Co do reszty - albo C i uint64 odpowiednio przeskalowany (czyli liczymy nie w jednościach, a w tysiącznych), albo AVR, asembler i własny typ dokładnie taki jak trzeba np. 45-bitowy, i też liczymy w tysiącznych. Mnożenie i dzielenie uint64 może AVR zarżnąć. Z ARM...
a czy jest wogule w asemblerze dzielenie przez inne liczby niż 2 i jej wielokrotności bo znalazłem min. ldi r16,30/3 ale tylko tą komenda
Witam was serdecznie Mam taki oto problem jak już wyplułem po korekcji dziesiętnej liczbę: np. 2133 to teraz jak to w asm napisać żeby wykonać taką operacje (liczba znajduje sie oczywiście w 2 rejestrach:) np R6 (21) R7 (33) 10000 : 2133 czyli 10 tysięcy podzielić przez tą liczbę?? Jak to zrobić, bo wszystkie memoniki poznałem i nie znam prostego przejścia
Musisz dzielić przez 10 i resztę z dzielenia traktować po kolei jako jednostki, dziesiątki, setki, itd. Myślę, że podstawowe pytanie, to to, co to za asembler i jakie rozkazy zawiera.
Tu są procedury matematyczne dla '51: http://www.8052.com/codelib/math8051.asm Dzielenie 32 bitowych przez 16 bitowe bez znaku, to procedura UDIV32, a ze znakiem DIV32. Pozdrawiam.
W szkole podstawoej. Nazywa się to dzielenie pisemne, na przykład: http://www.math.edu.pl/pisemne-dzielenie Nie ma tam obrotów i obrotów się nie stosuje - są za to przesunięcia i odejmowanie. Tak - doszedłem do tego. Tak - mam procedury dzielenia dowolnych liczb wielobajtowych. Nie - nie podzielę się tutaj gotowcem bo to moja praca i na niej zarabiam....
Witam. Od 2 semestru rozpoczęło się u mnie programowanie w asemblerze. Jestem kompletnie zielony, a muszę obliczyć takie równanie: X = (a+b)/c * (a-b)/d, gdzie a,b,c,d to dowolne liczby, a X jest różne od 0. Mój kompilator to TASM. Generalnie mam problem z tym, że gdy np. dzielę jakąś liczbę to wyskakują mi jakieś serduszka, strzałki itp. Napisałem...
Ja mam algorytm i zrobiony podprogram wykonujący takie dzielenie, ale jest napisany na inny procesor. Dziwię się że ktoś jeszcze zajmuje się takimi procesorami. Z czystej ciekawości jestem ciekawy co cię zmusiło do stosowania takich uP?. Natomiast jeśli chodzi o dzielenie to łap mnie na GG, to jest sporo tlumaczenia zwłaszcza, że nie będę mógł ci pomóć...
Kto szuka http://www.piclist.com/techref/microchip...
Witam Muszę napisać w assemblerze 8086 program który podzieli 2 liczby double. Wiem że muszę odjąć cechy i to już zrobiłem. Problem jest z dzieleniem mantys, nie mam pojęcia jak to zrobić. Jedna mantysa ma 52 bit, więc muszę użyć przynajmniej 2 rejestrów. Podobno najlepiej zastosować metodę wielokrotnego odejmowania, ale jak to wykonać w praktyce? Byłbym...
Witam. Jestem bardzo wcześnie początkującym użytkownikiem assemblera i mam problem, już na samym starcie ;) Potrzebuję dodać do siebie dwie liczby i podzielić je przez trzecią, wcześniej zdefiniowane na szczęście (dla mnie :> ) . Równanie takie: (a+b)/c i wyświetlić wynik na ekranie. Ogólnie zadanie mam trochę bardziej rozbudowane, ale to powinno mi...
Witam. Kto ma lub napisze procedurkę dzielenia dwóch liczb dwubajtowych - wynik u mnie będzie zawsze jeden bajt więc starszy bajt wyniku można pominąć... z góry dzięki. ps. ja znalazłem tylko dzielenie 6-cio bajtowych, 4, 3 itp..... a 2 niema :-(
Witam wszystkich jestem studentem drugiego roku informatyki i Pan prof. zadał mi pytanie przewyższający moją zdolność rozumowania :D . Oto kod programu: [syntax=asm].686 extern _ExitProcess(at)4: near public _main _DATA SEGMENTdword public 'DATA' use32 Divisor1 DD 21 Divisor2 DD 2 Result DD 0 RemainderDD 0 _DATA ENDS _TEXT SEGMENTdword public 'CODE'...
Witam !! zaczołem właśnie uczyć się programować w asemblerze i podcza pisania napotkałem na problem i nie umię go rozwiązać ?? pisałem programik dzielący 2 liczby wpisane 16 i wynik tez jest podawany szesnastkowo (nie można użyć .386) i program sie kompiluje nie ma błedów ale niestety cos nie działa ????? bardzo prosze o pomoc kompiluje za pomocą "tasm"...
Witam. Potrzebuję napisać program, który sprawdzi, czy wprowadzona liczba naturalna z zakresu od 1 do 255, jest podzielna przez 7. Chciałem to zrobić przez resztę z dzielenia, bo gdy wyjdzie równa 0, wyświetli poprawny komunikat. Ale program nie trybi, chociaż błędu nie wywala żadnego, a w konsoli wyświetla chociażby to, że 4 jest podzielne, a 7 nie...
Witam. W poniższym algorytmie jest gdzieś błąd. Polega on na tym że niektóre liczy źle się dzielą. Chodzi o algorytm 32-bit/16-bit = 32-bit i reszta 32-bit Np. liczba 450221 podzielona przez 20 daje prawidłowy wynik. Natomiast ta sama liczba podzielona przez 60 już nie :( Musi istnieć jakiś niewielki błąd w algorytmie. Na dzień dzisiejszy niestety go...
Bede wdzieczny za algorytm na ASM umozliwiajacy dzielenie liczby 16-to bitowej przez 16-to bitowa. Mysle i mysle i nic mi do glowy nie przychodzi. Szukam i tez nic (ale moze za slabo). Dzieki i pozdrawiam bede wdzieczny za wszelkie sugestie
Witam, mam problem z dwoma zadaniami na tablicach w asemblerze, mianowicie: 1) ustawić bit zerowy na wartość drugiego bitu każdej liczby w tablicy 2) każda liczbę tablicy pomnożyć przez następna, występująca po niej. mam już "ramy" programu- funkcje zmieniające typ wprowadzanych liczb, pobieranie liczb do tablicy z klawiatury, potrzebuje tylko kilka...
Witam! Po udanym skompliowaniu programu MASMem, wywolujac program wyskakuje mi w lini komend : Przekroczenie dzielenia. Czy ktos wie dlaczego tak sie dzieje ? Co to oznacza ? I jak mozna temu zaradzic? Dodam, ze mam w programie kilka petel przesuwajacych bity w lewo i w prawo oraz kilka dzielen. Z gory bardzo dziekuje ! Pozdrawiam.
Witam potrzebuje pomocy z zadanie. Program ma dzielić 2 liczby z a i b. Nie mam pomysłu jak to zrocić by nie podawać wartości c [syntax=assembler] POB a pętla: SOM koniec POB c ŁAD b ODE c POB a DOD Jeden ŁAD a SOZ pętla koniec: POB c STP a: RST 12 b: RST 24 c: RST 2 Jeden: RST 1[/syntax][/code]
Nie, nie jest. DIV, to dzielenie liczb bez znaku, IDIV to dzielenie liczb ze znakiem.
to może niech ktoś pomoże rozwiązać mój problem :D chodzi mi o odejmowanie struktur typu czas HH:MM:SS zapisanych w spakowanym BCD w przypadku minut poprawki są banalne ale nad poprawianiem godzin siedzę już chyba z dwie godziny :cry:
Dziękuję za podpowiedzi. Mało precyzyjnie się wyraziłem, ale i tak wiedzieliście o co mi chodzi. Wprowadziłem małą poprawkę w swoim początkowym pytaniu. Tak chodzi o przedstawienie tych działań na liczbach stałoprzecinkowych w kodach znak-moduł (ZM) oraz uzupełnienie do dwóch (U2).Oczywiście oddzielne działania wykonuje dla ZM jak i dla U2 nie łącze...
Możesz pomnożyć resztę przez 1000 a następnie znowu podzielić to przez dzielnik. 1 x 1000 = 1000 1000/16 = 62.5 Czyli otrzymasz 62 i 8 reszty. Można by pomnożyć przez 10000 uzyskując na koniec wynik 625 ale wtedy dzielenie przez większe liczby nie będzie działało bo reszta będzie duża i pomnożona przez 10000 nie zmieści się w 16-tu bitach.
Sposób który pierwszy narzuca się aby liczbę przedstawić w postaci tekstu to znaleźć ilość jednostek, dziesiątek, setek, tysięcy, itd... w danej liczbie (dzieląc przez 1000,100,10). Następnie te znaki pozostaje już tylko "przesunąć" do znaków ASCII, a wiec dodać 0x30. Dla przykładu mamy liczbę 123, liczba setek: 1, liczba dziesiątek 2, liczba jednostek...
przekształciłem wzory do postaci w których występują liczby 2 do n-tej - czyli w asemblerze bez problemu (przesuwam w prawo lub w lewo i to mi dzieli lub mnoży x2). nie wiem jak mi to jeszcze wyjdzie (bo ze wzoru mam tam liczby 2do20) bo symulacje sobie przeprowadze jutro-kiedyś już coś podobnego robiłem i chodziło (tyle że na dużo mniejszych liczbach)...
Cze ! Opisowo wygląda to następująco: - w pętli, której warunkiem działania jest liczba16bit>0 przeprowadzasz dzielenie 16-to bitowe (mam taką procedurę) liczby16bit przez 10 - do reszty z dzielenia dodajesz 48 i masz kod ASCII cyfry (od końca) - pętla zakończy działanie gdy liczba16bit będzie równa 0 przykład: 65535/10=6553 (reszta=5) -> 5 6553/10=655...
Jest sposób aby wykonać ta procedurkę w asemblerze , ale nie wiem ile ona potrwa- a tobie zależy na szybkim wykonaniu obliczenia. Poniżej opisałem jak według mnie mogłoby to działać: Np. A=256 ; B=64 Deklarujemy tablice w której będą procentowe podzialy liczby (25%,50%,75%,100% itd) 1) porównanie liczb A=B, A>b, A<B 2) A>B (inkrementujemy odpowiednio...
Witam. Mam następujący problem, potrzebuję cały listing programu (komendy w programie typu MOV AH,BX itd) który wykonuje następującą czynność. Dzieli zdanie które składa się z max 80 znaków na pojedyncze wyrazy które umieszczane są poniżej a obok nich wyświetlana jest liczba znaków tworząca ten wyraz. Przykład: Ala ma kota. Ala 3 ma 2 kota 4 To wszystko,...
Hmm... widzę, że temat jest stary, ale może komuś to się przyda. Dzielenie przez 4096, jako że ta liczba jest potęgą dwójki (2^12) to zwykłe przesunięcie w prawo właśnie o te 12 bitów. Jeżeli XL:XH zawiera zliczone impulsy to podzielić to przez 4096 można tak: mov XL, XH ; skrócone podzielenie przez 256 ;) ldi XH, 0x00 ; wynik w XH zawsze będzie właśnie...
Witam. Gdzie znajdę gotowe procedury w asemblerze dla pic 16f84 np. mnożenie,dzielenie liczb 32-bitowych itp.
Problem staje się prosty gdy możemy się posłużyć określeniem ogólnym "czas", jednak gdy mamy osobno minuty i godziny - jest inaczej. Procki nie operują na pojęciach ogólnych , tylko na liczbach i zapewniam Cię , że porównywanie liczb(nawet wielobajtowych) jest prostrze niż np. ich dzielenie. Więc może skupmy się jedynie na sposobie porównania dwóch...
Witaj Nie wiem w czym widzisz problem, mnozysz czy dodajesz rownie dobrze liczby 32bitowe takze w asemblerze. Troszke wiecej problemy jest gdy je dzielisz, ale to tez do przeskoczenia (zamiana na ułamki i mnożenie) Duza liczba bitopw jest potrzebna gdy mnożysz liczby z granic przedziałów, czy ułamki, a tak to wystarczy ci najstarsze 8bitów z wyników...
Witam Mam ogromna prośbę. Potrzebuje przeanalizować 2 programy które niestety nie działają poprawnie. Programy pisałem sam lecz niestety sa w nich pewne błędy które niestety nie mogę znaleźć. Po asemblacji działają jednak w programie symulacyjnym nie wyświetlają tego co powinny, wiec s to programy bardziej wychodzące z tego co ma robi dany program niż...
żadne, wszystko zależy od tego jak wygląda Twój program i czy umiesz posługiwac się asemblerem. Przy dobrym wietrze koło 30% używaj szukaj I tu bym się niezgodził. Zanim zacząłem programować mikroprocesory jednoukładowe w C moje największe programy napisane mieściły się w 2kb pamięci i też wykonywały obliczenia matematyczne typu dzielenie i mnożenie,...
Witam. Czy ktoś z kolegów natknął się na procedury dzielenia dla AVR. Konkretnie chodzi mi o dzielenie liczby 24bit przez 16bit lub 32bit przez 16bit wynik liczba całkowita może być bez reszty no i warunek procedura nie może przekraczać 450cykli. Serdeczne dzięki za pomoc. Pozdrawiam Marek D.
Rozumiem, że przez "obliczyć %" masz na myśli policzenie 100 * x/15360. Żeby było prościej liczysz x/153 - błąd nieduży - przy niskich wartościach niweluje potrzebę korekty zaokrąglania, przy bliskich 100% błąd jest największy i dochodzi do 0.5%. Możesz sobie ręcznie zoptymalizować procedurę dzielenia dla znanego dzielnika - 153 to 0x99 binarnie, a...
Tylko że jak pomnożę całość przez 10 to już nie zrobię tego na 8 bitach. Czy jak dziele 2 liczby inie dzielą się całkowicie to ustawiany jest jakiś bit lub kilka ? Poza tym nie mam zielonego pojęcia jak wyświetlić pojedynczą cyfrę na wyświetlaczy z jakiejś 3 cyfrowej liczby zapisanej w końcu w postaci hex. Zakres liczb przy podanym przeze mnie wzorze...
Dzielenie przez 8 to nic innego jak przesunięcie o 8 bitów w prawo, czyli w przypadku 8-bitowych procesorów wywalenie najmłodszego bajta wyniku. Dzielenie prze 8 to nie przesunięcie o 8 bitów w prawo, tylko o 3 bity. Do autora: dzielnie wlaczysz, tracisz czas, a na końcu koledzy podsyłają ci funkcje arytmetyczne zaimplementowane w C. Jaki jest więc...
Witam, powoli kończę modernizację swojej nawijarki do cewek i transformatorów, licznik liczby zwojów postanowiłem wykonać na mikrokontrolerze jak w tytule PIC16F877A. Właściwie wszystko sprzętowo działa, za to utknąłem na końcu programu, otóż licznik może zliczać do 65535 zwojów, wszystko wyświetlam na wyświetlaczu 2x16. Mój problem związany jest z...
Z pewnością sposobów jest mnóstwo. Przypomniałem sobie troszkę asembler mcs51. Mam nadzieję, że program w asemblerze wyjaśni wątpliwości (albo pogłębi ;-) ). Skorzystanie z "tabliczki dzielenia" lub "tabliczki mnożenia" na liczbach o podstawie 2^8 przedstawia poniższy program. Tabelę rozbiłem na 3x256 bajtów. Obliczenie realizowane wg zależności x=256*a+b...
Z jakiego zakresu masz tam liczby? Ja też pisze w asemblerze i jak mam wyświetlać liczby to jeśli mam np. zakres 0-999 to dzielę sobie tą liczbę najpierw przez 100 i mam liczbę setek. Resztę z tego dzielenia dzielę przez 10 i mam dziesiątki a reszta z tego dzielenia to jedności. Z tego co pamiętam to trzeba do tego wyniku dodać 48 i wysłać na wyświetlacz....
Strasznie się zapętliłeś z adresowaniem. MOV A,4 oznacza prześlij do akumulatora zawartość komórki o adresie 4 (czyli to samo co MOV A,R4) natomiast MOV A,#4 oznacza wpisz do akumulatora wartość 4 Proponuję zacząć używać symulatora (np. AVSIM'a) Moja propozycja kodu: MOV R1,#4 ;LICZBA ELEMENTÓW MOV R2,#0 ;ZEROWANIE BUFORA SUMY PETLA: MOV DPTR, #Tablica...
Witam, Nie twierdzę że mój sposób sprawdzi się w Bascomie, dużo lepiej sprawdzi się asemblerze. Napisałem w Bascomie tak dla przykładu, myślę że tak jest przejrzyście, a chodzi po prostu o zasadę - sposób. AVR - serii Atmega to 8bitowce, więc tutaj w grę wchodziłoby tylko 8bit/8bit. Natomiast co ciekawe, AVR32 też nie ma dzielenia sprzętowego. Całkiem...
Przyjmijmy, że masz funkcje do operowania na liczbach o dowolnej długości (dodawanie, odejmowanie, mnożenie, dzielenie, dzielenie modulo). w takim przypadku zamiana liczby "42949672954294967295" na postać hex może wyglądać tak: t = 0 dla_kazdej_cyfry(od lewej do prawej){ t = t*10 + cyfra; } wtedy masz zamieniony ciąg znaków na liczbę...
Okey, tak zrobię. A swoją drogą Debbuger mówi mi, że gdzieś w moim programie występuje dzielenie przez zero, ale nie jestem w stanie określić kiedy to może się dziać. Byłbyś w stanie pomóc z tym?
Jak kolega napisał musisz zamienić liczbę na odpowiednie znaki ASCII i wydrukować te znaki. Możesz napisać uniwersalną procedurę zamiany, działającą na zasadzie: dzielenie i resztą z dzielenia indeksowanie tablicy cyfr szesnastkowych (dla 10 i 2 wykorzysta mniej cyfr). Możesz też napisać oddzielne procedury i wykorzystać fakt, że na 2 i 16 konwertuje...
Zakladam ze liczby sa w formacie X * 10^Y gdzie X to jest wartosc a Y to jest potegi dziesiatki Mnozenie: -mnozysz pierw liczby -dodajesz potegi dziesiatki Dzielenie: -wyrownujesz potegi dziesiatki do tej mniejszej -potem je jedynkujesz -dzielisz normalnie te liczby -dzielisz Dodawanie: -wyrownujesz potegi dziesiatki do tej mniejszej -dodajesz liczby...
Trochę dawno pisałem w asm i nie wiem czy jest gotowe przerwanie do wypisywania liczb ale możesz zrobić np. tak: 123 :10 = 12 reszta 3 12 : 10 = 1 reszta 2 1 : 10 = 0 reszta 1 Dzielisz liczbę przez 10 i wrzucasz reszty z dzielenia na stos dopóki wynik z dzielenia różny od 0. Później ściągasz ze stosu dodajesz 48 i wypisujesz.
Witam Na czwartek muszę przygotować listingi programów napisanych w asemblerze które wykonają poniższe działania: 1. Dane są liczby: A=0F1h, B=00011111b. Obliczyć binarnie A+B, A-B, B-A. Podać wynik w postaci binarnej i szesnastkowej. 2. Napisać program mnożenia x4 liczby umieszczonej w rejestrze R7 bez użycia instrukcji mul ab. 3. Napisać program...
To znaczy masz zrobić konwersję binarną na BCD ? R0 - od 0 do 256 R1 - jednosci 2 R2 - dziesiatki 7 R3 - setki 1 Algorytm 1: start: R0:=liczba R1:=0 R2:=0 R3:=0 while R0>=100 do R0:=R0-100 Inc R3 end while R0>=10 do R0:=R0-10 Inc R2 end R1:=R0 Algorytm 2 DIV - dzielenie całkowite MOD - reszta z dzielenia (łatwiej...
Przy dzielenie przez dwa tracisz jeden bit znaczący stąd taki sam wynik otrzymasz przy liczbei x parzystej i niepraszystej na przykład dla x=10 i x=9 (10-3)/2=3 (9-3)/2=3
Zwykłe binarne dzielenie nierestytucyjne przy 10 bitach będzie prawdopodobnie prostsze, niż każda z tych kombinowanych metod - to w końcu tylko 8 obiegów pętli z porównaniem, przesunięciem i warunkowym odejmowaniem, tyle że te trzy operacje trzeba zrobić na 10 (czyli w praktyce 16) bitach. Gdyby toto miało przynajmniej 8-bitowe dzielenie, jak stary...
Witam Mam uklad na ATmega8 , z wyswietlaczem LCD itd. i wykorzystuje wejscia ADC kontrolera do pomiaru napiecia (przynajmniej na wejsciu ADC). Co wazne, pisze w asemblerze, a trafilem na problem -byc moze banalny ale juz troche sie mecze, tez troche szukalem i ... Czy ktos moze wyjasnic w jakis sposob liczbe binarna w Asemblerze !! zamienic na 3 liczby...
ten przedział (0,1) można zrobić w ten sposób: short a/short b, gdzie a<b i nie dzielić tego bo według mojej wiedzy (może być bardzo wybrakowana [wiedza]) wyjdzie 0 więc zamiast dzielenia ten mniejszy short mnożę sobie przez kolejna liczbę i wynik mam na dwóch shortach, a później dzielę przez tego większego shorta i znów wracam rozmiarem do pojedynczego...
a w jakim języku programujesz ? Bo np.: w Bascomie jest gotowa funkcja. Programuje w asemblerze. Teraz mi się przypomniało, że 6 się dodaje po dodaniu dwóch liczb bcd. Najpierw do mniej znaczącej liczby. Jesli nie nastąpi przepełnienie półbajtu to się tą 6 spowrotem odejmuje, jak nastąpi to się zostawia i robi to samo ze starszym półbajtem. ... Więc...
Dziekuje za szybką odpowiedź. Proszę mi uwierzyć, że zadałem sobie sporo trudu i rozumiem na jakiej zasadzie wzór działa i jak fajnie można uniknąć kalkulacji floating point w asemblerze za jego pomocą. Użyłem go w też w swoim projekcie. Jedynie czego nie mogę zrozumieć to w jaki sposób wyliczyć ilość wymaganych przesunięć w prawo. Autor projektu aby...
Sumę liczb pierwszych mniejszych od 2^64 można (abstrahując od faktu, że wyznaczenie ich wszystkich przekracza możliwości łatwo dostępnych komputerów) wyliczyć dysponując zmiennymi uint64_t: [syntax=c]uint64_t s0=0, s1=0, p; ... if ((s0+=p) < p) s1++; ...[/syntax] i s1,s0 w sumie utworzą 128-bitową liczbę będącą sumą wszystkich p. Gorzej z wykonaniem...
asembler dzielenie dzielenie asembler dzielenie liczba
instalacja fiata mostkowanie stereo rozdzielacz vectra
problemy diagbox problemy diagbox
Brak wskazań na desce rozdzielczej Citroen C4 Słabe ciśnienie spryskiwacza w samochodzie - przyczyny i rozwiązania