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
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
jak podzielic przes siebie dwie liczy w asm? bo jako takiego mnemomnika to nie ma A może by tak nas kolega oświecił o jaki procesor chodzi? Na każdy da się to zrobić podobnie jak na palcach ale niektóre mają gotowe rozkazy. Przydałaby się też informacja o tym jakie kolega liczby chce dzielić.
Można to robić, ale chyba tylko w celach poznawczych. Tak naprawdę w programie i programowaniu szkoda na to czasu - tym może sie zająć kompilator a nam pozostaje wymyślić ładnie zapisywalny w kilku liniach algorytm (mówię o C). Mimo wszystko nie uważam, że asembler jest bezużyteczny - jest bardzo potrzebny, ale raczej do innych celów.
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.
Kto szuka http://www.piclist.com/techref/microchip...
Nie, nie jest. DIV, to dzielenie liczb bez znaku, IDIV to dzielenie liczb ze znakiem.
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...
Podziel liczbę przez 10. Część całkowita będzie dziesiątkami a reszta z dzielenia jednostkami.
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.
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)...
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
W szkole uczą dzielenia ręcznego w formie tabelki. Z dzieleniem w formacie dwójkowym jest tak samo. Ma tylko jedno ogromne uproszczenie: W systemie dziesiętnym liczba w pobranym fragmencie może nam się zmieścić 0, 1, 2, 3... lub 9 razy i zostaje nam reszta. W przypadku dzielenia dwójkowego liczba może się zmieścić 0 lub 1 raz... i zostaje nam reszta...
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?
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...
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ż...
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...
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...
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...
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.
ż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,...
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...
Jeśli chodzi o odejmowanie o jeden to dodaj 99 i potem wykonaj DA A. Jeśli zaś chcesz odejmować dwie wartości binarne np. 56 - 23 = 33 a potem przetwarzać je na na kod BCD to trzeba korekcję zrobić "ręcznie" z dzieleniem przez 100, 10 włącznie. No chyba, że chcesz dwie liczby BCD odjąć od siebie.
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...
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...
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...
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...
Ależ sumuje dobrze, tylko żeby wyświetlić, musisz dokonać odpowiednich konwersji. Pamietaj, że wyswietlasz tylko znak o wskazanym kodzie ASCII. Dodawanie i odejmowanie od tego kodu 30h powoduje "konwersję" cyfry na kod ASCII tejże cyfry lub odwrotnie. Zatem wyswietlanie wyników >= 10 wymusza potrzebę wyświetlenia dwóch znaków: 1. O wartości ASCII (wynik...
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. 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...
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...
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. 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.
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ę...
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.
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. Gdzie znajdę gotowe procedury w asemblerze dla pic 16f84 np. mnożenie,dzielenie liczb 32-bitowych itp.
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...
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...
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ż...
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....
dzięki za odpowiedzi. procedura INACCRS podprogram oczekuje na 2 znaki ASCII z portu szeregowego a następnie zamienia je na bajt i umieszcza wynik w akumulatorze. Odbierane znaki muszą reprezentować cyfry kodu szesnastkowego czyli wystarczy jak zamiast rr A użyje powiedzmy div AB i do B wpisze 2 wczesniej? troszke dziwne bo samo dzialanie bez pobierania...
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"...
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...
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......
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...
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...
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...
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...
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....
Witam. Niedawno zacząłem swoją przygodę z asemblerem i po przebrnięciu przez podstawy postanowiłem się zabrać za nieco ambitniejsze rzeczy. Starałem się napisać program realizujący test Millera Rabina, ale utknąłem i za cholerę nie wiem co mi w nim nie działa, próbowałem szukać błędu przez dobrych kilka godzin, ale niestety nie podołałem i postanowiłem...
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...
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...
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.
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...
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...
znalazłem operacje dzielenia, ale w ty przykładzie zatwierdzanie jet tylko przez 7 przełącznik, a u mnbie zatwierdzanie ma być na przełącznikach 5, 6, 7 oraz wyświetlenie wyniku odpowiednio na diodach. Oto ten pprzykad: ;DZIELENIE - na podstawie wzoru programu z pracowni. ; Dana w ACC KODWYJ EQU 9216 DASCII EQU 9248 ; INILCD EQU 9408 BSEGAT 0 BLAD:DBIT1...
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ą.
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...
niewiem dokładnie jak to jest z procesorami programowalnymi w tem sposub ( jeszcze) W zwykłym asemblu robił bym to na podstawie kilku operacji arytmetyczno/logicznych pierwszą liczbe (jedności i dziesiątek) otrzymasz poprzez uruchomienia polecenia funkcjonującego jako modulo z argumentem 100 ( reszta z dzielenia przez 100) Drugą liczbę możesz otrzymać...
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...
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...
Witajcie, Dużo szukałem, ale nie mogłem znaleźć Działającego programu do kalkulatora, który dodaje, odejmuje, mnoży i dzieli ( Może też pierwiastkować ) maksymalnie 3 liczby 16-sto bitowe i wynik pokazuje na wyświetlaczy LCD. Jak by ktoś posiadał to był bym wdzięczny za wstawienie.
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...
Potrzebuje napisac program w asemblerze 8086 wykonujacy operacje dzielenia na liczbach 5 bajtowych w kodzie BCD. Wartość zero w starszych bitach pierwszego bajtu odpowiada znakowi plus, a wartość jeden odpowiada minusowi ( np. '0000000200'== 200, '1000000353' == -353). Dane wprowadzane z klawiatury (zawsze po 10 znaków). Wyjście z programu po odpowiedzi...
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...
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?
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...
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...
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...
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...
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ś...
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...
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...
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...
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;...
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 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...
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...
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ć...
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...
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...
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...
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...
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...
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ą...
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...
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...
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...
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...
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...
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...
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...
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...
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...
Proszę o pomoc bo nie pamiętam już pewnych rzeczy z Assemblera. Chodzi o obliczenie w kodzie liczby sięgnięć do pamięci, operacji i zapisów. Moje wątpliwości budzą indeksy w tablicach - o ile pamiętam, muszę liczyć jako sięgnięcie i operację każde odwołanie w którym jest zwiększenie indeksu a także dodawanie stałych (czy dodanie stałej oprócz tego że...
asembler dzielenie dzielenie asembler dzielenie liczba
wiena mostek windows schowek volvo silnika
Kody do pilota uniwersalnego dla TV Skymaster Jak odblokować radio Dover USB 80 - instrukcja