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...
Masz napisać procedury mnożenia liczb: 1 bajtowej przez 1 bajtową (8x8) wynik będzie 16 bitowy (2 bajty) 2 bajtowej przez 1 bajtową (16x8) wynik będzie 24 bitowy 3 bajty 2 bajtowej przez 2 bajtową (16x16) wynik będzie 32 bitowy (4 bajty) Procedura przebiega tak w kodzie naturalnym binarnym: 1. Przygotowujesz rejestr wyniku o długości równej sumie ilości...
LED EQU P1.7 - przypisanie do zmiennej LED do P1.7 LJMP START - skocz do początku programu (etykiety) ORG 100H - rozpocznij kompilacje od adresu 100 START: - początek programu (etykieta) LOOP: - początek pętli (etykieta) CPL LED - P1.7 zmiana stanu na przeciwny MOV A,#10 -przesuń do rejestru A liczbę 10 (potrzebne do procedury opóźnienia) LCALL DELAY_100MS...
Witam. Mam problem, ponieważ nie potrafię zapisać liczby zmiennoprzecinkowej w assemblerze. Procesor dostaliśmy na laboratoriach, odpala sie go w matlabie. Mamy troszkę okrojoną ilość rozkazów(napisze je niżej). Mantysa i wykładnik maja byc po 16 bitów. Te liczby mam dodawac, odejmowac, mnożyć i porównywać. Lecz w czym mam największy problem? Nie potrafię...
bo to moze byc np kombinacja powyzszych a nie jakies makro oznacza to ze ustawiasz bit 1szy drugi i trzeci np xxxxxxxx1110. Wg mnie coś Ci się przesunęło bo bit 4 (licząc od 1) jest zarezerwowany i musi być wyzerowany joł. Dziękuję za podrzucenie tego nazwy tego PM0056 Programming manuala :) Pomogło! Jeśli chodzi o rodzinę 32F1xxx to wystarczi Ci PM0056...
offset - zwraca przesunięcie adresowe względem początku segmentu (dla uproszczenia - adres). Funkcja 0ah przerwania 21h - czytanie wiersza z klawiatury. Pobiera łańcuch znaków i kopiuje je do bufora zdefiniowanego przez ds:dx. Bufor musi mieć następującą formę: 1 bajt - maksymalna liczba znaków w buforze łącznie ze znakiem CR 2 bajt - liczba przeczytanych...
Jednak nic to nie dało... Po restaecie okazało się, że żaden wskaźnik nie pasuje, albo coś źle zrobiłem. Tego się nie dowiem, bo przez przypadek nadpisałem sobie wyniki wyszukiwania. Teraz mam taką absurdalną sytuację, że szukam tym pointer scannerem i wyszukuje mi adresy przesunięte o 1 w stosunku do adresu który szukam. Mianowice mam np. adres 052CBE2D...
Ten kod to pisał jakiś mało-kumaty nauczyciel. Mam wrażenie, że zrobił to złośliwie i chciał żebyście długo nad tym myśleli, albo nie napisałeś wszystkiego. Podstawowa sprawa to zdefiniowanie zmiennych jedno-bitowych (na samym początku) a nie odwoływanie się do czegoś po adresach (chodzi mi o te wartości liczbowe). Poza tym wyjaśnił po co jest przesunięcie...
Witam. Potrzebuje programik który mógłbym odpalić np pod "recovery console winXP" i ogólnie nie tylko na kompach z windowsem. Wiem że mógłbym to zrobić np w pliku bat ale jednak musi być to programik exe czy com, chyba jedynie pozostaje assembler. Jego zadaniem (na początku) jest skopiowanie pliku i odpalenie innego exe'ka. Nie miałem doczynienia z...
Witam. Czy potrafi ktoś pomóc mi z zadaniem z assemblera? Mam do napisania program, który mnoży dwie liczby 5 bajtowe (40 bitów) szesnastkowe oraz podaje wynik również w tym systemie (tylko wynik będzie wtedy 80 bitowy). Problem polega na tym, że do tego mnożenie trzeba wykorzystać algorytm, ponieważ instrukcja mul nie działa dla tak dużych liczb. Mnożenie...
Witam, Przeglądałem tryby adresowania pośredniego procesora ATMega8. Problemem dla mnie okazał się sposób wprowadzenia danych do pamięci wewn. RAM tego procesora wykorzystując tryby pośrednie, tj. z przesunięciem, pre-dekrementacją i post-inkrementacją, programując w języku C. O ile w assemblerze przykładowo wiem jak wprowadzić liczbę do rejestru X...
;***************************************... ; otwarcie pliku ;***************************************... mov ah, 3dh ; usluga otwierania pliku mov al, 2 ; otwieram do odczytu i zapisu mov cx, 1 mov dx, offset File name ; DS:DX offset do nazwy pliku int 21h jc blad mov hFile, ax ; zachowaj uchwyt pliku ;***************************************...
Po żmudnych badaniach znalazłem powód niedziałania poprzez USI, ale niestety niestety wszelkie próby obejścia problemu nie powiodły się. Przyczyną jest odwrotny / przesunięty w fazie sygnał CLK. Widać to na przebiegach oscyloskopu. Ten z działającej prawidłowo procedurki z pętlą for(..... http://obrazki.elektroda.pl/7664057700_1... A...
Ja podam jeden powód dlaczego warto zacząć od C. Zarządzanie pamięcią. W C jest się "trochę" bliżej sprzętu i widać co się dzieje z tą pamięcia, jak nią zarządzać, etc. Fakt, że pod tym względem najlepiej by zacząć od assemblera ale to już masochizm:P (chociaż ja właśnie w asemblerze + winapi + olydbg zrozumiałem co się dzieje z pamięcią w windowsie,...
Z tego co znalazłem na w necie dla LPC2148 jedna z rozbiegówek wyglądała tak: MEMORY { flash : ORIGIN = 0x00000000, ram : ORIGIN = 0x40000200, Bez znaczenia. Ten skrypt linkera uwzględnia, że pierwsze ileśtam bajtów może być używane przez ISP, IAP, bootloader czy cośtam jeszcze - też widziałem takie skrypty i zupełnie nie wiem po co to...
Adres efektywny jest wyliczany z adresu segmentu i offsetu. adres segmentu określa położenie segmentu w pamięci, a offset jest to przesunięcie względem początku segmentu. W przypadku adresowania rzeczywistego, adresy segmentów są przechowywane w rejestrach segmentowych (CS, DS, itd.), a offsety w pozostałych segmentach (CX, DX, ...). W trybie adresowania...
Witajcie. Nadeszły wakacje, nadeszła i nuda. I to jaka, aż wstyd przyznać mi się, że wziąłem się za obsługę kineskopu cz/b 5,5". No cóż, w wieku 22 lat powinno się obsługiwać dziewczynę a nie kineskop, no ale zdarza się i tak :-) Generalnie nie za bardzo jest sens przytaczać kod programu czy schemat. Ogólnie synchronizuje się na przerwaniach z impulsem...
Witam, Właśnie zaczynam przygodę z programowaniem w asemblerze bo od września będę się uczył tego w szkole dlatego chcę poznać podstawy do tego czasu i mam pewien problem korzystam z kompilatora FASM jest moim zdaniem bardzo dobry bo jest windowsowy wszystko jest w oknie nie ma żadnych problemów kod jest bardzo przejrzysty i czytelny jest idealny do...
Chciałem Wam bardzo podziękować za zainteresowanie i profesjonalne odpowiedzi. Dziękuję! Co do Assemblera - patrzyłem na jego kod. W pewnym momencie następuje pętla w której następuje 'przes'-krotne przesunięcie bitowe w lewo (za każdym razem o jeden - rozkaz LSL), następnie w pamięci umieszczana jest dziwna wartość rejestru R24 (nie wiem czy dobrze...
Witam. Borykam się z problemem przerwania INT1 w procesorze Atmega88p. Otóż przerwanie raz działa poprawnie , wykrywa odpowiednie zbocze , a innym razem załącza się praktycznie losowo . Napisałem specjalnie prosty programik aby zobrazować problem . Program jest pisany w bascomie jednak ze sporą ilością wstawek z assemblera . (Na czystym bascomie zachowuje...
Mimo ze tu i tam wdzailem posty o sprawdzaniu flagi zajetosci nadal nie kumam czemu wyswietlanie na lcd przestaje dzialac. Dodalem do kodu instrukcje zmieniajace kierunek portu by czytac z portu i juz wysiwetlacz nie wyswietla...tzn nie zle testuje flage. Przedtem dzialalo bo pewnie same istrukcje dawaly dosc duze opoznienie by wywietlacz dobrze dzialal....
Cieszę się, że osiągnąłeś zamierzony cel, a że "po swojemu" to tylko plus bo znaczy, że sam kombinujesz, a to najważniejsze. Niestety muszę Cię zmartwić, ale robisz bardzo podstawowy błąd, polegający na zapętleniu się w przerwaniu w pętli: while(bit_is_set(ADCSRA,ADSC)); Rozważ hipotetyczny (aczkolwiek możliwy) przypadek, że pętla ta nigdy nie zostanie...
Stary fajny BIOS :) Nawet szkoda komentować tą wypowiedź. :/ jakbym był moderatorem dałbym ostrzeżenia za naruszenie przynajmniej 2ch puntów regulaminu: ironizowanie, nie posuwa wątku naprzód. Co masz konkretnego? W grach to się nazywało "sprite", trzeba było zapamiętać gdzie jest i jaki jest. Drogi kolego. Myli kolega 8-o bitowe procesory z architekturą...
Pozwolę sobie pociągnąć dalej... Wszystko było by łatwiejsze gdybym miał RS232 w laptopie - ale nie mam jak to laptop. Więc jestem zmuszony (chcę) wykorzystać do transmisji danych port USB. Tak jak kolega powiedzmy że będzie to woltomierz (niech będzie na razie woltomierz). Pozwolę sobie olać tutaj kwestię jak co z czym aby uzyskać wynik bo to już mam...
http://obrazki.elektroda.pl/9090946500_1... Witam. Chciałbym dziś zaprezentować niewielkie, pokazowe urządzenie. Idea zbudowania takiego cyfrowego portfolio sięga czasów, gdy gdzieś tu na elektrodzie pojawiła się "Elektroniczna Wizytówka". Bardzo zaciekawił mnie ten projekt, lecz większość podeszła krytycznie do nazwy "wizytówka". Postanowiłem...
Drodzy koledzy. Dziękuje wszystkim za pomoc w temacie, lecz jak zwykle błąd był w przeoczeniu głupiej rzeczy w kodzie. Muszę stwierdzić, że nie mieliście racji co do czasów magistrali gdyż jak się okazało są one dobre (byłem o tym przekonany gdy pisałem kod z wykresami przed oczami i sprawdzałem w symulatorze) Błąd w 1 kodzie tkwi w że nie można użyć...
Witam, ostatnimi czasy zainteresowałem się (po części przez studia) programowaniem mikroprocesorów, wykorzystując program EdSim51, do początkowej nauki Assemblera. Jakkolwiek początkowe sukcesy w nim teraz napotkały na przeszkodę. Mianowicie próbowałem zacząć korzystać z programu FASMW, by pisać bezpośrednio pod Windows, i chciałem na początek sprawdzić...
Operacje arytmetyczne i logiczne w procesorze wykonuje jednostka arytmetyczno-logiczna (ALU). Generalnie ma dwa wejścia i jedno wyjście (np 32bitowe dla procesora 32b) i współpracuje z rejestrami procesora o takiej szerokości. Dodatkowo ma wejście i wyjście do przerzutnika przeniesienia, przerzutniki flag (informacja o przepełnieniu w ostatniej operacji)...
v5 wygląda na wskaźnik na tablicę bajtowych elementów, które są indeksami dla tablicy dword_40F458 po wykonaniu operacji xor z bajtową zmienną i. Po każdym obrocie pętli wskaźnik ten jest przesuwany na następny element tablicy (v5++).
;* ;***************************************... ;*PROCEDURA WYLICZANIA SUMY KONTROLNEJ Z NUMERU SERYJNEGO UKŁADU 1-Wire ;***************************************... ;* ;* ;*******************************OPIS****... ;*Kolejne bajty numeru seryjnego...
wygląda to tak dla każdego dźwięku w stroju równomiernie temperowanym: A to 440Hz, A# to 466,16Hz czyli pierwiastek 12 stopnia z 2 wyższa częstotliwość. 1 cent wyżej to częstotliwość wyższa o pierwiastek 1200 stopnia z 2. Wartość, którą należy wpisać do SIDa, określająca częstotliwość oscylatora to: częstotliwość dźwięku * 0,0596. Także jak widzisz...
Tutaj nie chodzi o tajemna wiedze, tylko o lenistwo ludzi. Zauwaz ze kazdy by chcial "tanio" - a niestety tuning nie jest tania zabawa. Kolejna sprawa to poza ta tanioscia najlepiej jak by nie trzeba bylo myslec i sie uczyc. Niestety tak pieknie nie ma w zadnej dziedzinie. Osobiscie nie uznaje zbytnio gotowych chipow - wole strojenie pod auto. Z tym...
http://obrazki.elektroda.pl/2921368300_1... Niniejszy projekt opisuje sposób realizacji sprzętowej i programowej detekcji pojedynczej częstotliwości z wykorzystaniem niewielkiego, 8-bitowego mikroprocesora z rodziny PIC. Taki układ może być wykorzystywany do wykrywania obecności konkretnej częstotliwości w sygnale analogowym, na przykład...
http://obrazki.elektroda.pl/8660171200_1... Celem projektu było zbudowanie odtwarzacza MP3/WAV, używając jedynie układu FPGA, pamięci RAM i przetwornika stereo DAC. Układ wykorzystuje 32-bitowe jądro procesora programowego pracujące przy taktowaniu poniżej 60MHz, które odpowiada za dekodowanie MP3 bez wsparcia sprzętowego - poza wykorzystaniem...
https://obrazki.elektroda.pl/6497415700_... W temacie o testerze elementów https://obrazki.elektroda.pl/1770461400_... Wybieramy project->properties wybieramy use external makefile i wybieramy plik Makefile z katalogu "mega328_st7565", w katalogu projektu. https://obrazki.elektroda.pl/1105525900_...
... ; tu kod zatrzymujący licznik mov DPTR,#TABLICA ; iicjujemy wskażnik do tablicy mov A,#0 ;A ma teraz wartosc zero movc A,(at)A+DPTR ; pobieramy starszy bajt, teraz jest w A mov B,A ; zachowujemy go, np. w rejestrze B inc DPTR ; przesuwamy wskażnik do tablicy na nastepny bajt mov A,#0 ; tu trzeba wyzerować A movc A,(at)A+DPTR ; pobieramy nastepny...
Czyżby? Czy dla AVR ktokolwiek przejmuje się skryptami linkera, startupem, tablicą wektorów i Makefilem? Przecież dla tej platformy jest DOKŁADNIE TAK SAMO jak dla ARM, a jakoś nikomu nawet na myśl nie przyjdzie zajmować się tymi plikami - każdy korzysta z gotowców zawartych w pakiecie avr-gcc. Te pliki tam fizycznie są, nikt nie zajmuje się tym jak...
Witam, Programy typu zapal diodę w pętli już przerobiłem, od paru dni męczę sie z Real Time Timer . Napisałem sobie program który co 2 sekundy zapala kolejną diodę, aż do 8 diody. W symulatorze program działa w porządku , ale jak testuje na płytce, to zapalają mi sie po 2 sekundach wszystkie diody i nie wiem co jest. Program jest napisany w Keilu. Oto...
To działa tak samo dla dowolnej ilości bajtów. Liczbę wejściową wysuwasz z najstarszego bitu najstarszego bajtu Czyli przesuwasz liczbę 32 bitową (mnożysz przez 2). Wysunięty bit (w znaczniku przeniesienia) wprowadzasz do najniższego bitu najniższej tetrady liczby BCD. Przed każdym kolejnym przesunięciem sprawdzasz każdą tetradę czy nie jest >=5...
Czesc , conieco poprawilem , chyba bedzie dobrze (albo tylko lepiej), sprawdz.
Dziękuje za pomoc.. W klasie zrobiliśmy ten program troche inaczej ale ten działa lepiej.. w naszym trzeba było robić pętle, wpisywać ile znaków ma tekst.. A mam jeszcze jedno pytanie. chce sobie zrobić licznik BPM (Beats per minuts) Licznik mierzący ilość zliczanych impulsów w ciągu minuty tylko ze wynik ma być wyświetlany odrazu tzn. myslałem nad...
no dobrze ale to mi jeszcze niewiele mówi.. które bity mam odejmować i przesuwać? może mógłbyś dokładniej opisać tą metode?
Dzieki za podpowiedź, a co z liczbami typu int albo long int? Zabawa z przesuwaniem i przeniesieniem ?
Ok. Już wszystko jest jasne. Jednak mam problem w stronę odwrotną, a dokładniej: Mam zadeklarowaną stałą w C, w assemblerze chciałbym wyciągnąć jej adres w pamięci. Robię dokładnie tak jak podane w przykładzie podanym przeze mnie (czyli w assemblerze dodaję .extern), kompilator podmienia nazwę zmiennej na jej adres, ale jest mały problem. Adres ten...
czy w fastLCD można tworzyć animacje?? chodzi mi o przesuwający się obrazek. Jeśli nie w fastLCD to w jakim programiku można coś takiego robić??
Reaguje, ale w ten sposób, że po pierwszym wykonaniu programu nie ma żadnej reakcji, dopiero po kolejnym wykonaniu, kartka przesuwa się. Tak jakby działanie drukarki wyzwalała dopiero procedura inicjacji 8255 - PRNINIT.
Pierwsze uno - Ty nie podajesz liczb, tylko znaki! Do wprowadzania liczb polecam napisać sobie małą pętlę, która umożliwi konwersję znaków na liczbę on-line. Drugie uno - przesuwanie rejestru do tablicy i wyświetlanie mało co da... Proponuję książkę lub kurs i przeanalizować choćby kilka [url=http://www.dzyszla.aplus.pl/downloa... przykładów...
Może dlatego że nie ma takiej instrukcji? MUL jest chyba tylko w ATmega. Dzielić trzeba tak jak w szkole uczyli (słupkami), można też dzilić odejmująć (wolne ale proste do wymyślenia), oraz przesuwając (tylko dzielić przez potęgi 2).
Hej. Zastanawiam się, jak w C stworzyć najestetyczniej rejestr przesuwny kilkuset bitowy. Na początek robiłem to ze zmienną uint64_t: [syntax=c]buf<<=1 if(dat... buf |= 1[/syntax] , ale okazuje się, że to za mało bitów. Zwiększyłem zakres do 128 bitów: [syntax=c]if(bufl & 0x80) carry = 1; else carry = 0; bufl<<=1; bufh<<=1; if(ca...
https://obrazki.elektroda.pl/1803056600_... W tym artykule opiszę zmagania z odczytem nietypowej składanki, wbudowanej w konsole typu Pegasus. Projekt to pomysł + stworzenie PCB + napisanie kodu w assemblerze 6502. https://obrazki.elektroda.pl/9452065200_... https://obrazki.elektroda.pl/3230638000_...
Boski Dialer - tak, w przypadku kodu szesnastkowego można coś takiego zrobić: bierzesz bajt i robisz iloczyn logiczny z 0x0f i już masz młodszą cyfrę hex. Potem tę samą cyfrę przesuwasz o 4 pozycje w prawo i masz starszą cyfrę.
assembler darmowy assembler assembler tablicy assembler przerwania
renault naprawiać whirlpool uszkodzić rezystor astra wyłącza gazie
sonopan instrukcja kamera fortec
Citroën Xsara Picasso 2001 OPR (RPO/DAM) Number Location Guide Zamiennik baterii do odkurzacza Laresar 7: jak wybrać?