sorka zapomniałem napisac, chodzi o AVRy...
Moze mi ktos wytlumaczyc jak napisac program do dzielenia liczb czterobajtowych przez dwubajtowe w asemblerze na at89c2051.
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...
Do dzielenia liczb w asemblerze bez znaku służy komenda div lub idiv . Formaty DIV reg DIV mem Dzielna musi być w AX lub DX:AX lub EDX:EAX. Dla AX wynik jest w AL a reszta w AH (operandy 8bit) Dla DX:AX wynik w AX reszta DX (operandy 16 bit) Dla EDX:EAX wynik w EAX reszta w EDX (operandy 32 bit) Do dzielenia ze znakiem służy idiv Jak chcesz się bawić...
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...
Witam Szukam procedury dzielenia dużych liczb w asemblerze z wykorzystaniem przesunięć i obrotów. Ma ona tę cenna właściwość, że dzielnik może być większy niż w tradycyjnym dzieleniu poleceniem div. Na którejś grupie news podana była taka procedura, ale dawno i nie mogę znaleźć w archiwach. Z góry dziękuję za pomoc i pozdrawiam forumowiczów.
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óć...
Witam. Gdzie znajdę gotowe procedury w asemblerze dla pic 16f84 np. mnożenie,dzielenie liczb 32-bitowych itp.
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
Kto szuka http://www.piclist.com/techref/microchip...
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...
Nie, nie jest. DIV, to dzielenie liczb bez znaku, IDIV to dzielenie liczb ze znakiem.
No to w takim układzie zerujesz sobie zmienną i w pętli dla każdej cyfry od lewej do prawej wykonujesz: mnożenie przez 10, dodawanie wartości cyfry... Jedyne czego w takim układzie potrzebujesz, to funkcji do mnożenia i dodawania liczb dowolnej długości.. do konwersji w przeciwną stronę liczbę dzieli się przez 10(lub przez inną podstawę) i resztę dopisuje...
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 16-to bitową robisz dokładnie tak samo tylko do dzielenia trzeba użyć procedury dzielenia liczby 16-to bitowej przez 8-mio bitową.
Dzielenie jest łatwe w uproszczeniu, jeśli np. obie liczby mają jednakową ilość zer z prawej strony, to o tyle mozna je przesunąć w prawo. Ogólnie algorytm dzielenia jak liczb dziesiętnych w podstawówce. Mnożenie jest już w µkontrolerze i to nawet w postaci cząstkowej fmul .
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:
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...
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...
Przede wszystskim trzeba wiedzieć co to za procesor. Domyślam się że 8-bit - więc nie ma instrukcji do dzielenia 16-bit (pomijam jakieś 'super-wynalazki' z układem arytmetyki zmiennoprzecinkowej itp.) Trzeba napisać lub poznać podprogram który dzieli liczby 16 bitowe i według tego się kierować.
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.
A wiec tak programuje w jagodzie chce napisać kalkulator i z dodawaniem odejmowaniem mnożeniem i dzieleniem nie mam problemu gdy w programie mam tylko jedną operacje z góry określoną prze zemnie np dodawanie dwóch liczb i je wyświetlenie na LCD. ale problem jest w tym że nie wiem jak samemu wybierać co chce zrobić dodawanie czy odejmowanie itp. 1.wczytuje...
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...
ponieważ 51 nie ma sprzętowego dzielenia liczb 16 bitowych więc kolega musi poszukać sobie algorytmu do dzielenia takowych liczb i ten algorytm sobie zaimplementować prosta sprawa jeśli nie uda się znaleźć to ja udostępnie ale uprzedzam jest po angielsku jak zresztą cała współczesna elektronikia (no poza drobnymi wyjątkami) :D
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...
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...
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...
Witam, dostałem do napisania program w asemblerze, dla procesora 8086. Program ma być napisany w środowisku dosboxa. Cel programu to wykonanie operacji dla liczb 79 i 82 -dodawania -odejmowania -mnożenia Wyniki mają być wyświetlone w sposób dziesiętny w osobnym programie -dzielenia i wyświetlenie wyniku w sposób dziesiętny całkowitego - wyświetlenia...
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...
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...
Musisz jeszcze pamiętać że akumulator jak i rejestry prawdopodobnie są ośmiobitowe a co za tym idzie nie możesz sobie tak bezmyślnie dodawać szesnastu liczb i trzymać ich sumy w akumulatorze bo się tam ta suma nie zmieści. Wynik musisz zapisywać na dwóch bajtach i dopiero dodawać kolejną bajtową liczbę. Zazwyczaj w asemblerze, ale to zależy od konkretnego...
Rozwiązanie prawie jak na tacy: http://www.engr.colostate.edu/EE251/Labs... opis jest dla MC 68HC12. Jak słusznie zauważyłeś, Motorola 68K nie ma rozkazu mnożenia (ani dzielenia) BCD, trzeba więc najpierw wykonać konwersję do bin, przemnożyć i wynik zamienić na BCD. Na upartego, można ręcznie mnożyć BCD, algorytm jest opisany tu: http://www.evergreen.edu/biophysics/tech...
Czasem musimy podzielić wartość zmiennej przez stałą, która NIE JEST całkowitą potęgą dwójki. Można chytrze wykorzystać wbudowaną w procesor mnożarkę. A nawet bez mnożarki sposób jest dobry, bo dzielenie jest przynajmniej dwa razy dłuższe i wolniejsze od mnożenia. Przyjmijmy, że chcemy dzielić bajt X przez stałą D. Znajdźmy „k”, największą...
Witam, mam pewien problem. Mam napisać na zajęcia licznik,który bedzie używał dptru a nie rejestrów, ani timerów. Program na rejestrach mam zrobiony niestety brakuje mi pomysłu na ten na dptr. Mam prośbę żeby ktoś podsunął mi jakiś algorytm. Dodatkowo prowadzący zaznaczył,że program musi używać dzielienie 16 bitowego, co już też mam, ale złozyć to wszystko...
Kolega asembler wie jaki kolega asembler genreuje kod. W zaleznosci do zastosowania stosuje kilka metod mający swoje wady i zalety czas/wielkosc kodu/ilość wykorzystywanych rejestów Najprostrza jest oczywiscie metoda cyklicznego odejmowania. Dokładna metoda która była tu optymalizowana wspólnie na elektrodzie i doszło o ile pamietam do 324 taktów przy...
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 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,...
Tutaj jest kod na dzielenie 2-óch liczb 8-bitowych dla AVR: ;* "div8u" - 8/8 Bit Unsigned Division ;* ;* This subroutine divides the two register variables "dd8u" (dividend) and ;* "dv8u" (divisor). The result is placed in "dres8u" and the remainder in ;* "drem8u". ;* ;* Number of words...
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. 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...
Widzę żywą reakcję. Cieszy mnie to.Sam jestem automatykiem i widzę że tacy są również w RTV-forum. Co do sterowania fazowego grzałkami 18 KW (pisał o tym POLO2) to niezły byśmy mieli zakłucacz. Oczywiście teoria regulacji w regulatorze PID dotyczy wielkości ciągłych ale implementuje się takie układy w elektronice cyfrowej masowo. W równaniu regulatora...
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, 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...
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....
Pewnie. A później amatorzy programowania dzięki takiemu podejściu zapisują proste zmienne jako float albo nie wiedzą jaka jest różnica dla działania programu pomiędzy dzieleniem przez 8 a dzieleniem przez 9. Wiedza o asemblerze jeszcze nikomu nie zaszkodziła czego nie można powiedzieć o niewiedzy. Odpowiedziałbym jednak cytatem, że "premature optimization...
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...
Witam. Otóż, mam do zrealizowania projekt zaliczajacy laboratoria na uczelni (forma odrobienia nieobecnosci). Z racji zakończenia zajęć dydaktycznych, cały projekt mam zrobić w Ride7. Pewien pomysł mam, jednak nie wiem jak poradzić sobię z pierwszą częśćią zadania. Oto treść projektu, a pod nim to co do tej pory przyszło mi do głowy. "Program ma pobierac...
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.
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"...
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...
ż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, Na wejściu mamy 40-bitową liczbę binarną, potrzebujemy ją skonwertować na zapis przy podstawie 10. Chcemy tego dokonać bez angażowania 'dużej biblioteki'. Najlepiej jest tego dokonać metodą kompensacyjną. [syntax=C] /* niezbędne deklaracje np. uint8_t arr[5]; itp. Także kolejność lsb..msb bardziej pożądana, ale nie niezbędna */ /* Tablica użyta...
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.
ZAD. 1. Przygotować i uruchomić programy w języku asemblera 8051: a) kopiowania N-bajtowego obszaru TABL 1 z pamięci kodu do pamięci wewnętrznej DATA (obszar TABL2), b) kopiowania bit po bicie w pamięci DATA fragmentu danych z obszaru TABL2, a następnie bajt po bajcie i utworzenie obszaru TABL3 c) kopiowania obszaru TABL2 do zewnętrznej pamięci XDATA...
Tu jest taki dość "przyjazny" algorytm, bez dzielenia i mnożenia, ale potrzebne są instrukcje przesunięć logicznych, porównywania, oraz AND i OR http://www.cp.eng.chula.ac.th/~krerk/pub... Jest jeszcze coś takiego, myślę, że Ci będzie pasować. Liczy pierwiastek z 32 bitowej liczby naturalnej (n), wynik w root: root=0 for(N=15;...
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...
Swego czasu w EP był kurs asemblera i tam pośród różnych innych procedur w asembelerze były procedury dzielenia wielobajtowego. Nie ma wprawdzie 16 przez 16 ale są inne DZIE3216.ASM DZIEL328.ASM http://www.ep.com.pl/pobierz.php?id=65 W końcu liczba 2 bajtowa to tez liczba 4bajtowa z dwoma bajtami równymi "0x00" Pozdrawiam ------- tutaj strona z pozostaBymi...
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...
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?
Pytanie jest co wydrukuje instrukcja I.14. Program ten sie nie skompiluje.. Ale tu akurat widać, że to jest tylko fragment programu. Może wystarczy odpowiedź, że wydrukuje (czterocyfrową) liczbę szesnaskową, liczbę dziesiętną i jeszcze dwie dwucyfrowe liczby dziesiętne rozdzielone myślnikiem? Anegdota - dawno, dawno temu pisałem egzamin z asemblera....
najpierw muszę zaprojektować analogowy filtr wedłóg schematu 1 w pdf kolegi następnie muszę wyliczyć alfa , beta i gama które są stałe dla każdego filtru a następnie muszę postępować według algorytmu z rysunku 9a Dokładnie tak :!: , ale musi być jakieś ale :D . Podane zostały jedynie uproszczone wzory na alfa, beta i gamma, wykorzystujące SAA (Small...
Można się bawić w STMy i kombinowanie z grafiką, można kupić np. FT80x lub FT81x i mieć za parenaście złotych gotowy akcelerator graficzny, który realizuje wysokopoziomowe polecenia graficzne, w efekcie nawet 8-bitowy MCU będzie generował grafikę lepszą niż STM32Fxx... Oczywiście OpenGL jest poza zasięgiem nie tylko 8-bitowców, ale nawet wspomnianych...
To przyklad funkcji do konwersji liczby na stringa z zastosowaniem operatora modulo. Dlaczego tak długo i nieelastycznie? Jesli w ogóle to tak: (ale jest standardowa funkcja itoa,uitoa itd, być moze w asemblerze a wtedy modulo i dzielenie być może oszczędniej robi) To dwie najbardziej kosztowne operacje. Optymalizować można też przez wprowadzenie odejmowania...
ad.3- chyba załapałem. W jednym równaniu mamy dwie różne wartości "liczba_dotychczasowych_pomiarow". Kompilator w sumie nie wie, czy pierwsza wartości ma być zwiększona czy nie (czyli zakłada że nie wiesz co robisz :P). Podejrzewam że to nie jest zestandaryzowane, dlatego kompilator pluje. Chce Ciebie uchronić przed błędem. Ciesz się, bo jak by to...
Potrzebuję procedurę (napisaną w asemblerze na 8051) dzielenia liczby 6-bajtowej przez dwubajtową .Z góry Dzięki.
Pisząc poprzedni post byłem przekonany, że utrata informacji przy zwykłym przesuwaniu jest dla Ciebie jasna. Instrukcja DIV AB wykona dzielenie "z resztą". Czyli 5/2=2 reszta 1 -> co oznacza 2 i 1 /2 11/10 = 1 reszta 1 -> 1 i 1 /10 Wszystko zależy do czego zmierzasz :-)
Jak w asemblerze (Pentium) uzyskać resztę z dzielenia liczby 64 bitowej przez 32 bitową, iloraz mnie nie interesuje. DIVL owszem działa, ale tylko wtedy gdy iloraz jest mniejszy niż 2^32 Asembler mojego kompilatora nie lubi DIV RAX.
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.
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...
Podziel liczbę przez 10. Część całkowita będzie dziesiątkami a reszta z dzielenia jednostkami.
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...
tjanusz :arrow: znam troszke c# na tyle ile mi jest to potrzebne, ale w c# przecież można także wstawiać kod asemblera tworząc np. swoje własne algorytmy dzałań matematycznych. Pszepraszam, ale nie wiem co to znaczy " żródełko" gcc lub FreePascal i jak mogę do tego dotrzeć :arrow: elektryk dokładnie np. teraz pracuję nad potęgowaniem modulo metodą iterowanego...
Asemblera 8051 chyba nie pamiętam, ale był tam rozkaz dzielenia, nie wiem czy z resztą czy bez DIV się nazywał. Mogę się mylić bo 8051 już dawno się nie bawiłem. Lub możesz to zrobić po chłopsku jeżeli liczba jest mniejsza od 10 to odejmij od niej 10 (zwiększ licznik) i znów sprawdź czy jest mniejsza, jeśli nie to to co zostało to jest właśnie reszta...
Dobra ale nie potrezbuje programu ktory dzieli chcem program ktory wpisuje w osobne rejestry jednostki , dziesitaki i setki danej liczby i algorytm tego programu Dodano po 5 Ma to być program ktory dowolna liczbe o d0 do 256 wpisuje do poszcegolnych rejestrow jednosci , dzisiatki i setki albo wpisujacy liczbe 172 do posczegolnych rejestrow Jak napisac...
program mam do napisania w intel 8051 w asemblerze. Nie chodzi Ci czasem o rozkaz DIV AB? Mój problem polaga na tym, ze mam zapisaną jedną liczbę na dwóch bajtach, tzn. ze max w BCD 65535. Jak obliczyć pierwsze dwie cyfry?
Ja w swoim protonie mam możliwość wstawek z ASM , mam wygenerowanego asma do wglądu, i wiele innych plików jak chociażby ten poniżej: 16C505,84,9, Warning! Line [3]In file [PRZYKŁ~1.BAS] *** No analogue ports on this device. ALL_DIGITAL Command ignored! *** PROGRAM COMPILED WITH WARNINGS. 84 Words used 9 Variables used in the 16C505 from a possible...
Witam, to jest mój pierwszy post i mam nadzieję, że nie złamię nim żadnego z punktów regulaminu. Mam pytanie- prośbę, mianowicie: Moim zadaniem jest napisanie programu kalkulator który dodaje, odejmuje, mnoży i dzieli liczby dwubajtowe. Nie chcę prosić o podanie gotowego programu, bo nie o to chodzi. Czy na początku programu powinnam najpierw podać...
Witam Troszkę słabo opisałeś problem i zadanie, ale do rzeczy. Nie wiem czy korzystałeś z książki Gałków czy nie, mnie jednoznacznie wynika że przy wyświetlaniu pobranej cyfry powinieneś użyć LCALL WRITE_HEX dlaczego Ty to dzielisz przez 100 nie mam pojęcia. Po drugie nie wiem jak jest w Jagodzie, ale "WRITE_HEX" w DSM używa rejestru R0 więc nie powinieneś...
Czy mógłbym prosić o opis algorytmu działania programu? Po co Kolega stosuje tak wielką tablicę (11 bitów), wiem że w języku C wielkość liczby nie ma specjalnego znaczenia - można zawsze wybrać inny typ zmiennej - jednak przekłada się to na długość wykonywania rozkazów, szczególnie dzielenia. Według mnie w falowniku 256 wartości funkcji to aż za dużo...
Szperałem forum, ale niestety nie znalazłem odpowiedzi na nurtujące mnie pytanie, O ile w necie można znaleźć gotowe rozwiązanie to ja bym chciał bardziej zrozumieć jak to działa bez tłumaczenia tego sobie z kodu na ludzki. Sprawa dotyczy 8051 i kodu w asemblerze. Potrzebuje wiedzieć jak przekonwertować 16 bitową liczbę na ciąg znaków ASCII. Chodzi...
mirekk - już wszystko jasne z przejściem do innego koloru, zamotałem się z tym. Wygaszanie też potraktuje jako przejście do innego koloru, z tym że wygaszenie będzie po prostu kolorem o wartości R:0 G:0 B:0 No i o to chodziło, przecież czarny kolor to RGB = 000 ;) Ale Twój sposób jeszcze sobie uproszczę na: No to nie mój sposób, to podstawowe liczenie...
Keil nie obsługuje natywnie arytmetyki stałoprzecinkowej. Cortex-M3 ma instrukcje nasycające rejestr do n-tego bitu, ale żeby z nich korzystać, musisz pisać w asemblerze lub skorzystać z gotowych funkcji CM3_intrinsics. Cortex-M3 nie ma instrukcji natywnie pracujące w jakimś stałoprzecinkowym formacie (np. Q15, jak dsPIC) - te operacje musisz robić...
Ciśnieniowy kontroler poziomu wody https://obrazki.elektroda.pl/7746273200_... WSTĘPNIAK Witam wszystkich entuzjastów elektroniki! Chciałbym zaprezentować przykład wykorzystania scalonego półprzewodnikowego czujnika ciśnienia w roli miernika poziomu wody. Dzięki pomiarowi ciśnienia słupa wody możliwa stała się kontrola i utrzymywanie...
Dziękuję wszystkim za pomocne posty. Kolego michalko12, czytam to co piszesz, czytam, ale nie znajduję na wszystko jasnej odpowiedzi, albo może nie przyszło ci do głowy, że nie dysponuję taką wiedzą jak Ty i dlatego ten temat, aby coś więcej się nauczyć. Tyle jest na Elce o unikaniu dzielenia w AVRach. Toż to najgorsza zmora. Próbowałem coś zoptymalizować....
To jeszcze ja wtrące swoje 3 grosze. Co do select case to nie polecam - mniej miejsca zajmują pojedyńcze warunki IF tylko trzeba wtedy dobrze przemyśleć aby nie wyskakiwały dwa naraz albo chociarz prawidłowa wartość była wtedy kiedy oczekujemy tego. Dodatkowo zauważyłem ze w Bascomie 8051 użycie podwójnego lub potrójnego warunku IF (if cos=1 or cos=2......
Czy to musi być assembler? Wbrew pozorom napisanie tego w języku wyższego poziomu może być znacznie prostsze, zwłaszcza dla początkującego :-) Osobiście uważam, że łatwiej jest się nauczyć podstaw C czy BASCOM'a na tyle ile się potrzebuje, niż nauczyć się pisać dobry i niezawodny kod w asemblerze. //Edit Poniżej, jak to by mogło wyglądać w C: //jakie...
Nigdy nic nie napisałem na PC.A z czym bascom miał problemy to doskonale poznałem ,nawet przy wolnym podawaniu impulsów na przerwanie i dodając coś w nim na zmiennych single LCD zaczynał wyświetlać syf. Dodając coś do worda lub bajta nie było takiego problemu, więc skróciłem podprogram na max. W przerwaniu dokonuje pomiaru przebiegu,aby ten przebieg...
Programy się zwykle pisze a nie robi :) Przy pisaniu programów musisz wykonać następujące kroki: 1. Zdefiniować problem W przypadku twojego kalkulatora musisz określić: - typ obsługiwanych danych - czy to będą liczby wyłącznie całkowite czy całkowite i ułamkowe (ogólnie mówiąc rzeczywiste) - rodzaje działań jakie ma wykonywać twój kalkulator, np. dodawanie,...
Witam. Jeśli można to bym prosił kolegę asembler o jeszcze trochę dokładniejsze opisanie tego sposobu pomiaru napięcia bo bardzo mnie to zaciekawiło. 1.22 V to stałe napięcie odniesienia wytwarzane przez procesor , na jego podstawie przez wbudowane wzmacniacze operacyjne wytwarza on napięcie 2,56 V . To rozumiem. Jeśli napięcie zasilania podamy również...
https://obrazki.elektroda.pl/6848039300_... Ogranicznik czasu pracy to dość banalne urządzenie włączane pomiędzy mechanicznym włącznikiem ciśnieniowym a pompą, mające ochronić ją przed przegrzaniem (skutkiem suchobiegu). Zasada działania: 1. Po włączeniu zasilania przekaźnik jest włączony i zaczyna się odliczanie 100 sekund (w normalnej...
Ponieważ kompilator też potrafi liczyć, mój pomysł jest taki (sprawdzony pod asm, być może w C potrzebne jeszcze poprawki) - potrzebujemy konkretny odstęp czasu, więc zadajemy go kompilatorowi, łącznie z wybranym preskalerem, po co się zastanawiać po jakim czasie nastapi przepełnienie, kiedy można to kontrolować (oczywiście w granicach zadanych przez...
Poprawiony nieco kod programu. Póki co działa tylko dla liczby 7, dla wszystkich innych wyświetla, że liczba jest złożona. Zrobiłem mały postęp, ale to nadal nie rozwiązuje całego problemu. Naprawdę nie ma nikogo kto mógłby mi pomóc? :/ [syntax=asm].text main: la $a0, powitanie #laduje adres powitania do $a0 li $v0, 4 #zaladowanie 4, ktora odpowiada...
Chodzi Ci może o odwracanie bitowe ? Jeżeli tak, to zasada działania jest względnie prosta. mamy próbki w tablicy o indeksach powiedzmy i = 0..n-1. teraz bierzemy drugą taką tablicę (to tak dla uproszczenia, w rzeczywistości nie jest ona konieczna, bo można zrobić to na tej samej tablicy) dla każdej próbki o indeksie i odwracamy kolejność bitów w zmiennej...
no jazda :D najpierw obliczenia dla częstotliwości fclk = 12 MHz, licznika jest w stępnym dzielnikiem przez 12 wiec fl = 12MHz/12 = 1MHz T = 1/fl -> 1us czas który zliczasz jest równy 1s 1s:1us = 1 000 000 cykli 1 000 000 : 65536 = 15 r16960 //pojemność licznika (65536) 65536 - 16960 = 48576 (wartość początkowa) a do jakigoś licznika dajesz 15 + 1 czyli...
Nie chcę zakładać nowego tematu więc tutaj pochwalę się tym co udało mi się dzisiaj uruchomić. Zbudowałem sobie falownik trójfazowy na mikrokontrolerze avr. Wzorowałem się na programie falownika jednofazowego kolegów Tomasza Gumnego i Adama Tatusia. Niestety większość avr-ów posiada tylko dwa rejestry porównania OCR, tak że niezbyt się nadają do wytwarzania...
KaJakKrzysztof: W katalogu Bascoma w program files masz katalog Samples. Jest tam o ile się nie mylę zegarek, jakiś bardziej skomplikowany zegarek i mnóstwo innych przykładów zastosowań timerów, przerwań itd. Na pytanie - czy coś takiego będzie działać odpowiedz sobie sam, załaduj program do AVR-ka. Timer od countera różni się tym, że służy do ODLICZANIA...
Mam do zrobienia program, który będzie zliczać czas trwania programu. Zmienna sekund ma być prezentowana w postaci binarnej za pomocą diod świecących podłączonych do portu P2. Mam użyć systemu przerwań i odpowiedni licznik-timer w wybranym trybie wiedząc, że mikrokontroler jest taktowany zegarem 11.0592MHz, a zatem jeden cykl maszynowy trwa około 1,08507...
Witam Potrzebuje waszej pomocy, musze napisac stoper w asm. Już sie męcze z tym troche i nie chce działac tak jak powinno, więc prosze was o naproawdzenie/poprawienie błedów w kodzie ponizej. I chcialbym rowniez wiedziec, czy moja interpretacja polecen w tym kodzie jest poprawna. Sam Timer działa poprawnie. Chcialbym aby sterowanie stoperem odbywalo...
http://obrazki.elektroda.pl/4029783300_1... Układu SID (6581 stary i 8580 nowy), będącym muzyczną orkiestrą komputera Commodore 64 nie trzeba nikomu przedstawiać – między innymi dzięki jego brzmieniu owa maszyna osiągnęła tak dużą popularność. Warto tylko przypomnieć, że SID ma jedynie trzy kanały, ale umiejętności programistów...
Witam wszystkich progrmistów w asemblerze... mam wielki problem, dostałem zadanie ( w zasadzie to dwa, treśc drugiego w innym poście) do zrobienia z czegoś z czego jestem zielony i potrzebuje pomocy w rozwiązaniu i zrozumieniu problemu... W załączniku dodałem symulator do 8051 Za wszelką pomoc bardzo dziękuje Zaprojektować i uruchomić program realizujący...
dzielenie liczb mnożenie liczb asemblerze dzielenie liczb ujemnych
moduł akcelerometru podłączenie fabia hamulec philips format
Vaillant dwufunkcyjny grzeje mimo osiągnięcia temperatury Jak zresetować piec gazowy dwufunkcyjny Vaillant?