tablicę z danymi umieść na samym końcu za programem: [syntax=asm].include "tn13def.inc" .cseg .org0x00 rjmpstart .org 0x0A start: cli ; blokada przerwań ldi r16,low(RAMEND) ; stos na koniec RAM out SPL,r16 ldi r16,0b00000111 ;konfiguruje porty B pin0-pin2 na wyjscie out ddrb,r16 ps0:ldiZL,low(Ledy<<1) ;adres tabeli w pamięci programu ldiZH,high(Ledy<<1)...
1) Po prostu zapisujesz daną pod segment stosu o przesunięciu rejestru wskaźnika stosu i przesuwasz tenże. Ściąganie w odwrotną stronę. 2) RETURN - to nie jest przypadkiem polecenie mark? Bo nie kojarzę takiego w ogóle.
O kurcze, lata świetlne już nie miałem do czynienia z asemblerem dla 68K. :) I zdążyłem zapomnieć o "zakresach rejestrów"... 68K to jest procesor/rdzeń klasy CISC i niektóre instrukcje mają dość rozbudowaną funkcjonalność. Szukając dokumentacji asemblera, szukaj dla całej rodziny MC68K; tu masz przykłady: [url=https://www.google.com/url?sa=t&rct...
a o co chodzi z tym akumlatorem co to jest Zabierasz się za assembler i nie wiesz co to jest akumulator? https://pl.wikipedia.org/wiki/Akumulator... http://www.ire.pw.edu.pl/~kderzakowski/t... http://www.fizyka.umk.pl/~rkf.chaberski/... Najpierw trzeba poznać procesor, a dopiero później brać się za programowanie....
Zrób na przykład tak: jz SKOK ... ... ... SKOK: ljmp DZIEL .. ..
MOTOROLA #include "st7flite19.asm" BYTES segment byte at 80-FF 'ram0' segment byte at 180-1FF 'stack' segment byte at 1000-107F 'eeprom' segment byte at F000-FFDF 'program' segment byte at FFE0-FFFF 'intvect' WORDS segment 'program' .led ld A,#$FF ld PADDR,A ...... l Zamiast: #include "st7flite19.asm" , napisz: #include "st7flite19.inc" a plik st7flite19.asm...
Powinno dać się to zrobić za pomocą definicji i makr, ale już dawno nie korzystałem z asemblera w pełnym wymiarze. Obecnie w momentach krytycznych stosuje tylko wstawki asemblerowe w postaci kilku poleceń lub procedur napisanych w ASM, resztę pisze w C. Jednak [url=http://www.atmel.com/dyn/resources/... dokument powinien Ci...
Jeżeli we wszytkich IF występuje to samo sprawdzenie, to trzeba go zrobić raz na początku, co uprości kod: Zamiast: If M1 = 1 And K = 1 Then test.0 = 1 Else If M2 = 1 And K = 1 Then test2.0 = 1 Else If M3 = 1 And K = 1 Then test3.0 = 1 End If End If End If Czytelniejsza konstrukcja: IF K=1 THEN If M1 = 1 Then test.0 = 1 Else If M2 = 1 Then test2.0 =...
Jestem na O0, breakpointy mam w pierwszych liniach main, program działa tak: Przede wszystkim przejdź do widoku asemblera i tam zobacz jak wygląda wykonywanie programu. Breakpointy też postaw na instrukcjach asemblera, przed main. Czasami informacje o debugowaniu, pomiędzy C a asemblerem się rozjeżdżają, chociaż dla O0 nie powinno mieć to miejsca....
To jest prosta pętla wykonuje się tyle razy jaki długi jest rejestr żeby ją przedłużyć można zrobić na dwa sposoby dobudować jeszcze jedną pętlę ,która wykona obecną n razy lub rozszerzyć rejestr do długości 3 bajtów wykonując to samo odejmowanie przeniesienia na tym najwyższym i będzie to samo . Dla bezpieczeństwa między sbi portx i cbi portx warto...
Jakie instrukcje należy wypisać aby wyświetlić na wyświetlaczu LCD cyfrę zero. Wyświetlacz ma dwa wiersze po 16 znaków każdy cyfra ma być wyświetlona na górze wyświetlacza LCD mikrokontroler 8051/2 Asembler
tak swietnz ten tekst :P mnie nigdy nie interesowała elektornika procesory i takie tam :D zostałem zmuszony do zapoznania sie z tym na uczelni i troche zaczyna mi sie podobac :) jeszcze zeby moj angileski nie byl tak kulawy to było by swietnie
Pościągaj sobie artykuły Edw z serii - Asembler - język maszynowy procesora ... Tam znajdziesz opis rozkazów i komend.. :) http://www.edw.com.pl/index.php?module=C... ...
Tylko, że porównywanie w procesorach się wykonuje przez odejmowanie (patrz dokładny opis tej instrukcji), a to w przypadku porównywania z zerem jak napisałem nic nie zmieni. Pożyczka, czyli ustawienie przeniesienia C=1 występuje gdy wartość odejmowana będzie większa niż zawartość rejestru. Takie podstawy to kolega powinien znać. A BRLO właśnie sprawdza...
Może chodzi o ortogonalność architektury (każda instrukcja może być wykonana na dowolnym rejestrze, nieważne czy to jest rejestr I/O, SP (Stack Pointer), PC (Program Counter) czy też rejestr ogólnego przeznaczenia (tak samo każdy rejestr może być adresowany pośrednio). Texas w swoim MSP chwali się taką architekturą dowodząc że ma najmniejszy kod wynikowy...
Aby debuger widział eeprom musisz mu załadować wsad. Mam starszą wersję AVRstudio i u mnie jest to pozycja Up/Download Memories w menu Debug. Wybierasz z listy eeprom, wskazujesz plik *.eep i wciskasz Load and program. Co do mnemoników - polecam streszczenie: http://gayos.w.interia.pl/ Mnie się bardzo podobają te mnemoniki. Są to skróty wyrażeń co dana...
nie powiem.. ciekawe :) to asembler czy jakieś instrukcje bascoma? może ma ktoś wątli w C pod AVR?
Jakie tu herezje wypisujecie panowie ;) PIC'e musiałyby mieć 80MHz żeby dogonić AVR'y !!! PIC'e mają "gorszy" asembler bo mało instrukcji !!! .... żeby zrealizować to co było robione na zwykłym ATtiny2313 to trzeba przejść zaraz na ARM'ma !!!!! no szok, szok szok - chyba za gorąco co???? Sam najczęściej używam AVRów, ale żeby takie bajki opowiadać o...
Instrukcją sub.
assembler nie jest specyficznym rodzajem kompilatora To jest bardzo historyczne spojrzenie na asembler - kiedy to był on tylko tłumaczem zbioru nazw instrukcji, liczb i etykiet (nie wiem czy kolega żył w czasach kiedy asemblery generowały na końcu pliku obiektowego tak zwaną erratę). Współczesny asembler jest złożonym językiem programowania dalece...
Z asemblerem sobie poradzę , zawsze mogę dodakowe instrukcje dodać jako makra w ASEM-51 , ale przydałby się jakiś emulator.
Instrukcja w tej formie __asm { MOV R1,R3 } jest malo uzyteczna bo tak naprawde nie wiesz co jest w R3 w momencie przeniesienia jej do R1(na co rowniez wskazuje blad kompilatora). Załaduj na poczatku do R3 jakas wartość albo zawartośc jakiejs zmiennej i blad zniknie. Co innego gdybys mial funkcje,ktora pobiera kilka argumentow wtedy w R3 mialbys wartosc...
Nie wiem co to za procek, ale najprostszy sposob to odczytana liczbe sekund przesunac o jeden bit w prawo przez flage przeniesienia C. Dla AVR bedzie to instrukcja ROR (asembler) i mozesz wtedy dokonac skoku instrukcja BRCS lub BRCC do procedury zapalajacej/gaszacej dwukropek. Pozdro Dexter
Obsługa lcd w przerwaniu: wow. Sprawdź przede wszystkim połączenia z programatorem, jakimś miernikiem. Poza tym mogłeś przestawić fusebity przypadkiem. PS: praktycznie nie ma niszczących kodów, nie ma w asemblerze avr instrukcji HCF :P . http://en.wikipedia.org/wiki/Halt_and_Ca...
2 zmiennych dokładnie w tym samym czasie ( A nie prościej wyłaczyć przerwania na te 4 takty zegara. Zamiast systicka zastosuj inny timer np 32 bitowy. Wtedy przepełnienie będzie następować przy 72MHz co ok 60 sekund. Powinno wystarczyć. Masz tez specjalny rejestr co liczy cykle zegara przy wykonaniu programu (proponuję zapoznać się z DWT). Dlatego...
Dzięki za odzew. Mnie udało się uruchonić obydwa programy :) A macie może macie jakiś dobry kurs, gdzie dość jasno, a jednocześnie treściwie i bez lania wody opisane są poszczególne instrukcje.
Chodzi mi o polecenie MOV TH0, #F0Fh. Asembler zasygnalizuje błąd - nieznana nazwa F0Fh. Dla asemblera to NIE JEST liczba. Jeśli już poprawisz tak, żeby była liczbą - asembler zasygnalizuje przekroczenie zakresu, bo argument tej instrukcji może mieć tylko 8 bitów.
Kiedy już widzisz okno Dissasembly jesteś w domu. Po prostu widzisz jak to kompilator obsługuje, które rejestry i jakimi instrukcjami....Każda instrukcja języka wyższego poziomu jest tłumaczona na ASM a tak naprawdę to jest opisem poprzedzajacym to co na podstawie tej instrukcji wygenerował kompilator. Przedstawiłeś drogę maksymalnie na około. Po prostu...
Producent Bascoma nie udostępnia nawet generowania kodu w asemblerze, więc tym bardziej nie oczekuj że powie Ci ile poszczególne "instrukcje" trwają. Jeśli musisz napisać coś krytycznego czasowo, to pozostaje Ci tylko asembler.
Podłącz linie AD0..7 przez rezystory np. 4k7 do masy, HOLD, TRAP do masy, READY do plusa zasilania, podaj ne wejścia X1 zegar np. 2 MHz, podłącz LED przez rezystory pomiędzy A15, A14, A13 i plus zasilania. LED powinny "liczyć". RAM 32 KiB dostaniesz za grosze. Asembler 8085 to to samo co 8080 (ok, jest 12 dodatkowych instrukcji, ale to bez znaczenia)....
Witam szanownych kolegów, Ostatnio robiąc porządki znalazłem ot taką dokumentację, dotyczącą asemblera COBRY. Jest to skan oryginału bo taka wpadła mi w ręce dawno, dawno temu. To były początki lat 90-tych. Może się komuś przyda, to też umieszczam tu. Fajnie, pobrałem sobie, a sam program (ten asembler) też masz? Jak zacząłem czytać instrukcję, to...
(at)Eagle dzięki za wytłumaczenie i link do instrukcji asemblera. Ok. Przyjmuję, że kompilator robi to dobrze :) Pozostaje mi próba linkowania funkcji poprawnie działających wygenerowanych przez Keila do mojego programu kompilowanego w arm-none-eabi-gcc.
Poszukaj książki: "Mikrokontrolery jednoukładowe rodziny 51" T. Starecki dość dobrze ma opisane poszczególne bloki mikrokontrolera i różnice pomiędzy nimi, posiada także opis instrukcji asemblera.
w asemblerze?
Znam Turbo Pascal oraz delphi i podstawy c++. Od czego zacząć? ... Chciałbym się dowiedzieć jakie ten układ ma możliwości? (praktyczne) Zacząć od przeczytania pdf na temat procka, potem proponuje zapoznać sie z asemblerem, czyli instrukcjami procesora. Zrobić dla praktyki układ coby dioda mrygała. Czy warto się "zagłębiać" w ten temat? Warto poznać,...
Ech, kolega Pituś Bajtuś ma rację. Rozkazy push i pop działają tylko z argumentem bezpośrednim, więc jeśli chcesz odłożyć na stos R0 to musisz podać jego adres, czyli "push 00h". Nie ma znaczenia do którego rejestru go zdejmiesz, bylebyś zdjął daną ze stosu, więc zdjęcie danej do rejestru R1 będzie wyglądało tak "pop 01h". A kolega zwi3rzak się niestety...
Siemka!! Potrzebuje informacje na temat US W2416-70L. musze napisać do tego oprogramowanie(musze go zaprogramować) ktore bedzie wykonane w programie Asembler. potrzebuje do tego Waszej pomocy a wiec do roboty :-D w gory dziekuje. jak coś to piszcie na gg jak macie jakieś zastrzezenia
1. Jak mogę poznać podstawy assemblera? (Assembler czy asembler?) Ja zaczynałem od PC, dużo programów, przykładów i dokumentacji. Musisz zdobyć nawyki i przyzwyczaić się do projektowania algorytmów na bardzo niskim poziomie. 2. Jaka obecnie dostępna literatura pozwoli mi na opanowanie postaw, wyjaśni mi czym dokładnie są stosy, rejestry i jak na nich...
Jeszcze spytam o taki sposób, który jednak nie wiem czy jest do zrezalizowania. Chodzi o to np czy mogę odwołać się do 0 bitu AL? Przecież jeżeli bit 0 będzie 0 to jest to liczba parzysta, a jak 1 to nieparzysta. Jeśli tak można to jak to zapisać ( czyli odwołać się do tego bitu i porównać go np z 1) Prosiłbym jeśli się da o jakąś instrukcję
Oczywiście chciałem pisać w C, ale nikt nie potrafi mi powiedzieć dlaczego dla jednego wygląda to tak gpio.GPIO_Mode = GPIO_Mode_Out_PP; A dla drugiegotak: gpio.GPIO_OType = GPIO_OType_PP; gpio.GPIO_Mode = GPIO_Mode_OUT; (at)stmx napisał, że to udogodnienie, ale całym problem jest w tym, że to nie działa zamiennie, chociaż teoretycznie robi to samo....
Nie znam tego urządzenia, ale z tego co widać jest to jest już najniższy poziom programowania tzw. kod maszynowy. Jeżeli chcesz jednak rozszyfrować ten kod to trzeba znaleźć w sieci listę rozkazów 8085 z ich kodami i ręcznie rozszyfrować i przeanalizować ( jeżeli system ten nie udostępnia narzędzi typu asembler, disasembler itp.-zabawa jest okropna...
1. Co za pomysł, żeby zamiast zadeklarować dane z nazwami, ręcznie pilnować adesów pamięci? Od tego jest asembler. 2. Jest taka instrukcja CJNE - przyjrzyj się jej wariantom, któryś powinien pasować. Ew. użyj XRL. SUBB to odejmowanie z pożyczką - tu Ci nie pomoże.
Cześć Proponuję poczytać o adresowaniu bitowym. Wszystko się rozjaśni. Krótko mówiąc te instrukcje SETB i CLR zmieniają stan linii 1 na porcie 5 w celu wygenerowania opadającego zbocza na wejściu CLK układu 574. powodzenia
Mam wątpliwości, czy to jest cały program. Moim zdaniem jest to wyrwana z jakiejś większej całości procedura. To chyba jest cały program, tyle że ten asembler pewnie dokleja przynajmniej kod zakończenia procesu. Generalnie mam wrażenie że autor pytania jest leniem. Miał napisać jakiś program na zaliczenie, dostał/znalazł gdzieś kawałek kompletnego...
Asembler stworzono po to, aby nie trzeba było pamiętać kodów maszynowych instrukcji procesora, zamiast tego używać mnemoników okazuje się, że tyle lat żyłem w błędzie. Używałem w życiu wielu asemblerów, połowa z nich nie rozumiała definicji 'equ', zamiast tego używała np. "=", Poczytaj o historii powstania asemblera. Natomiast czepiasz się słowa 'equ'...
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...
Procedura zerowania RAM: [syntax=asm] MOVR0,#8 MOVR1,#247 ZEROWANIE: MOV(at)R0,#0 INCR0 DJNZR1,ZEROWANIE [/syntax] Zmień sobie wartość którą wypełniasz :-) Tylko uwaga na obszary. Zauważ że "oszczędzam" tylko pierwszy bank rejestrów bo tam są umieszczone R0 i R1, które używam do czyszczenia RAM. A instrukcja MOV A,(at)A+DPTR odczytuje do akumulatora...
dziękuję za te linki, ale nie wiem czy będę w stanie z nich skorzystać, bo nie znam niemieckiego Ten problem można rozwiązać za pomoc g...e translator. Tłumaczyłem już artykuły z japońskiego i jako tako było to sensowne. jeśli nie ma przeciwko temu żadnych przeszkód, mogę wysłać to co napisałem do tej pory i ewentualnie dorzucić do tego tą moją instrukcję....
Adres definiujesz właśnie tak jak pokazałeś - dyrektywą org. Symbol INT0addr to tylko symbol, któremu przypisana jest jakaś wartość. W asemblerze nie ma typów, więc wszystko zależy od programisty. Zdefiniujesz, że INT0addr ma np. 64, to .org INT0addr spowoduje, że następna instrukcja trafi pod adres 64. Co do języka - rozumiem, narzut to dobry powód...
witam czy moze ktos udostepnic instrukcje asemblera do at91sam7s pozdrawiam
Podziwiam Cię - 750 linijek kodu upchane w jednej funkcji main(), napracowałeś się, ale ja tego bym nie chciał analizować;] Boże, widzisz i nie grzmisz... :cry: * Brak formatowania kodu * Wszystkie nazwy zmiennych jedno bądź dwuliterowe * Instrukcje skoku goto (!) I jak tu się dziwić, że niektórzy nazywają C "wysokopoziomowym asemblerem"... Dawno takiego...
W fusebitach nie ma co grzebać, gdy wystarczy kilka instrukcji asemblera : push r16 in r16, MCUCSR sbr r16, 1<<JTD cli out MCUCSR, r16 out MCUCSR, r16 sei pop r16 Pozdrawiam, Daniel
A o zaliczeniu laborki dowiedziales sie wczoraj? Ten program to chyba ok 15 linijek w asm, i zeby to napisac wystarczy powierzchowne przejrzenie noty jakiegos 8051 + lista instrukcji.
Jeśli szukasz informacji o konkretnych instrukcjach x86, to chyba najlepiej sięgnąć do źródła, czyli do http://www.intel.com/products/processor/... (część 2A i 2B).
Witam, Można wykorzystać rozkaz DA A ale należy pamiętać że jest on wykonywany poprawnie tylko po instrukcjach ADD i ADDC. Dlatego odejmowanie należy zastąpić dodawaniem zanegowanej wartości. np: 59H-21H = 38H MOV R0,#59h MOV R1,#21h MOV A,#99h ; uzyskanie negacji w kodzie BCD SUBB A,R1 ADD A,#01h DA A ADD A,R0 ; 59h+(-21h) DA A Pozdrawiam JarekC
W jaki sposób zrobiłeś wstawkę asemblera? Nie zapomniałeś użyć instrukcji 'volatile'? Jeśli zapomniałeś to najprawdopodobniej kompilator C podczas optymalizacji wyrzucił z kodu tą wstawkę asemblerowską bo "doszedł do wniosku" że niczego ciekawego ona nie wnosi.
Na liście rozkazów u atmela pisze że jest DIV, MUL, FMUL, FMULS ale ich asembler wyrzuca błędy przy asemblacji że instrukcje są niedozwolone dla tego procesora (próbowałem 2313,8515,8535 i na żadnym nie ma, musiałem zrobić "na piechotę")
AVR Studio sa wszystkie instrukcje to wiem ale gdzie moge znalesc je przetlumaczone bo z angielskim mam klopoty ???
W czasie operacji odejmowania w zależności od wyniku ustawiają Ci się wskaźniki C,DC,Z gdzie: C - przeniesienie/pożyczka - wynik przekroczył 255 albo jest mniejszy od 0 Z - zero - wynik jest równy 0 jeśli odejmiesz 1 od danej - równej 0 to wyjdzie Ci -1 czyli wynik jest mniejszy niż 0 a że procek nie może zapisać -1 to ustawia C - pożyczkę - równej...
Polecam Bascoma. Jest tam instrukcja rozkodowująca RC5. Potem, jeśli chcesz na asembler, wystarczy zdeasemblować i już wszystko wiesz jak chodzi. Pozdrawiam.
Super, że napisałeś o jaki procesor chodzi... Sądząc z instrukcji o '51. mov to instrukcja przeniesieania wartości z/do pamięci wewnętrnej/rejestrów uC, movx to instrukcja dostępu do zewnętrznej pamięci danych (fizycznie inny układ scalony niż uC), DPTR to 16 bitowy rejestr używany generalnie przy adresowaniu komórek pamięci zewnętrznej, choć można...
Niczym szczególnym się nie różni, poza tym, że wektory obsługi przerwania mogą być trochę inne i ilość instrukcji może być troszkę większa, jeżeli chodzi o asembler. Nie wpływa to jednak na zapis programu, jeżeli zamiast konkretnych adresów używasz nazw symbolicznych definiowanych w plikach nagłówkowych, najczęściej dostarczanych razem z kompilatorem,...
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...
Siemka, polecam zrobić coś takiego: [syntax=asm] MOV DPTR,0FFE7H START: MOV A,(at)DPTR ;------------------------- KLAW1: CJNE A,#11111110B,KLAW2 CPL P1.2 ;świecenie LCALL TIME0 CPL P1.2 ;gaśnięcie LCALL TIME0 KLAW2: CJNE A,#11111110B,KLAW3 ;instrukcje analogicznie do poprzedniego KLAW3: CJNE A,#11111110B,KLAW4 ;instrukcje KLAW4: CJNE A,#11111110B,KLAW5...
Program najlepiej byloby w bascomie... ale jak trzeba to i asembler może być... zawsze można dać wstawkę...
Do rejestrów ładuje się liczby wyłączenie w postaci binarnej, bo procesor nie wie, co to jest system dziesiętny. W tekście programu możesz te liczby zapisać w postaci binarnej, dziesiętnej, szesnastkowej, ósemkowej albo jako znaki - 'a', '5' itd. Możesz również zapisywać je jako wyrażenia stałe, np. 5 + 77 albo '5' - 15. Nie znam asemblera AVR, ale...
Nic nie jest zablokowane; chodzi o to, że rozkaz IN występuje w 2 wariantach: IN AL/AX/EAX, imm8 - tej wersji użyłeś, jak widać, stały adres portu jest 8-bitowy, więc nie można odwołać się do portów o wyższych numerach; IN AL/AX/EAX, DX - w tej wersji numer portu podaje się w rejestrze DX, który - jak wiadomo - jest 16-bitowy ;) I tego wariantu należy...
Nie wiem czy ci to pomoże bo programuję w BASCOMIE:D, ale Watchdoga uruchamiam na początku programu, deklaruję czas np. 1024ms, uruchamiam (Start Watchdog) i później kasuję go przed programem głównym (czyli praktycznie na początku) i po każdym wejściu do pętli, oraz oczywiście w programie głównym przed instrukcją Wait (w asemblerze NOP) i zaraz po tej...
instrukcja kompilatora wie 4\/3!!
Witam. Wygląda na to, że Kolega niewłaściwie używa instrukcji skoków, próbując zastosować po nich instrukcję RET. Taka konstrukcja ma zastosowanie przy wywoływaniu podprogramów instrukcjami LCALL lub ACALL. Te dwa rozkazy zapamiętują adres powrotny, umieszczając go na stosie. Natomiast RET odczytuje ten adres i powoduje dalsze wykonywanie programu właśnie...
Może zrób to inaczej. Podam sam pomysł bo osobiście nie programuję w C więc nie chcę głupot pisać, a podejrzewam że asembler Cię nie interesuje ;) Po naciśnięciu dowolnego przycisku wygeneruj opóźnienie. Po tym opóźnieniu sprawdź jakie przyciski są wciśnięte. Ale zwróć uwagę żeby przy każdej instrukcji if sprawdzać oba piny 1 i 2 portu B. Więc warunek...
Cos zle kombinujesz. Po co chcesz przesuwac PORTB ?? Przesuwasz rejestr z dana do wyslania szeregowego a nie rejestr portu. Do tego zadania najlepiej wykorzystac instrukcje ROL lub ROR i testowac flage C instrukcjami BRCC i BRCS (oczywiscie asembler) i w zaleznosci od stanu flagi ustawiac pin lub zerowac. Pozdro Dexter
Co do roznicy to nie bardzo wiem ale co do stosu: -jest to specjalny "kawalek" pamieci RAM ktory sluzy do odkladania informacji przez procesor. Jest to pamiec typu LIFO (last in first out) Taki przyklad: wykonywany jest program podczas ktorego zostaje wywolane przerwanie. W tym momecie procesor odklada adres w ktorym program zostal przerwany na STOS....
Witam ja bym zmienił kwarc na 12Mhz to będzie rozdzielczość co 1us i wtedy timer ustaw na 50ms (50000) i masz równy czas . Nie wiem jak jest w bascomie ale asemblerze instrukcją ORL THL,#wartość można skorygować wartość licznika żeby odmierzał równy czas.
Do kompilacji pliku na hex uzywam ASEM-51 w wersji 1.2 oczywiście z odpowiednimi deklaracjami. Do tej pory nie miałem z nim problemów. Spróbuję czegoś innego bo jest trochę tego w sieci i o rezulatatach dam znać. Co do wymiany procka to nie wiem czy to coś pomoże bo jak w jednym miejscu programu uPC "rozumie" co ma zrobić a w drugiej nie to chyba jest...
. Język BASCOM BASIC oferuje wiele instrukcji obsługujacych wyświetlacz LCD. Aby jednak mieć całkowitą kontrolę nad wyświetlaczem można stosować procedury w języku asembler. Poniżej znajduje się przykład: $asm Ldi _temp1, 5 'załadowanie kodu rozkazu do R24 Rcall _Lcd_control 'prześlemy do LCD jako komendę Ldi _temp1, 65 'załadowanie do R24 kodu znaku...
Przez rejestr B sie nie da. Do pobierania danych z pamieci programu sluzy instrukcja MOVC A,(at)A+DPTR. Przyklad: MOV DPTR,#Tablica MOV A,#4 <-chcesz 4 element MOVC A,(at)A+DPTR <-Do A zaladuje 4 element z tablicy ... dalsze instrukcje na A Tablica: DB 1,2,3,4,5,6,7,8,9........... UPDATE: W przykladzie kolegi powyzej to to samo tylko ze marnowane...
ARM7TDMI ma architekturę v4T. Zawiera ona ok. 35 instrukcji. Nie jest to żadne szaleństwo. O ile dobrze pamiętam to C64 miał mniej więcej tyle samo ;) Fakt, że nie pisałem niczego w asemblerze dla ARM a trochę softu na nie napisałem. Dowodzi to jednak tego, że nie ma takiej konieczności. Mimo wszystko asembler dla ARM wydaje się być bardzo prosty. Te...
Pytanie jest raczej ogólne , bo na końcu są instrukcje asemblera - nie znam instrukcji asemblera gdzie numer bitu mógłby być zmienną, sbrc i sbrs wymaga bezpośredniego podania numeru bitu przed kompilacją. A wracając do Twojego pytania - powodem jest jak zawsze lenistwo - chciałbym uniknąć rozpisywania czegoś co da się zapisać w pętli ->na osiem warunków...
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....
Poza tym, że w jednym i drugim instrukcja zajmuje jedną linię i ma format "opkod argument1, argument2", to innych podobieństw jest niewiele - różne architektury, różne zestawy instrukcji, rejestry itd. Pozdrawiam, Dr.Vee
Udało mi się ukończyć symulator 8080. Pewnie są jeszcze jakieś błędy, w każdym razie program testujący instrukcje procesora przechodzi pomyślnie. Co do oryginalnej instrukcji Intela, znalazłem 2 błędy w opisie rozkazów CNZ i CZ. Wygląda, że ich opisy zostały omyłkowo zamienione. Czy ktoś może polecić jakiś dobry, sprawdzony, współczesny asembler dla...
witam Gdzie moge znalesc jakies sensowne wytluamczenie co robią instrukcje LOAD, FETCH, STORE, EINT w PicoBlaze IDE. Nieukrywam że z asemblerem niemialem zaduzo do czynienia, a musze na zajecia zrobic pewien program, gosc od nas wymaga cudów a nawet niewytluamczy instrukcji itp.
jak zatrzymac program na dsm 8051 na 10 ms lub 1s nie uzywajac do tego procedur epromu?? da sie to zrobic uzywajac instrukcji NOP??
Jak to zrobić, nie wiem czy dobrze rozumiem. Wysyłanie każdego znaku bitowo to duży problem. Jak to strawić? To masz gotowca :wink: pd7 equ p1.5 pd6 equ p1.4 pd5 equ p1.3 pd4 equ p1.2 en equ p3.1 rs equ p1.0 ;--------------------- ;bajt dla LCD w akumulatorze oczywista ;) dana: setb rs sjmp zapisz instrukcja: clr rs zapisz: acall lop...
Dzięki wielkie. Każda pomoc jest dla mnie zbawieniem:)
Jezeli chodzi o Bascom to Bog jeden wie ile sie wykonuje jedna "instrukcja". Jezeli chodzi o asembler to istnieje cos takiego jak lista rozkazow. Wymienione sa wszystkie instrukcje, co robia i ile cykli maszynowych procesora zajmuja. Nie podales co to za procesor ale zakladam ze to AVR. Wiec AVR jest procesorem w ktorym 1 cykl kwarcu = 1 cykl maszynowy...
grko napisał: IMO nieprawda a czy Xmegi przypadkiem nie mapuja przypadkiem eepromu do data memory ? Tak, w tym przypadku można włączyć mapowanie EEPROM do SRAM, co ma też tą zaletę, że można programować EEPROM stronami (co bywa nawet 32x szybsze niż programowanie komórka, po komórce). Wiem, że w niektórych uC występuje interfejs XMEM, który obsługuje...
brne Flaga_Z_0 Zdaje się, że ta instrukcja jest zbędna. [syntax=avrasm]LDIR17, &B01010101 MOVR1, R17 RCALLSprawdz_bit ;------------------------------------- Sprawdz_bit: ldiR16, &B10000000 Sprawdz_bit_x: movR2, R1 andR2, R16 breqFlaga_Z_1 ;Jeśli bit w bajcie = 1 to zrób coś rjmppomin1 Flaga_z_1: ;Jeśli bit w bajcie = 0 to zrób coś Pomin1: lsrR16 brne...
1. .cseg - CODE SEGMENT - użycie pamięci programu (flash) org - wymuś kompilację od danego adresu 2. Stos należy najpierw ustawić na koniec pamięci RAM (bo jest używany przy skokach do podprocedur, przerwań, powrotach z nich(, wynika to z tego, że z reguły na jej początku przechowywane są dane, a rdzeń procesora, czy ATmega128, czy ATtiny2313 jest podobnie...
Koledzy nie ma się co kłócić. Każdy będzie trzymał się swoich racji. Co do prostoty asemblera to jak już wcześniej wspomniałem mimo iż w atmelach jest więcej instrukcji to sam asembler jest prostszy. Co do środowiska programistycznego to do atmeli jest AVR Studio, darmowe i bardzo dobre i ma dużo większe możliwości niż zachwalany MPLAB chociażby samą...
51 to 51 i koniec :) Asembler jest taki sam (tzn. instrukcje dla procesora) Trzeba tylko uważać na to żeby wykorzystywać tylko te rejestry i adresowalny obszar pamięci jaki jest dostępny w danym typie uP. W AT89C2051 jest 2KB pamięci programu więc 16-bitowe rozkazy skoków tracą sens :), 128bajtów RAM powoduje że zapis lub odczyt z pamięci IDATA (np:mov...
CPI r24, 4BRSH wylacz_usypianie...wylacz_usypianie:CLI.... Kod: avrasm ] CPI r24, 4BRSH wylacz_usypianie...wylacz_usypianie:CLI.... Powiem szczerze, że nie bardzo rozumiem. Obecny kod wygląda w ten sposób: [syntax=c]/* * main.c * * Created: 2/14/2022 1:11:10 PM * Author: Maciej */ #include <xc.h> #include <avr/wdt.h> #include <avr/interrupt.h>...
Może tak przedstawimy kod - za _START_ADDRESS podstawić możemy sobie dowolną wartość numeryczną, etykietę od kodu(oczywiście pomnożoną *2 - słowo we flash jest 16-bit) : #define _START_ADDRESS 0x01AB ldi ZL, low(_START_ADDRESS) ; rejestr indeksowy Z wskazuje na młodszy bajt ldi ZH, high(_START_ADDRESS) ; pierwszej komórki pamięci programu...
Posiedziałem nad tym trochę i sprawa wygląda mniej więcej tak: długi kod powstawał przez to, że miałem ustawiony kompilator arm-elf-c++ z pakietu gnuARM, który to dołączał sobie jakieś biblioteki o objętości "jedynie" 60kB. Zmieniłam kompilator na arm-elf-gcc i jest dobrze. Znalazłem też plik, w którym można podejrzeć jak zostały zamienione instrukcje...
Skąd pan to wie ? a co by było gdyby +=2; ? :) Będę strzelał: zostanie wykonana jedna instrukcja asemblera SUBI w celu obliczenia nowej wartości tej zmiennej :)
Coś te flagi przecież ustawiło... Najpierw włączasz obsługę tych przerwań, potem włączasz podciąganie pinu to flaga już ustawiona...a kasowana jest przez AVR sprzętowo kiedy obsługiwane jest przerwanie. Bascom nie musi obsługiwać żadnego kasowania flagi przerwania bo robi to sam procesor tyle, że w przerwaniu (jednym w wyjątków potwierdzających regułę...
Jedyne, co ja mogę poradzić - to odesłać na stronę "Elektroniki dla Wszystkich": [url=http://elportal.pl/index.php?module... - znajduje się tam cykl programowania '51. Co prawda opisywany jest zestaw startowy, ale i bez niego można ten kurs wykorzystać - opisy instrukcji asemblera są...
Zmienilem z acc na a i nic dalej problem wydaje mi sie ze ta instrukcja Djnz "zmniejsz,skocz jesli nie rowna sie zero" powoduje problem. Bo w kompilatorze asm wszystko gra i program sie wykonuje. Wydaje mi sie ze chyba bascom sobie nie radzi z niektorymi instrukcjami ale moge oczywiscie byc w bledzie.
Mam dzisiaj chyba dzień dobroci... Tu masz procedurę dzielenia, przerobioną z noty AVR200. Wykona się +/- o 50% dłużej niż oryginalny kod 16/16 unsigned - jest 8 przebiegów pętli więcej i jedna instrukcja więcej w pętli, ale zoptymalizowałem jednego brancha więc cykli w przebiegu pętli wyjdzie tyle samo. Z tego wynika, że wszystko powinno zająć max...
lista instrukcja asembler asembler sortowanie diody asembler
excel makro syntax error zasięg telewizji naziemnej zrobić cennik
suzuki burgman projekt przyczepki
Lokalizacja przekaźnika klimatyzacji w Citroen C4 1.6 HDi 2007 Używane części do Mercedesa Actrosa - gdzie szukać?