Wyniki: W1 – 60h, W2- 61h, W3 – 62h, W4 – 63h A1 – 20h, A2 – 21h B1 – 22h, B2 -22h Start: MOV 20h, #0fdh ;A1 MOV 21h, #0ffh ;A2 MOV 22h, #0fdh ;B1 MOV 23h, #offh ;B2 ;mnożenie ;A1*B1 MOV A, 20h MOV B, 22h MUL AB MOV 80h, A ;A1*B1 L MOV 50h, B ;A1*B1 H ;A2*B2 MOV A, 21h MOV B, 23h MUL AB MOV A 41h, A ;A2*B2 L MOV B...
w katalogu z AVRStudio gdzes masz katalog appnotes i tam biblioteki z funkcjami matematycznymi robiacymi dokladnie to czego potrzebujesz. A jezeli chodzi o C to jestem zdania ze i tak czlowiek potrafi zrobic program lepiej niz jakis tam kompilator... ;] zatem moja rada jest taka: poznawaj dalej asembler...
oki. dzieki za porady. juz sobie poradzilem. pozdr
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 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 obliczający...
Przykładów mnoży elektroda: trudno uszkodzić czujnik podłaczając parasite a przy 3 przewodach lamenty co drugi post w tej sprawie Druga sprawa to trzy druty to już tłok przynajmniej dla mnie nawet RS puszczam po 2 drutach. Trzeci przykład przy dwóch drutach mamy dodatkowy switch w każdym punkcie pomiaru temp więc nie trudno sobie wyobrazić zastosowan...
Wskaźnik często lepszy, ale ostatecznej odpowiedzi udzieli tylko test. Wcześniej wspominałem już o tym, że być może fragment: (sin_180[k]* (long) ofset) kompilator przetworzy na mnożenie 32*32 bitów, odrobina asemblera (mnożenie 16*16 z 32 bitowym wynikiem) poprawi sprawę dwukrotnie! Sprawdź jak to jest u Ciebie.
Witam Czy posiada ktoś kod do asemblera, wykonujący mnożenie liczb szesnastkowych?? Proszę o szybką odpowiedź.
pan B dodaje od lewej do prawej strony, na kartce też tak sie robi..Wywody o kodzie binarnym nie są mi potrzebne i nic nie wnoszą na postawione pytanie. W lewo w prawo to wiem, przecież nie robie tego w systemie trójkowym i skoro asembler to wiadome jest ze w AVRStudio.
Poszukaj bibliotek mnożacych 16bitowe liczby. Dodano po 26 TEN PROCEK JEST 8 BITOWY!!!! Dodano po 50 A w ogóle chcesz mnożyć bitowo? Czy matematycznie?
Żadnych floatów, same operacje na typach uint8_t oraz C-stringach. Dużo danych w pamięci programu...r Wystarczą operacje na wskaźnikach a już okazuje się, że w asemblerze jest mnożenie. Jak już wspomniał (at)trol.six trzeba porównać listingi asemblerowe.
Co do problemu to chwilowo nic nie dodam. Zauważyłem jednak że nie zwalniasz zaalokowanej pamięci a w C++ to poważny błąd. Każdy new powinien być w parze z delete, a ponieważa alokujesz tablice powinieneś użyć delete[].
dobra a wiec od nowa pisze co i jak, dostałem od nauczyciela trzy pytania dotyczace asemblera, ja osobiscie jeszcze nic w nim nie robilem nie mialem stycznosci i troche go nie kumam.... 1. Inkrementacja jest to..., natomiast dekrementacja jest to ... w języku programowania ASEMBLER 2. Napisz prosty program w ASEMBLERZE dla układu 8051 realizujący funkcje...
Pamięć jest zorganizowana w komórki 16-bitowe, objawia się to np tym że wskaźnik programu wskazuje na słowo (2 bajty) a nie na bajt. Wszystkie instrukcje muszą być więc wyrównane do granicy dwóch bajtów. Jakkolwiek z poziomu samego programu pamięć flash jest zorganizowana bajtami, więc spokojnie można w niej umieszczać tablice bajtów bez utraty pamięci....
Mnożenie przez dwa to to samo co przesunięcie o 1 w lewo - patrz kod który dołączyłem.
Nie rozumiem początku. Operacja mnożenia daje w wyniku sklejony rejestr 16 bitowy "B,A", gdzie jest B starszą częścią. Po drugim mnożeniu wykonujesz dodawanie z tym, że sumujesz starszy bajt poprzedniego mnożenia i młodszy bieżącego. Dalej nie sprawdzałem. Wyjaśnij cel powyższego działania (może ja coś wymyśliłem :-)). A poza tym we wzorze y=ax+b jest...
Ściągnij sobie rozkazy asemblera http://www.edw.com.pl/index.php?module=C... Asembler- język maszynowy... i spróbuj napisać jeszcze raz bo jak narazie to nie widać tu twojej pracy własnej.
Zacznij zatem od porzucenia Bascoma i przesiadki na C, skoro zależy Ci na wydajności. Przy okazji możesz wziąć procesor tańszy od AVR i z 10 razy szybszy, np. jakiegoś Cortexa. Zacznij zatem od sensownego udzielenia odpowiedzi na jego pytanie. Może jeszcze ARM i frytki do tego? Nie wiesz, nie pisz. Dawid88: Zagadnienie bardzo interesujące, bo sam wiem...
Witam. Mam mały problem z projektem. Muszę napisać algorytm równania, a wygląda to tak: wszystkie stałe mają być 8-bitowe i zapisane w kodzie U2, mnożenie wykonać metodą booth, piszę w asemblerze. Teraz pytanie jak pomnożyć np: -1/2 * 3,25. Wszędzie w necie są przykłady jak mnożyć same ułamki bez cześci całkowitych. Proszę o pomoc.
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...
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...
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...
Ja mam takie zdanie że rzekoma "prostota" assemblera PICów wcale prostotą nie jest. Raz że instrukcji jest mało i żeby zrobić byle co to trzeba to poskładać ze 100 innych instrukcji (choćby mnożenie), to jeszcze jest wąskie gardło w postaci chyba tylko jednego pełnosprytnego rejestru (taki akumulator). Na AVR masz bogaty zestaw instrukcji (np. jest...
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...
Nie ma najmniejszego problemu, choć oczywiście to wydłuży obliczenia. W sumie to Ty decydujesz o tym, co chowasz w rejestrach :] Moim zdaniem, mimo, że to strasznie wygląda, jest to rozwiązanie dość proste i skuteczne. Mantysę bowiem zapisujesz jako liczbę całkowitą. Pozdrawiam :)
Witam. Mam taki problem z asemblerem. Chciałem przemnożyć rejestr ecx przez liczbę 5 z wynikiem w ecx. Czy istnieje taki rozkaz, który to realizuje a jeżeli tak to jak się go definiuje. Zaznaczam, że używam masma'a. Pozdrawiam.
ż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,...
mirekk36-znowu masz 100% racji-to zaczyna być nudne- może się w końcu pomylisz... Ale jak ktoś chce zacząć programować w asemblerze- to po co Mu mnożyć trudności. Będzie miał ich dość. Wiemy że można taniej lub prościej-ale po co na początek mnożyć byty ponad potrzeby. Dodano po 10 "A czy kupić jakąś płytę evaluacyjną, bo jeśli tak to jaką i czy do...
Podziwiam, zwłaszcza z tego powodu iż dotyka to asemblera x86, który to w wydaniu 8086/80286 jest szczególnie przykrym doznaniem. ;) Przykrym doznaniem? Bardzo fajny assembler, na pewno lepszy od RISCowego 6502... Jedyne czego tak naprawdę brakowało w asemblerze 6502 (i jego pociotek) to mnożenia. Oprócz tego ów asembler był całkiem fajną zabawką,...
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.
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...
Chciałem to zrobić, aby lepiej rozumieć asemblera. A jak się ma asembler do bramek i tablic Karnaugha? Czy chcesz zbudować własny procesor, czy zrozumieć asembler istniejącego procesora. Same operacje w asemblerze nie wymagają znajomości rozbudowanych układów logicznych na poziomie bramek. Wystarczą operacje logiczne i arytmetyczne na liczbach zapisanych...
Moja znajomość z asemblerem skończyła się już bardzo dawno. Mam prośbę do koleżanek i kolegów. Zależy mi na czasie!! ;-) oczywiście wykonywania tych funkcji, a nie Waszej odpowiedzi. Czyli lepiej wersja „inline”, ale i zwykła się przyda. Liczę x*y mod z. Zmienne x, y oraz z są 32bitowe. Pośredni wynik może być oczywiście 64bitowy. Warunkowo...
Witam. Gdzie znajdę gotowe procedury w asemblerze dla pic 16f84 np. mnożenie,dzielenie liczb 32-bitowych itp.
Z tego co wiem to używając SHL mnożymy, więc jako tako mnożenia można używać, tak mi się przynajmniej wydaje ;] Odnośnie podanego kodu, to niestety, jak już wspominałem z asemblerem za bardzo się nie lubimy i to co wkleiłeś jest dla mnie czarną magią ;/ Mimo wszystko dziękuje za dotychczasowy odzew ;] Kolega rozpisał mi pare linijek kodu odnośnie pierwszego...
Swoją drogą zastanawiam się po co w filtrze IIR stosuje się arytmetykę stałoprzecinkową, skoro zarówno argument (próbka z ADC) jak i skalowane współczynniki (B1, B2, B3, A2, A3) są typu całkowitego (int)....w związku z czym wystarczyłoby zwyczajne mnożenie typów całkowitych...robiw
A możesz do tego użyć FPU? wtedy problem byłby banalny - ładujesz mu na stos liczby w formacie BCD (przy okazji samo skonwertuje się na rzeczywiste), robisz mnożenie i wywalasz zawartość ztosu do pamięci, też w formacie BCD - w sumie trzy polecenia.
Jeden z argumentów może przekroczyć 256 (liczba ma być 3-cyfrowa) więc nie ma jednego rozkazu mnożenia w 8051. Wracając do tematu. Rozumiem, że stały czynnik zapisany w pamięci (u Ciebie WAL _1...WAL3) nie przekracza 03E8h tak? A ile cyfr ma ta druga liczba (jaki ma być jej zakres)? Jeżeli byłaby ograniczona do dwóch cyfr to mnożenie jest banalne z...
Witam, Musze zrobic szybkie przerwanie od timera w atmega162. W związku z tym nie moge sobie pozwolic na korzystanie z pamięci SRAM i stosu, więc zostają tylko rejestry, wystarczą 3, w tym dwa wskaźnikowe np. X. No więc w właściwym programie te rejesrty nie mogą byc użyte, ani modyfikowane. Czy da się to zrobic w AVG-GCC? Przepisywanie dużego fragmentu...
Może skorzystaj z rozwinięcia logarytmu w szereg potęgowy? Np. jeśli 0<x<=2 to ln x = suma(od 0 do niesk) z (-1)^(n+1) ((x-1)^n)/n Oczywiście nie liczysz do nieskończoności tylko np. 5 pierwszych składników sumy... wtedy przy sprytnym podejściu będzie działać dość szybko, wystarczy mnożenie i dodawanie ;-) Dla wszystkich x>0 trochę gorzej......
Równie dobrze można powiedzieć że furmanka jest lepsza od samochodu, bo w samochodzie nie ma na co batem machać. 51 i AVR to są dwie zupełnie różne konstrukcje. A co do mnożenia i dzielenia to przesadzałem kiedyś program z 52 na 8515 dlatego że AVR liczył znacznie szybciej mimo braku sprzętowego mnożenia. Po prostu trzeba przyjąć do wiadomości że każdy...
adc reg,reg A bez wsunięcia CY: add reg,reg
Algorytmy mnożenia i dzielenia, a także innych działań są dokładnie opisane m.in. w książce Józefa Kalisza Podstawy elektroniki cyfrowej . Sporo algorytmów można znaleźć na stronach producentów mikrokontrolerów w działach aplikacje. Jeśli znasz choć trochę asembler '51, to na pewno dasz radę. Pozdrawiam.
SHR, czyli Shift Right, binarnie przesuwa bity o podaną liczbę miejsc w prawo, z tego co pamiętam, nadpisując zerami, czyli zakładamy cx = 0000000000101011 teraz, po wykonaniu np.: shr cx,3 otrzymamy cx = 0000000000000101 | 011 jeżeli zatem wykonamy shr cx,16 , wszystkie bity powinny zostać przesunięte "poza rejestr" i nadpisane zerami (oczywiście mowa...
AVR-y były projektowane pod języki wysokiego poziomu właśnie po to, żeby zwykły śmiertelnik nie musiał się męczyć z asemblerem. Że co prosze?????? AVR był projektowany pod języki wysokiego poziomu? To dlaczego ma architekturę RISC (bardzo ograniczona lista rozkazów, dużo równoprawnych rejestrów itp.)? Właśnie dlatego żeby programista miał jak największą...
Nie bardzo rozumiem co miałbym uzyskać przez mnożenie razy 2.W tej chwili robię to tak: MOV DPTR,#TABLICA MOVC A,(at)A+DPTR .. .. .. TABLICA: DB 0,1,2,3,4,5 DB 6,7,8,9,10,11 A interesuje mnie jak odczytać z tablicy coś co będzie po DW??
P=U*I*cos fi cos fi=P/(U*I) Za mało podałeś szczegółów, żeby wygenerować kod, ale na oko widać co trzeba zrobić (jedno mnożenie i jedno dzielenie). A swoją drogą... gdzie tutaj jest pytanie? Kolega podzielił się z nami swoimi potrzebami i tyle... pozostało nam sie domyślać wielu rzeczy (co to jest ten blokowy woltomierzi itd, co to jest za monitor?...
Dla ułatwienie decyzji , czym i jak. Asembler 8051 -free Symulator 8051, z bardzo dobrym opisem uP. W programie są dostępne różne interfejsy: diody LED, wyświetlacze 7-seg, przyciski,silnik krokowy, oscyloskop z wyjścia przetwornika DA, klawiatura i inne z przykładami http://www.edsim51.com/map.html X-- Basic i Asembler Tak jak i powyżej z bogatym interfejsem...
Nie umarł i nie umrze, aczkolwiek może zostać "zdegradowany" do pozycji języka, który jest potrzebny tylko do napisania kompilatora. Stanie się tak, jeżeli pojawi się jezyk wysokiego poziomu, a właściwie to kompilator takiego języka, za pomocą którego będzie można uzyskać kod równie wydajny. Chociaż i tak zawsze pozostanie grupa entuzjastów asm. Znajomość...
Ćwiczenia odbywaja sie na tym: http://www.micromade.pl/dsm51.htm Kod dokładnie wyglada tak: MOV B,#>1000;mnożenie przez 1000 aby wynik dzielenia MOV A,#<1000;otrzymać z 3 miejscami po przecinku LCALL MUL_2_2 Z boku jest komentarz ale i tak nie wiem jak działa to polecenie, poza działaniem MUL_2_2, ktore rozumiem. Znalazłem jeszcze opis ktory też...
Skorzystanie z rozwinięcia w szereg Taylora jest jednym ze sposobów. Chociaż wydawało mi się, że przybliża się rozwinięciem jakieś bardziej skomplikowane wyrażenia, gdzie stosunek dokładność/czas wykonania będzie korzystny. Assemblera znam z programowania na PC. W AVR używam C, na razie asm nie jest mi potrzebny. Z ciekawości zajrzałem do datasheeta...
Na podstawie tego co mi przesłałeś to zmieniłbym kod na taki mov ax,5 sub ax,2 mov bx,2 sub bx,5 imul bx mov bx,1 xchg ax,bx idiv bx mov cx,ax Ale to chyba jeszcze nie to co . Daj mi jakieś większe wskazówki bo naprawde ciężko mi idzie z tym asemblerem a siedze już tydzień i nadal nie mogę zrozumieć co powinienem zmienić w tym kodzie żeby chodził tak...
witaj Nie wiem co to za enkoder który ma zakres 576 imp/obrót ale nawet taki wynik w niczym nie przeszkadza. Przy zadawaniu kąta musisz zrobić tak jak napisał kolega: przemnożyć przez stała. I wcale nie musi być to operacja 32bitowa, jeśli nie potrzebujesz tak dużej dokładności :) Tak czy siak nie otrzymasz prawie nigdy pełnego stopnia, więc nie ma...
Zgadza się. Moje przeoczenie. Mam jeszcze jedno pytanie. Docelowo wynik z ADC będzie dosuwany do lewej czyli do ADCH. Interesuje mnie wynik w formie 8 bitowej czyli pozostałe 2 bity w ADCL ignoruję. Aby otrzymać wartość w woltach przy napięciu referencyjnym 5V muszę 8bitową liczbę z ADCH pomnożyć przez ok 0.0195. Nie znalazłem nigdzie w sieci jak mnożyć...
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...
Czytać i zapisywać możesz. Ale jak wygląda mnożenie dwóch 8-bitowych zmiennych? Raczje trzeba najpierw znormalizować wartość w rejestrze. Nie wiem, czy jest w asemblerze instrukcja typu pobierz 8-bitową wartość z rozszerzeniem na 32-bity dla wartości signed lub unsigned. A od kiedy dane RGB są signed? LDRSB, STRSB czyta i zapisuje bajty ze znakiem....
W C to pisze programy dla PC:) Dla kontrolerow wole asembler. Moge sprawdzac rozkaz po rozkazie w sensie rzeczywistym, czyli rozkaz maszynowy. Nie musze sie zastanawiac jak mi C przerobil moje na maszynowe, bo przeciez program wynikowy jest w asemblerze (rozkazy i ich kolejnosc). ASM jest nieprzenośny czyli jesteś ugotowany przy próbie migracji np....
potrzebujesz odwzorowania: 0 = -15.00 1023 = +15.00 Najpierw pozbędziemy się kropki dziesiętnej: 0 = -1500 1023 = +1500 Teraz pozbędziemy się znaku: 0 = 0 1023 = 3000 Przekształcenie sprowadza się więc do pomnożenia wartości z ADC przez 2,93255132. Pomnóżmy tę liczbę przez 256, otrzymamy 750,7331378, w przybliżeniu 751. Mamy zatem mnożenie bez znaku...
Witam Mam pewien problem. Mam zadanie napisać program w dsm51 w jagodzie który pobierałby z klawiatury liczby od 0 do 255 i je mnożył. Problem mój polega na tym że nie wiem jak zrobić pobieranie liczb większych niż 15 z klawiatury. Wynik mnożenia ma być zapisany w HEXie. Jeżeli ktoś wie co zmienić bardzo bym prosił o rade Kod mojego programu wygląda...
po jakimś czasie nad kodem doczytałem się, że konwencję 'liczby' masz jako znaki, jedno z trudniejszych do obliczeń (a tradycyjnie konwersja jest serią mnożeń rzez 10). Bez wódki tego nie wyobrażę sobie :) jak mawiali starożytni Rosjanie. Gdybym ja robił, wyznaczył bym sobie trzymanie liczby binarnie, w rejestrze, skonwertował do/z (nie ukrywam, mógłbym...
Dokładnie. Poza tym w C masz sprawę ułatwioną. Zamiast samemu pisać procedury na np. mnożenie liczb, zastanawianie się jak i skąd mają być wczytane, do jakich rejestrów, piszesz po prostu: a=b*10; C jest moim zdaniem dużo prostszy od ASM w pisaniu kodu, bo działasz na wyższym poziomie. Ale jak sam napisałeś i tak trzeba poznać sprzęt==poczytać dokumentację...
Co do tego całego przesunięcia o 1 w lewo to, żebyś wiedział lepiej o co chodzi, to przytoczę taką sytuację: .db 'PLOT' .db 'KON' W pamięci to wygląda tak (pamięć jest adresowana za pomocą WORD, słowa) adres w WORD zawartosc adres bajtowy 001 'PL' 2 002 'OT' 4 003 'KO' 6 004 'N\0' 8 Jak sam widzisz, żeby uzyskać adres bajtowy należy to pomnożyć razy...
A jakaż to różnica między T85 i M32 przecież to ten sam rdzeń tylko różne peryferia... Pokaż mi w ATtiny85 sprzętowe mnożenie... :P Do do mieszania w RAM, to miewałem takie przypadki, najzabawniejszym było pomylenie "ldi XL, XX" z "lds XL, XX" (w inicjalizacji pętli) przed zapisem indeksowym "sts X, Rxx". Najprościej to zdebugować , zakomentowując...
witam nic prostszego! zaczynasz od wyzerowania wyniku i zrobienia pętli dla wszystkich cyfr liczby wejściowej, począwszy od najbardziej znaczącej W pętli: 1. mnożysz wynik przez podstawę liczby wejściowej (czyli 8) 2. dodajesz do wyniku kolejną cyfrę liczby wej. na którą wskazuje stan pętli np zmieniasz liczbę 157 1. wynik=0 2a. wynik*=8 podstawa liczby...
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...
Podejrzyj kod asemblera i zobacz czy na pewno wykonują się zmiennoprzecinkowe instrukcje. U mnie dodatkowo trzeba było włączyć optymalizację oraz podlinkować libm i libg z katalogu fpu kompilatora i tak zauważyłem, że sporo zależy właśnie od wersji kompilatora. Mnożenie wykonuje od razu sprzętowo ale do pierwiastkowania trzeba go zmusić. A pozwolę też...
Witam mam jakąś zaćmę umysłową albo niewiem co ale prosty program nie ma ochoty mi działać oto program : ----------------------------------------... org P:$100 move #$10,x1 ; liczba 1 do x1 move #$20,y0 ; liczba 2 do y0 move #0,b ; wyzerowanie rejestru b mac y0,x1,b ; wymnoz y0 przez x1 i dodaj do b ----------------------------------------...
Tak masz rację, nie orientuję się w asemblerze, ładnych parę lat pisałem jakieś proste programiki na zajęciach i tyle... Potrzebne mi to tylko po to, żeby pokazać, że język drabinkowy może być uproszczeniem takiego programu w asemblerze i szczerze mówiąc tylko po to mi potrzebny ten program... nie chcę się uczyć asemblera, moje zadanie dotyczy czego...
Nie mysl Chcesz zarżnąć biednego AVRka :) Nie myślę już na poziomie AVRów ;) W ARMie to jest jedna instrukcja asemblerowa
Witam! Jestem początkujący w asemblerze, a chcę wykonać program (właściwie 2) obciążający najnowsze procesory intela przez co najmniej kilkanaście sekund. Nie ma znaczenia co dokładnie robi ten program - ja probuję mnożenia w pętlach (w drugim programie dzielenia - chodzi o jednakową ilość cykli maszynowych tych działań). Nie mogę sobie jednak poradzić...
hmm faktycznie..... czyli przy drógim dzieleniu trzeba mianownik podzelić prze 256, usunąc młodszy bajt i w jego miejsce wpisac starszy a msb trzeba by wyzerowąć. tylko że wtedy powstaną przekłamania:/ nieduże i tylko po przecinku ale tego juz chyba nie przeskoczymy, gdyż brakuje dokładności Dodano po 12 chociaż jest sposub na to drógie dzielenie, zeby...
Mam zaprojektować filtr cyfrowy, na mikroprocesorze 8051F362. Ten procesor, ma specyficzną jednostkę dodające-mnożącą i mam prośbę, czy może mi ktoś napisać prosty program w asemblerze ( z tłumaczeniem) , jak wykorzystać jednostkę dodający-mnożącą.
to że asembler ma niewiele rozkazów zailczane jest do zalet a nie do wad. Już o tym pisałem. Owszem. „zaliczane jest” :D Ale skoro piszą że mała ilość rozkazów jest zaletą, to chodzi im o to że mała ilość rozkazów jest zaletą. A nie o coś innego. I na pewno nie o to że ten assembler jest dobry. Dobry assembler jeżeli rzeczywiście jest dobry...
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ż...
Jest interfejs SWD, tak że nie trzeba jakiegoś egzotycznego programatora. To duży atut. W wielu rozwiązaniach potrzebne do uruchomienia środowiska wygibasy są przeszkodą przy ograniczonym czasie. Fajnie, że idą w tę stronę :) To jest "gratis" wynikający z użycia rdzenia Cortex M. Nie było sensu wymyślać czegoś swojego, więc kompatybilność dostaliśmy...
Jednak liczylem na lepsza pamiec, rasowy asemblerowiec chyba powienien ja miec.Co do zmiany zdania to napisales, ze nic tu nie napisales o necie. Piszac tu zaponiales chyba co pisales 5 dni wczesniej, ze na necie sa takowe biblioteki. nie napisałem tutaj nic o tym, że coś jest na necie Tutaj, czyli tak jak się patrzysz na monitor i przewijasz ten temat...
Nie trzeba tak kombinować jak sugeruje kinggustav. Bo trzeba pamiętać, że przesówjąc bity w lewo, mnożymy o 2, a w prawo dzielimy o 2. No i można skorzystać z komendy która ustawi nam bajt w BCD. Wtedy AND $0F ADD $30 I masz mniejszą cyfrę liczby ROR (x4) AND $0F ADD $30 I masz większą cyfrę liczby, dlatego dobrze jest zapisywać je od tylu, np. jakiś...
Do liczenia wielomianu wcale nie trzeba potęgowania, możesz liczyć wielomian w tej formie: T = a0 +x*(a1 + x*(a2 + x*(a3 + x*(a4 + a5*x)))) Potrzebne jest tylko mnożenie i dodawania, jest to bardzo przyjazna forma dla ASEMBLERA a także dla C (kompilatory potrafią odpowiednio zoptymalizować taki ciąg mnożeń i dodawań). Nigdy nie pisałem w Bascomie ale...
Jak wyglada opkode instrukcji dzielenia w AVR ? Która ATmega ma ? ZTCW jest mnożenie (MUL), mnożenie znak/bez znaku (MULS), cząstkowe mnożenie (FMUL) + znak/bez znaku (FMULS), ale o dzieleniu nie słyszałem. Jest ponadto instrukcja modulo na dwóch dowolnych rejestrach (EOR). Polecan spis instrukcji asemblera na końcu pdf-a (najczęściej dalej jest już...
Problem 1, jak powiedziec debugerowi, ze do procesora mam przylaczony kwarc np. 8MHz. Uruchamiasz symulację, nastepnie Debug/AVR Simulator Options (Alt+O) Problem 2, Nadal debuger nie lubi sie z dyrektywa .ecode Może to dlatego, że AVRasm nie posiada takowej dyrektywy ? Na otarcie łez jest .eseg ;) Przykład : #define DEV_MODE_MIN1 #define DEV_MODE_MAX2...
Autor się pyta, czy to możliwe, gdy tak naprawdę najwięcej zależy od niego. To, że jeden człowiek da radę, nie znaczy, że inny też może, każdy ma inne możliwości. Życie to nie telewizja, gdzie wystarczy tylko chcieć, żeby się udało. Możliwości umysłowe, finansowe, umiejętność pozyskiwania materiałów i narzędzi, przestrzeń na warsztat, czas, wytrwałość:...
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......
Timer to dobry pomysł a w ogóle juz nie wspomne o łatwosci jego obsługi w BASCOM'ie, jeśli nie robiłeś tego jeszcze to nie martw sie przyjdzie Ci to napewno bez problemu. Jeżeli chodzi o dwa kanały no to po prostu wykozystasz dwa timery. Gorzej z odmierzaniem czasu bo timery się skończyły (no chyba że 89c52), w tym przypadku bez problem można by poradzić...
BoskiDialer i Freddie Chopin -> fakt - z tym mnożeniem rozumiem 1<<KHZ2MS(27) zgadnij co z tego wyjdzie? <: oj ciężko mi zgadnąć - nie mam zielonego pojęcia co to zrobi - jakieś przesunięcie bitowe? - nie , narazie to dla mnie czarna magia takie zagadki a tak na marginesie powiem tylko, że chodzi mi żeby tą wartość obliczył kompilator oczywiście...
h-doc ma rację. Dołączasz math.h i masz kalkulator z głowy. Mnożysz, dzielisz co chcesz. Tyloko uważaj żeby Ci nie zabrakło pamięci w procku. Bo w asemblerze to trochę roboty.
A po co w ogóle komu mikrokontroler w tosterze albo mikserze, choćby z firmware napisanym w assemblerze? Po co w tych urządzeniach jakakolwiek elektronika cyfrowa? Rozumiem, że to pytanie retoryczne w czasach, gdy nie gdzie indziej jak na tym forum niemal każde rozwiązanie wymagające użycia więcej niż jednego układu sprowadzane jest do rady "użyj uC"....
0 jakiegokolwiek wytłumaczenia, wprowadzenia. Zróbcie mi kalkulator w Asemblerze działający na MSP 430 i tyle. Gdzie to takie studia ? Bo coś mi się nie chce wierzyć w Twoją wersję wydarzeń. Dlaczego każda operacja( DODAWANIE, ODEJMOWANIE MNOŻENIE ) ma w swoim bloku skok do DZIELENI?? Czyj to kod jeśli pytasz o takie rzeczy? Bo na pewno nie Twój. Jeśli...
Poczukaj w notach aplikacyjnych microchipa, są tam opisane procedury mnożenia, dzielenia a nawet chyba jakieś funkcje trygonometryczne.
Witam szanownych specjalistów od przetwarzania sygnałów. Potrzebuję do realizacji pewnego projektu zastosować najlepiej niedrogi procesor DSP umożliwiający: - bardzo skuteczne filtrowanie sygnału - pomiary przesunięcia fazy, mnożenie, dzielenie przebiegów - praca z 8 sygnałami jednocześnie w czasie rzeczywistym,częstotliwość niewielka - rzędu dziesiątek...
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...
https://obrazki.elektroda.pl/3563451200_... Intro Zawsze fascynowała mnie możliwość konwersji sygnału czasowego na dane w dziedzinie częstotliwości. Pamiętam jak w wieku około 16 lat dopytywałem mojego ówczesnego nauczyciela matematyki, jak działa transformata Fouriera. Dowiedziałem się wtedy tylko że jest to całka, niestety nic więcej...
gaskoin - link, który pokazałeś jest świetnym przykładem na to co napisałem wcześniej - pytanie w takiej postaci nie ma sensu. Po pierwsze podane wyliczenia są dla programów napisanych w asemblerze, które mają się nijak do C, gdyż C ma swoje biblioteki. Po drugie ten pdf odnosi się do starych architektur, które nie mają instrukcji MUL i pochodnych.Biorąc...
Dziękuję za odpowiedź! No i to właśnie chciałem wiedzieć - czy istnieje taka sfera problemów w których FPGA będzie bardziej wydajne od komputera PC :) Ale to wszystko jest skomplikowane. W tradycyjnych układach PLA/PLS, PROM, PAL/GAL było tylko kilka warstw z prostymi funktorami. A tutaj wszystko jest tak rozbudowane - jakieś gotowe układy o których...
long pomiar1; pomiar1=(long) ADC * 244 / 1000; Wartość rejestru ADC (ADCW jest dla asemblera, aczkolwiek to i tak to samo) należy zrzutować na typ o minimalnej długości 18 bitów, najbliżej (w górę) jest 32 bitowy typ long (właściwie to 31 bitów wartości dodatnich). Bez tego wyniki z ADC większe od 268 dadzą niepoprawną wartość, bo mnożenie...
Częstotliwość pracy syntezera jest określana 13sto bitowym słowem. Ja to robię w ten sposób że zakładam w pamięci procesora dwa bajty jako rejestr częstotliwości. Można łatwo ten rejestr zmieniać UP/DWN co daje nam po jego załadowaniu do PLL zmianę częstotliwości. Rejestr ten aby wyświetlicz częstotliwość mnożę przez raster i wynik zamieniam na wartość...
Witam. Powyzszy mikrokontroler jest czescia regulatora, 64 bity to liczba oznaczajaca czas trwania pewnej operacji. Bity sa wczytywane przez jeden z portow szeregowo 8x8 bitow z rejestru sterowanego przez miltuplexer (to nie problem). Druga liczba jest tak naprawde max 62 bitowa i przystosowuje czas do bazy danych. Jest wczytywana podobnie jak pierwsza...
(trochę się pośpieszyłem, ten kod który dałem niżej działa ocz do co najwyżej 128, bo int16_t się przekręci.. a więc bez int32_t raczej nie ruszysz dalej...) Hej, trochę zajmowałem się obliczeniami na mikrokontrolerach i głównym problemem jest brak 32 bitowych zmiennych aby uzyskać sensowną dokładność obliczeń... To co ja bym zrobił na Twoim miejscu...
Szczerze powiedziawszy nie mam pojęcia, Bascom jest dla mnie zbyt skomplikowany wewnętrznie i trzeba by podejrzeć kod wynikowy w asm, aby coś stwierdzić, np. czy te wstawki asemblerowe nie kłócą się z resztą kodu. Asembler dla mnie ma proste i przejrzyste klocki, z którymi można zrobic prawie wszystko, a można jak najbardziej uzywać w nim zmiennych...
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. Przeszukuję sieć w celu znalezienia skutecznego algorytmu mnożenia 16 bitów (16x16) z wynikiem 32 bitowym. Oto przykład z sieci (jakich wiele): mpy16u: clr m16u3 ;clear 2 highest bytes of result clr m16u2 ldi mcnt16u,16 ;init loop counter lsr mp16uH ror mp16uL m16u_1: brcc noad8 ;if bit 0 of multiplier set add m16u2,mc16uL ;add multiplicand...
mnożenie liczb asembler mnożenie liczba asembler algorytm mnożenie
hamować odzysk energia iveco daily problemy klimatyzacja pralka samsung zamek
zderzak naprawa zderzak naprawa
Niedziałające światła awaryjne - diagnostyka i naprawa Jak uszczelnić palnik w kuchence elektrycznej?