1. dyrektywa asemblera .cseg .org "mówi" kompilatorowi od jakiego adresu umieścić kod wynikowy programu po skompilowaniu 2. stosu mógłbyś nie używać tylko wtedy gdybyś nie używał instrukcji typu rcall lub innych skoków do podprocedur, które muszą odłożyć na stosie punkt do którego ma wrócić program po zakończeniu tejże podprocedury - po rozkazie ret,...
Dyrektywa EXTERN zawsze chodzi w parze z PUBLIC, są nierozłączne. Jeżeli w pliku A masz napisane "PUBLIC JakaśEtykieta" to w innym pliku (lub plikach) masz napisane "EXTERN JakaśEtykieta". Linijka "PUBLIC JakaśEtykieta" może być tylko jedna w całym projekcie, a linijek "EXTERN JakaśEtykieta" może być już całkiem sporo. Po co to wogóle jest? Ano po to...
Pierwszą rzeczą którą musisz zmienić to: LJMP START - ten skok jest niepotrzebny bo nie obslugujesz przerwań a dyrektywa ORG ustawia poczatek programu (od tego adresu zacznie sie wykonywanie programu) ORG 100H START: jesli chcesz to napisz: ORG 100h i pożniej pisz program - domyślam się że ten przykład jest z ksiązki nawet wiem jakiej. W swoim Programie...
sadło: znowu się z Tobą nie zgodzę, w każdym razie częściowo, bo to są deklaracje stałych (co zresztą napisałeś). Zmenne deklaruje się w inny sposób. Tak jak napisaleś to jest adres komórki, a nie nazwa zmiennej. FAQ do którego odnośnik jest wyżej zostało uzupełnione o deklaracje zmiennych, ale jeżeli nie chce sie komuś szukać to dołącze kawałek tutaj:...
Przecież masz to w asm. Zmienne to nic innego jak etykiety. Tyle, że w przeciwieństwie do języków wyższego poziomu to ty decydujesz jak potraktować taką etykietę i jaki typ przechowuje. Oczywiście nie możesz zrobić if costam dla takiej zmiennej, ale możesz to samo osiągnąć instrukcjami CP, CPI. Jeśli ci brakuje tego if'a to sobie stwórz makro. Jak porządnie...
Wszystko jest ok, tylko pojawiają mi się takie błędy - mogę i z nimi dokończyć kompilację, ale wolę się upewnić, co oznaczają. Błędy: http://obrazki.elektroda.pl/2934146500_1... Dodano po 12 błąd ten oznacza "błędny znak", tylko ja tego znaku nigdzie nie widzę ani pomyłki Linia błędu jest zawsze ostania, cokolwiek tam bym umieścił Dodano...
Mam problem z dyrektywami! Gdzie moge znalesc przetlumaczone wszystkie dyrektywy?
Witam Brakuje dyrektyw "equ" :D . Pozdrawiam
O tym nie pomyślałem, ale myślę, że będzie to to samo. Będzie to samo pod warunkiem, że gra nie nadpisze w RAM komórek z danymi używanymi przez monitor. Ciekawe czy monitor trzyma coś w RAM prócz oczywiście stosu... Właśnie zastanawiam się jak skompilować projekt, w którym jeden program zostanie podzielony na bloki i umieszczony we wskazanych bankach....
Uzywam kompiltora PICC HITECHa, uC PIC16F876A, Jakiej (i jak) dyrektywy asemblera uzyc by w wygenerowanym pliku hex pierwszym rozkazem (pod adresem 0) bylo: clr PCLATH a nastepnie goto main Potrzebuje takiej sekwencji by moc korzystac z bootloadera. Probowalem tak: PSECT absdata,abs,ovrld ORG 0h ale cos niestety nie dziala:( BF
Np. #define jed_bit PORTA,0 #define jest dyrektywą asemblera, w helpie mplaba znajdziesz.
Witam ;) Czy w 8051 jest taka dyrektywa jak "MODULE" ?? Mam za zadanie porównać name i module. Wiem, że name przypisuje nazwę modułowi.
Format zapisu jest bez znaczenia, procesor i tak rozumie tylko jeden - binarny. To czy to sobie zapiszesz jako hex, dec czy oct, to tylko dla twojej wygody jest. Jeśli chcesz rozbić liczbę 24-bitową na poszczególne bajty, to najmłodszy masz liczba%256, starszy (liczba/256)%256, a najstarszy (liczba/65536)%256. W asemblerze masz też gotowce, typu high,...
To co napisałeś w 1 poście przypomina dyrektywy asemblera '51. Być może przetworzenie tego asemblerem dla tego procesora (np. asem-51) pozwoli Ci wygenerować plik HEX do wgrania do pamięci. Żeby to działało musisz na nieużywane wejścia adresowe podać stan 0. Więcej dowiesz się w dziale Mikrokontrolery '51. Jeszcze prościej byłoby utworzyć plik BIN z...
DB Nie jest rozkazem procesora tylko dyrektywą kompilatora. A DPTR jest to 16 bitowy rejestr w 8051. Więcej szczegułów znajdziesz w dokumentacji 8051
<label to tylko dyrektywa asemblera, której wynikiem jest młodszy bajt etykiety label. Czyli jeśli label jest pod adresem $abcd, to lda <label jest równoznaczne z lda $cd czyli wczytanie do akumulatora komórki pamięci spod adresu $cd. Niech potwierdzeniem moich słów będzie poniższy zrzut z symulatora: http://obrazki.elektroda.pl/6727883800_1...
Witam Myślę, że to rozwieje wątpliwości: Dyrektywa $ASM używana jest razem z dyrektywą $END ASM, podczas tworzenia bloków kodu w języku asembler, umieszczanych jako wstawki w programach języka BASCOM BASIC. Zamiast używać tych dyrektyw, można także przed każdą linią zawierającą mnemonik postawić znak !. Większość mnemoników asemblera nie potrzebuje...
Przy okazji. Jest jakiś cross kompilator dla asemblera MIPS, ale taki z dostępną dyrektywą ORG? Szukałem i próbowałem różnych, ale nie ma ORG, więc nie mam jak ustawić adresu pod, którym ma się zaczynać kod. Da się to zrobić zwykłym gcc pisząc odpowiedni skrypt linkera. Podaj jakiś przykładowy kod asemblera, to spróbuję to przygotować.
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...
Witaj! Nie musisz pisać deklaracji .DW. Możesz pisać deklaracje .DB. musisz pamiętać że Flash kontrolera to 2 bajty poj jednym adresem. Zapraszam do lektury http://www.atmel.com/dyn/resources/prod_... http://www.atmel.com/dyn/resources/prod_... Nie ważne jakiego kompilatora uzywasz gdyż jest dla danej rodziny kontrolerów...
Nie wiem co jest błędnego w mojej składni. Dyrektywa #define ze znakiem równości lub bez, a kompilator wali błędami. Czy jest coś zamiast low () i high () bo tego też się czepia. #define ma być bez znaku = :!: Co w tym jest źle? #define mc32u1 r17; multiplicand byte 1 #define m32u5 r25; result byte 5 adc m32u5,mc32u1 ; Chyba nie bardzo wiesz , jak...
Podejrzewam, że używasz Keila, chociaż to nie ma większego znaczenia. Sprawdź, czy masz ustawiony stos dla FIQ. Domyślnie ma on rozmiar 0, co sprawia, że FIQ "zjada" stos IRQ. Właściwie FIQ można obsłużyć bez stosu, ale trzeba to zrobić pod asemblerem. Zauważ, że korzystasz z tej samej dyrektywy __irq. Oznacza to, że FIQ jest obsługiwane tak samo jak...
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ą...
(at)Xamrex - kompilator przetłumaczy ljmp start jako skok pod adres etykiety start (którego jeszcze nie zna). W kolejnej linii ustawi odpowiednio pamięć, następnie od tego miejsca przypisze etykiecie start adres... jak przeleci cały program pierwszy raz to w drugim przejściu uzupełni adresy. Nie ma to związku z aktualnym WYKONYWANIEM kodu na mikrokontrolerze...
Mam bardzo mgliste pojęcie jeśli chodzi o mikroprocesory. Takie pojęcia jak asembler,dyrektywy,operaty są mi obce. Proszę o podpowiedż od czego mogę zacząć naukę.Czy są jakieś strony które od podstaw wyjaśniają ten temat?
BASCOM oczekiwanie załatwia sam i robi to korzystając z dyrektywy $crystal. Pisałem obsługę LCD w BASCOMie i żadnych dodatkowych opóźnień nie musiałem dawać. A tak w ogóle to nejlepiej napisać całą obsługę samemu w asemblerze =] Poza tym zauważ, że w drugiej linii użyłeś polskiego znaku, a LCD nie mają takowych, chyba, że sam zdefiniujesz, stąd mogą...
Witam! Jak w AVR-GCC zapisać tablice z danymi pod konkretnym adresem w pamięci flash procesora? Będę wymieniał te tablice za pomocą bootloadera w zależności od wersji urządzenia dlatego muszę mieć je zapisane pod odpowiednim adresem. Jest coś takiego jak dyrektywa "ORG" w asemblerze? Pozdrawiam
Jak w tym kompilatorze można umieścić w określonym miejscu pamięci programu, kawałek kodu, jedną czy kilka funkcji. W asemblerze wystarczy dyrektywa .org a czy jest coś podobnego w AVR-GCC ?
Zazwyczaj przed podaniem dyrektywy w asemblerze .db podajesz jeszcze .org 0x0000, która do umieszcza dane pod tym adresem (0x0000). Innymi słowy, wszystkie dane, które zostały zamieszczone po .org 0x0000, są dostępne od adresu 0x0000. Zauważ, że jeśli korzystasz z pamięci flash w uC np. Atmega8 masz tam organizację pamięci 2 bajtową (WORD), a wszystko...
W tym programie jest jedna ciekawa rzecz na którą zwróć uwagę: __CONFIG _MCLRE_OFF & _CP_OFF & _WDT_OFF & _INTRC_OSC_NOCLKOUT ;Internal osc. jest to wskazówka jak ustawić "Configuration Bits" , a od ich ustawienia zależy poprawna praca programu. To nie jest "wskazówka" ale dyrektywa dla asemblera jak ma zakodować bity konfiguracyjne w pliku HEX. Więc...
Dyrektywa $ASM jest używana razem z dyrektywą $END ASM, podczas tworzenia bloków kodu w języku asembler, umieszczanych jako wstawki w programach języka BASCOM BASIC. Zamiast używać tych dyrektyw, można także przed każdą linią zawierającą mnemonik postawić znak !. Większość mnemoników asemblera nie potrzebuje przedrostka !, gdyż są one rozpoznawane...
Po prostu przychodzi moment kiedy zapanowanie nad kodem assemblera staje się uciazliwe i tu powinno wkroczyc C. Przyznam się szczerze, że nie ma dla mnie takiego momentu (może dlatego, że w kwesiach programowania jestem samoukiem i nie miałem tu szczególnych osób jako autorytetów które by mnie naginały w jakimś kierunku... ;)). W asemblerze też można...
Witam wszystkich :) Przyjąłem już strategię działania. Otóż, wersja MikroLuk v2.0 zostanie wypuszczona z moim własnym asemblerem, obsługą dwóch, może trzech programatorów, symulatorem i następującymi możliwościami integracyjnymi: 1. Będzie można zdefiniować obsługę programatora poprzez wywoływanie zewnętrznego oprogramowania, będą również dodane standardowe...
Kazdy procesor operuje na liczbach. Dla niego nie jest zrozumiale P1, zrozumiale jest dla Ciebie, czlowieka. Ow tajemniczy plik z definicjami to wlasnie nic innego jak tlumacz. Zawarte w nim sa "tlumaczenia" z jezyka ludzkiego na liczby tak zeby kompilator wiedzial ze piszac P1 masz na mysli liczbe 90 hex. Takie pliki sa potrzebne zawsze jesli chcesz...
Zamieszczając w głównym programie CALL etykieta takiego podprogramu assembler nie sygnalizuje błędu Include we wszystkich językach programowania jakie znam, jest prostym wstawieniem Y a jakimś puncie Y. ale nie wykonuje podprogramu. Podejrzewam, że musisz zmienić diagnozę, albo ten kod pokazać. W asemblerze można zrobić dziesiatki błędów, ze kod jest...
Czy procedurę o etykiecie "timer0" masz daleko od początku programu? A może jej w ogóle nie masz? W zasadzie dla procesorów o tak dużym Flash'u powinno się używać rozkazu "jmp", a nie "rjmp" (dlateg adresy w tablicy przerwań są co 2 bajty), ale tak jak napisałeś może też być, pod warunkiem, że nie zostanie przekroczony zasięg rozkazu "rjmp". Wówczas...
Zainstalowalem najnowsza wersje AVRStudio oraz SP1. Problemy opisane powyzej znikly. Jednak bylo by zbyt fajnie aby bylo wszystko cacy. Z semblacja jest wszystko OK. Debuger ma jednak swoje odchyly. Problem 1, jak powiedziec debugerowi, ze do procesora mam przylaczony kwarc np. 8MHz. Problem 2, Nadal debuger nie lubi sie z dyrektywa .ecode . Tzn. jak...
Dlaczego za tępy? Różnica tkwi tylko w dyrektywie - zamiast asm daj __asm i po krzyku.
Jeden przykład: #define M 2+3 X= M*M; Jaka będzie wartość X po tej operacji? Ano nie będzie 25, jak ktoś by podejrzewał tylko: X=2+3*2+3 = 11 Zaskoczenie? Nie, po prostu preprocesor przy obliczaniu X zrobił tylko bezmyślne wstawienie za M tego co było w dyrektywie #define. Dlatego zastosowałem nawiasy... Dlatego można sobie wstawić do programu rozwinięcie,...
Dodam jeszcze, że w obecnych wersjach AVRStudio domyślnym asemblerem jest avrasm-2 nowa wersja wzbogacona m.in. o obsługę nowych dyrektyw preprocesora.
Na poczatku przed kodem umiescić dyrektywę .cseg i .org 0x0E to powinno zmusić kompilator do umieszczenia kodu w tej sekcji . Kiedy łączysz asembler z C to wygląda trochę inaczej - musisz się dostosować do konwencji jaką rozumie linker.
Nie podałeś w jakim środowisku będzie uruchamiany kod ale AD1: Diody zapalą się jeżeli w układzie docelowym stan '1' zapala diodę. Po instrukcji jmp nie dajemy przecinka, przecinek występuje tylko jeżeli rozdzielamy parametry rozkazu. Chyba że jest to specyfika używanego assemblera. AD2: Dobrze byłoby nazwać jakoś to makro, słowo 'nazwa' może być mylące....
dyrektywa $crystal nie wplywa na instrukcje LCD ... musialby to byc chyba jakas wstawka w asemblerze albo musialbym obslugiwac 8bitowe wejscie danych w LCD, ale nie za bardzo z instrukcji moge dojsc do tego jak to zrobic
No i dobrze ci wychodzi error bo niby skąd? po pierwsze Bascom ma wiedzieć co znaczy RAMEND a po drugie LOW to polecenie czysto Bascomowe a ty mieszasz to z asemblerem we wstawce Podejrzewam, że znalazłeś gdzieś jakiś kawałek kodu w asemblerze, który coś tam robi ale nawet nie jest dla ciebie do końca zrozumiały i zachciałeś go ot tak wstawić do Bascoma...
ZADEN kompilator idealny nie jest. Dzis ze zdumieniem stwierdzilem ze asembler atmelowski nie pozwala na nieparzysta liczbe zadeklarowanych bajtow w dyrektywie .db ;( Pozdro Dexter
Asembler, asembler moja pomylka. W wersji 2 Atmel zaimplementowal "C style preprocessor" i w helpie sa wyszczegolnione takie dyrektywy ale nie moge tego opanowac co chwila jakis blad. Jedyne co mi zadzialalo to #ifndef i #message. Zaczynam sie podejrzewac o debilizm wtorny ;) Pozdro Dexter
Poprobowalem z asemblerem ASM51 Metalink, ktory bodajze jest w dziale download. Kilka kosmetycznych poprawek i kod sie asembluje. Jest jednak jeden problem. Jak przenisolem czesc kodu do drugiego pliku i dolaczalem ten plik dyrektywa &INCLUDE(plik) to komplilowalo sie co prawda bez bledu, ale w chwili proby wykonania kodu ktory byl w czesci dolaczanej...
Chyba już nikt nie używa asemblera :) Jest to błąd AS i raczej nie ma co liczyć na jego naprawienie, bo nikt nie jest zainteresowany asemblerem (a przynajmniej zainteresowanie jest marginalne). Jest kilka obejść problemu: - przejście na asembler z gcc, który wygeneruje plik elf i AS sobie z tym poradzi i EEPROM będzie widoczny. Dodatkowy zysk jest taki,...
Najprawdopodobniej plik źródłowy jest przeznaczony dla innego asemblera (najprawdopodobniej Keil), niż ten którym kompilujesz program (Metalink) i nie rozumie on tych dyrektyw (ERROR #23: Illegal or missing directive). Zajrzyj do manuala i zobac, jak powinny wyglądać właściwe dyrektywy i wpisz te poprawne.
Mógłby ktoś potwierdzić że używane rozkazy in out mov nie modyfikują SREG ?? Panie kolego, bierzesz pierwszą lepszą z brzegu listę rozkazów asemblera do AVR i masz w ostatniej kolumnie jasno opisane która operacja jakie znaczniki zmienia w SREG o ile w ogóle zmienia ;)
maszyna dyrektywa dyrektywa maszynowy dyrektywa bascom
ta8659 kolor płyta indukcyjna amica opinie schemat centrali platan
liczba przewodów obciążonych dewalt dcb115
Samsung 40T vs Lishen LR2170LA 21700 Cells: Performance, Reliability, User & Expert Opinions Silver IP-LE 43/493411 TV Specs and Issues