Należy przed skokiem przesunąć stos programu o dwa czyli najprościej: INC SP INC SP
Jaki przykład ? Pytałem z twojej strony o przykład podnoszenia do dowolnej potęgi dla liczb zmiennoprzecinkowych podwójnej precyzji i się nie doczekałem, więc czemu ty liczysz na przykłady od kogoś, skoro wskakujesz do wątku, wykrzykuesz "Viva la assembler!" ale rękawicy już nie chcesz podjąć? jeśli chcesz przesunąć o jedno miejsce w lewo mnożysz razy...
Dziex, ale już wpisałem ldi bitcount, low(CRC16poly). Wcześniej mi to nie działało. Może zrobiłem jakąś literówkę. PS. Żeby wywalić starszą połówkę to trzeba przesunąć 8 razy z nie 4. Wiem że LDI działa tylko na liczbach 8-bitowych. Assembler AVR mam w jednym palcu. Dziwiłem się tylko że kompilator automatycznie nie wstawia młodszej połówki jak widzi...
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ść...
Jedyną "trudnością" jaką musisz pokonać to to, że przesuwać tak da się tylko w prawo :)
MAIN: Mov SP,#SPVALUE i tyczy się #SPVALUE . Może trzeba coś zadeklarować na początku? SP - Stack Point /wskaznik stosu/ polecam lekture assemblera, w skrócie chodzi o to żeby przesunąć stos powyżej używanych rejestrów... Wystarczy że dodasz choćby coś takiego i będzie działać bez problemu.. SPVALUE DATA 032H
Przede wszystim, jesli oczekujesz pomocy, musisz podac na jaki procek ten assembler. Po komendach widze ze nie jest to x86, czyli PCet. Byc moze chodzi o jakis mikrokontroler. Nie wiem czy wiesz, ale assembler nie ejst przenoscym jezykiem i nie ma jakies jego standardu - w przeciwienstwie do Ansi C czy pascala. Dalej nie wiem czy wiesz, ze nawet jesli...
Albo chociaż jak mam to rozumieć ? ADCH przesunięte w lewo o 8 bitów i zsumowane logicznie z ADCL. A po polsku to dwa bajty skleić w słowo 16-bitowe ;)
Taki program mógłby wyglądać tak: Mnożna: rejestr E Mnożnik: rejestr A Wynik: rejestr HL LD HL,0000 ;inicjacja wyniku LD B,08 ;licznik pętli LD D,00 ;zerowanie bardziej znaczącego bajtu DE NXBIT ADD HL,HL ;przesunięcie wyniku w lewo RLA ;sprawdzenie cyfry monożnika JR NC, FIN ;opuszczenie zera ADD HL,DE ;dodanie mnoznej FIN DJNZ NXBIT ;powrót do początku...
Visual Basic 2010 (kompilator i debugger). Dalej nie kumam. Jak są na stosie to w którym momencie zostały tam dodane i odwołanie do nich jest po prostu przez nazwę zmiennej? Dodano po 13 Mam na zadanie: "Wskaż miejsca w pamięci gdzie przechowywane są zmienne". Jak na to odpowiedzieć? Stos[przesunięcie]?
Witam! Nie wiedziałem gdzie dokładnie umieścić ten temat, więc jeśli zajdzie taka potrzeba to proszę przesunąć go do odpowiedniego działu. Teraz tak, mam zrobić projekt w assemblerze, który będzie odczytywał z enkodera pozycję, mam zliczyć ile impulsów jest potrzebnych na cały obrót tarczy przy silniku, jest to silnik z drukarki hp (model: c6429-60004)......
Pierw AND z 11110000 a później przesunięcie w prawo ?
no to może tak: zarezerwuj sobie jakiś obszar pamięci i umieszczaj kolejno w nim współrzędne x,y, w ten sposób że na początku tego obszaru masz ogon a , na końcu głowę. Jak masz wy dłużyc węża to przed głowa dopisujesz następne współrzędne, jak tylko przesunąć, to przesuwasz wszystkie dane w górę a na miejscu głowy wstawiasz nowe współrzędne. Niewiem...
Dobrze że przesuwasz bit w prawo w rejestrze ale musisz wpisywać bit w 7 bit rejestru i następnie go przesunąć w prawo. Ponieważ DS wysyła od najmłodszego(LSB) bitu. aby ustawić lub wyzerować bit w rejestrze roboczym musisz użyć następującej komendy: ustawianie bitu sbr r16,1<<7 ; 7 oznacza wagę bitu zerowanie bitu cbr r16,1<<7 ; 7 oznacza...
Prawidłowo - po wpisaniu '7' w AL (czyli dwóch ostatnich rejestru AX) znajdzie się 37h. Do BL przenosisz wiec po odjęciu 7. Tyle, że cały kod jest przygotowany do pracy z większymi wartościami, niż jedna cyfra, więc przesuniecie BL w prawo sprawi, że będzie tam 0. To pierwsza część. Dopiero kawałek dalej jeszcze raz przenosisz do BL z AL i tym razem...
Algorytm którego używam przesuwa bity, ale równie dobrze można dzielić tak jak piszesz, tylko jak używam dzielenia to program "rośnie" wiec chyba pozostanę przy sprawdzaniu najstarszego bitu i OR. Rośnie o kilkadziesiąt bajtów. Tyle ile ma procedura biblioteczna dzielenia liczb 16 bitowych ze znakiem. Ale pewnie dzielenia prędzej czy później będziesz...
mirekk36 : może sprawdź najpierw co oznacza << w asemblerze. To nie jest żadne przesunięcie o 2 bajty. <<1 oznacza przesunięcie w lewo o jeden bit czyli pomnożenie przez 2. Powinno być <<1.
hmm asemblery to bardzo szeroka gama różnych dziwnych "nakładek" niektóre stoją tak naprawde bardzo wysoko. pamiętacie może asembler z Commodore 64 (8502, 6510, 6502) rożnił sie na moje oko dość bardzo od asemblera powiedzmy do procesorów mcs-51 - nie było w nim czegoś takiego jak nazywanie linii programu wsyzstko trzeba było liczyć - przynajmniej tak...
Główkuję już 3 dzień nad programem ... aa: jbp1.3,aa mova,#44h ;wysłanie komendy Convert T movr2,#8 next: rrca djnzr2,next Czy uważasz, że np. powyższy fragment Twojego programu wysyła komendę "Convert T" na magistralę 1wire bo tak napisałeś w komentarzu ? Procesor nie czyta komentarzy - ślepo wykonuje to co mu każesz, a każesz mu przesunąć...
Proponuję zapomnieć o sbi i cbi . To jest dobre w assemblerze ale w C można się na tym przejechać (w zależności od wersji kompilatora). Na stronie # Avr-gcc nie posiada składni bezpośredniego dostępu do bitów zmienna.numer_bitu. Operacje na bitach wykonujemy używając iloczynu i sumy bitowej, np. dla bajtu: zmienna |= _BV(numer_bitu); // ustawienie bitu...
Może i tak. Ale na moje oko i tak kombinujecie. Ja od początków jak stosuję przesyłanie danych przez UARTa to stosuję jeden algorytm który wymyśliłem jak tylko zacząłem się zajmować programowaniem, i okazał się na tyle skuteczny że korzystam z niego od kilku lat i nie zmieniłem od tamtej pory w nim nic. Wysyłam: 23, Dana, Dana, Dana, Dana, ..., Dana,...
Bardzo, bardzo dziękuję Ci Krauser. Przepraszam za ten bałagan, dostałem program na zaliczenie w edsim51 a niestety jest to moje pierwsze spotkanie z assemblerem. Jeśli nie poradzę sobie z tym zadaniem to napiszę o co chodzi, chociaż wolałbym napisać na priva do Ciebie Krauser jeśli oczywiście wyrazisz zgodę na to ponieważ widzę że znasz assemblera...
To podpowiem Ci jeszcze złośniku, że obroty stosuje się na poziomie assemblera tylko dlatego, że niektóre maszyny tylko przez obrót potrafią przesunąć bity do przeniesienia. I jak spojrzysz na całość to nie chodzi o obrót tylko o przeniesienie i o przesunięcie całej, wielobajtowej liczby. I chociaż absolutnie na to nie zasługujesz przy sposobie w jaki...
Nie dziel 1/3, tylko 100/3 albo 1000/3 (oczywiście w systemie binarnym przesunięcie musi być w oparciu o właśnie system binarny dokonane)... Dokonaj takiej normalizacji, aby otrzymać liczbę całkowitą, w której tylko wystarczy przesunąć przecinek. Tak więc przed przystąpieniem do dzielenia zmaksymalizuj mantysę dzielnej i zminimalizuj dzielnika, dbając...
:arrow: slawek55 możesz też zanegować bity, dodać '1', zrobić przesunięcie w prawo o jeden bit a następnie powrócić do zapisu ujemnego (lub pozostawić jak jest). Całe 3 instrukcje assemblera....
Witam. Wykonałem miernik częstotliwości wg warmar2.w.interia.pl/. Miernik wyświetla prawidłowo tylko do 10MHz (autor projektu podaje zakres do 20MHz). Jak policzyłem, sygnał po przejściu przez preskaler 1/16 ma częstotliwość 650kHz (10MHz/16) i nie jest prawdą, że preskaler na 74S74 jest za wolny co sugeruje autor projektu. Według mnie jest błąd programu,...
int n wywoluje przerwanie i jest to uprzywilejowany rozkaz, zarezerwowany tylko dla systemu. Gdyby nawet nie byl uprzywilejowany, to int n pobiera adres funkcji z wektora przerwan, ktory jest umieszczony w niedostepnym miejscu dla szarego programisty. To tyle na temat int. Mozesz go uzywac na win98/ME, ale nie na XP. 2. Nie uzywaj assemblera o takiej...
Zamiast pytać o to jak odwołać się do tego rejestru (co prawda można tworząc zmienną przez jakas_zmienna >>= 1; if(PS_WEJ&0x01) jakas_zmienna |= 0x80; nie tracąc na szybkości (3 cykle przy rejestrze IO dostępnym przez sbic/sbis, 3 przy innym rejestrze [sbrc/sbrs], 5 przy komórce pamięci). Ze względu na skrajny bit można to zoptymalizować,...
Cześć. Należy pamiętać, że w MODBUS'ie słowa zabezpieczające informacje zależą od trybu transmisji. Na początek może LRC, czyli Longitudinal Redundancy Check - jest on dołączany przez nadajnik jako ostatnie pole ramki, bezpośrednio przed znacznikami końca linii (Carriage Return i Line Feed) w trybie ASCII. Najkrótsza droga do osiągnięcia tego słowa...
Ja robiłem gen. dwufazowy na podkręconym do 10MHz AVR - 100próbek/kanał 8-bitów, częst. 50-4000Hz co 50Hz, przesunięcie fazowe co 1 stopień, zniekształcenia sinusa całkiem znośne, ale trudne programowanie w assemblerze, no i powyżej 4kHz to już problem, bo AVR za wolny.... ale dla jednokanałowego generatora to można by chyba koło 10kHz wyciągnąć, wogóle...
Trochę nieprecyzyjnie się asembler wyraził. Program może być i HEX, tyle że wtedy będzie ciężko go dokleić do tego co zapodał asembler. Czyli albo program asemblera zmieniasz na HEXa i doklejasz swój, co jednak będzie trudne bo HEX zawiera adresy i one musiały by się przesunąć o 400B. A same z sobie się nie przesuną. Albo swój program przerabiasz na...
W rodzinie '51 standardowo stos ma początek w rejestrze o adresie 07H (i zajmuje kolejne o wyższym adresie) można to sobie zmienić przez wpisanie nowego adresu do SP przykład: MOV SP,#30H ;przenosi początek stosu od adresu 30H Co do dzielenia to mała podpowiedź Ponieważ liczba ma być dzielona przez 16 to najlepszym sposobem jest przesuwanie bitowe w...
niestety nic nie daje. nawet jak ustawie w bascomie w opcjach. nawet po resecie zawartość na wyświetlaczu sie nie zmienia, tylko czasem sie przesunie.. db0-db3 wiszą w powietrzu. czy mam je jakoś podłaczyć? może bascom opóźńienie wstawia za małe do sterowania lcd? ma ktoś może jakiś kod w assemblerze do obsługi lcd albo opis sterownia 4ro przewodowego?...
źle przerobiłeś procedurę w asm na C, choćby w tym względzie że do rejestrów wpisujesz numery bitów na nie "1" przesuniętą o numer bitu :) Chodzi o ten operand "<<". Zamiast przerabiać gotowca z datasheta trzeba było zrobić zwykłą wstawkę assemblera gdzie zamieniasz r16 na r24 który to jest miejscem w którym C przekazuje do procedury parametr...
Witam Wpadłem na pomysł ominięcia problemów z zakupem drogich diod RGB za cenę trochę bardziej skomplikowanego programu. Jak sądzicie, czy można umieścić w jednym rzędzie diodę R,G i B i tak sterować wyświetlaniem obrazka aby kolor R był pierwszy potem G a w tym czasie R już świeci następny punkt i w trzecim kroku R świeci 3 punkt G 2 punkt a B 1 punkt....
Ostatnio trochę poćwiczyłem na emulatorze COBRY dźwięk zgodny z AY-3-8910. Na początek demonstracja melodii IL SILENZIO (cisza) Muzyka jest ręczną translacją prostej tabulatury gitarowej. Odstępy czasowe między dźwiękami zmierzone z wykresu programu AUDACITY. Program korzysta jedynie z dwóch kanałów A I B w trybie tonowym. Początkowym zamiarem było...
(at)roman_partyka Polecam lekturę (at)JacekCz Czasami przydaje się funkcja skoku względnego z przesunięciem w akumulatorze. To jest odpowiednik switch-case. A czasami można w locie podmienić adres funkcji zależnie od warunków lub czasu aplkacji. Na 8-bitowcach takie rzeczy są dość normalne.
R0.1 xor R1.1: mov R16, R0 mov R17, R1 andi R16, &B00000010 andi R17, &B00000010 Xor R16, R17 'W R16.1 masz wynik Jak chcesz xorowac bity na różych pozycjach pozycjach to dawaj tak: R0.1 xor R1.2: mov R16, R0 mov R17, R1 andi R16, &B00000010 lsr R17 'przesuniecie bitów na ta samą pozycję andi R17, &B00000010 Xor R16, R17 'W R16.1 masz wynik
Najlepiej poczytaj sobie o tym w jakimś podręczniku o grafice w Assemblerze i szukaj algorytmów do rysowania linii. Najprostszy algorytm to może bazować na tym, że najpierw musisz wyznaczyć współczynnik kierunkowy prostej, żeby móc osądzić w jaką stronę jest przyrost prostej. Musisz też mieć długość odcinka po x i po y, powiedzmy jako dx i dy. Następnie...
Nie wiem czy to poprawili, ale zmienne przesunięcia nie są za dobrze generowane dla avr. Kompilator robi takie przesunięcie w jakichś magicznych pętlach (zamiast np 1 << 6 robi 6 pętli po 1 << 1). Fajnie jakby ktoś kto się nie boi asemblera to sprawdził bo ja nie mam takiej możliwości chwilowo. Ale nie ma możliwości zrobić inaczej, bo AVR...
Oczywiście, że to świetny pomysł. Niby można zostać przy asemblerze i pisać genialny kod wykorzystujący w 100% możliwości procesora - tylko po co? Dla idei? Tak się pisało 20 lat temu dema na Amigę lub Atarynkę. Po co? można by podać 1000 przykładów po co. Chociażby ze względu na wydajność. W androidzie też jest udostępniona możliwość pisania w C i...
Czy da sie zrobic tak, aby po wykonaniu przerwania skoczyl w konkretne miejsce? cos jak LJMP czy LCALL tyle ze one nie zakanczaja dzialania przerwania, ja chcialbym zakonczyc przerwanie (np RETI) ale nie przejsc do nastepnego polecenia w programie a do ustalonego miejsca Jest to mozliwe, ale trzeba uwazać, aby odpowiednio poustawiać(wyzerować) znaczniki,...
Wogóle nie działa ten program trzeci wienc nieweim co to ma wspólnego z tym co jest napisane. Ostatni rozkaz byl blednie zapisany ma byc JR NZ,przesuniecie lub JP NZ,adres etykiety. Oczywiscie w wersji ze skokiem wzglednym kompilator musi wyliczyc wartosc przesuniecia jaka ma byc umieszczona w kodzie na podstawie podanej etykiety. L1 i L2 to liczby...
Zdecydowanie tak, jak zobaczy Quartus'a to da sobie spokój... wiem co piszę. Można ućyć, nierozwijanego co prawda ale do CPLD wystarcza, MAX PLUS. WinCUPL jest jaki jest Startowałem na GAL'erze na Amigę, nic się nie wieszało i rewelacyjnie działał tester on-line. Później kilka GAL zrobiłem na komercyjnym DOSowym CUPL, dużo gorszy niż Amigowe rozwiązanie....
witam. moim skromnym zdaniem bascom sie do tego nie nadaje. takie opoznienia i to jeszcze z przesuwanie bajtu powinno sie napisac w assemblerze tym bardziej, ze dokladnie wyliczysz sobie co i jak. jezeli chodzi o maskowanie bitu to nie za bardzo rozumiem co masz na mysli. bit mozna zamaskowac instrukcja [anl] ale nie wyrzucasz go. mozesz rowniez skasowac...
Żeby zrobic ostatni punkt czyli porownanie bez uwzglednienia rozmiarow znakow wystarczyloby wstawic przed porownaniem zamiana znakow (to juz wiem ) troche pokombinowalem (nawet cos juz sprowalem napisac) znalazlem rozkaz przesuwajacy bity a wiec "A" (65) ,a male "a" to 97 a wiec 32 bity roznicy okragle 2^5 tylko co jesli wprowadzilem male a ? to wtedy...
Ja tam pisze sobie w assemblerku. I zrobiłem w nim dwa projekty, jeden 40kB kodu a drugi 50kB kodu. Faktem jest że pisze pod MSP430 a w tych procesorkiach assembler jest bardzo przyjazy użytkownikowi. Jak zobaczyłem zestaw isntrukcji do AVR'ów to sie złapałem za głowę bo mają po 90 instrukcji i więcej a w MSP jest ich 50 a na dodatek każda może byc...
A ja obstawiam, że podczas zmieniania zmieniłeś po prostu długość napisów. Otóż program po kompilacji zawiera skoki - jeśli przesuniesz coś za napisem choćby o jeden bajt to potem skok np. do jakiejś funkcji/obsługi przerwania nie "trafi" w jej początek i wszystko się posypie. Stąd robiąc takie modyfikacje musisz zachować dokładnie długość oryginalnego...
Dzięki za podpowiedź BlueDraco, masz rację tablica jest zbędna. Myslę że tak można by to zrobić, czy dobrze myślę? Trzeba tylko zainicjować zmienna "i" wartością 0b00010001 by działało na 4 bitach portu prawidłowo. [syntax=c]//============================... int main(void) { uint8_t i =...
BASCOM generuje prawidłowy kod do obsługi 1wire tylko dla częstotliwości zegarowej 12 MHz. Dla przeanalizowania tego przypadku przytaczam poniżej procedurę odczytu bajtu z linii 1wire przetransponowaną żywcem z BASCOMa do assemblera. ;***************************************... ; Odczyt 8 bitow z urzadzenia 1wire, poczatkowo...
assembler darmowy assembler assembler tablicy assembler przerwania
układ dialog zaprogramować at90s2313 darmowe proxy
ogrzewanie podłogowe ogrzewanie podłogowe
Skoda Fabia III – brak wskaźnika temperatury płynu chłodzącego, kontrolki na desce rozdzielczej Śruby do uchwytu drzwi piekarnika Whirlpool AKZ6230NB 858562301722 – specyfikacja i zamienniki