Dzień dobry. Załóżmy, że mam rejestr EDX z taką wartością 0025069C. Debugger podpowiada, że jest to ASCII "A123..." (w miejscu kropek jakieś krzaczki). Jak samodzielnie przekształcić wartość 0025069C na owe 7 znaków ASCII ? Wartości w kodzie ASCII są tutaj: http://www.asciitable.com/ Trzeba tylko sprawdzić jaki kod ASCII kod kryje się pod wartościami:...
Ale kombinujecie trochę. A jaka to jest cyfra parzysta ? To taka która dzieli się przez 2. Więc podziel sobie tą cyfrę przez 2, wynik masz w akumulatorze A( który Cie nie interesuje ), a reszte masz w rejestrze B, teraz wystarczy sprawdzić czy rejestr B jest różny od zera :) Piszę rejestr A i B, co ma miejsce w mikrokontrolerach, w Twoim przypadku pewnie...
Nie, jeśli przenosisz zmienną do segmentu data, to rejestr DataSegment musi wskazywać właśnie na niego. Najbezpieczniej jest użyć SEG [zmienna]
Spójrz na swój kod rozbity na poszczególne kroki. Jeśli w programie występują powtarzające się fragmenty - należy użyć pętli. Na początek zrób rysowanie pojedynczej linii w pętli, np: 1. Załaduj do rejestru bajt jako wzorzec 1 linii figury z wyrównaniem do lewej, np 00110000B 2. Pętla 6 kroków - przesuń rejestr z bajtem wzorca o 1 bit w lewo z przeniesieniem...
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...
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...
Tak na szybko: Po pierwsze źle Ci się wylicza wartość, bo powinno być F8 a nie F3. Pierwsze odejmowanie umieszcza w rejestrze R0 wartość FB, następnie musisz jeszcze wyzerować akumulator bo odejmujesz wartość 3 od akumulatora w którym jest już FB (a powinno być 0) MOV R1,C jest bez sensu bo C to nie rejestr tylko znacznik przeniesienia (dziwne, że Ci...
Musze zaleście biedy 0. Ogólnie masz słabość do języków, co? 1. W '51 wektor resetu jest pod 0x00, a użycie rozkazu LJMP xxxx, zabiera 3 bajty. Przelicz samodzielnie na jaki adres wskazuje ORG 100000000B i czego można się tam spodziewać. 2. C51 ma 4 banki po 8 rejestrów, więc R9 to chyba ciężko będzie znaleźć. 3. Rozkaz MOV wymaga dwóch operandów....
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,...
Ja to bym okreslil w taki sposob. Nie wazne w jakim jezyku porozumiewaja sie ludzie i tak sie dogadaja. Wiadomo ze wyznawanie milosci po chinsku moze europejczyka wprowadzac conajmniej w dobry chumor :) ale i tak przeciez maja dzieci wiec jakos im sie udaje :). A przeciez ile ludzi korzysta z "wstawek" zaporzyczonych z innego jezyka. Program i tak musi...
A rozumiesz, jak działa [url=http://pl.wikipedia.org/wiki/Intel_... adresowanie pamięci? Tutaj masz wariant zwany adresowaniem [url=http://pl.wikipedia.org/wiki/Intel_...
http://obrazki.elektroda.pl/4029783300_1... Układu SID (6581 stary i 8580 nowy), będącym muzyczną orkiestrą komputera Commodore 64 nie trzeba nikomu przedstawiać – między innymi dzięki jego brzmieniu owa maszyna osiągnęła tak dużą popularność. Warto tylko przypomnieć, że SID ma jedynie trzy kanały, ale umiejętności programistów...
Po krótce - w ASM musisz wiedzieć pod jakim adresem jest dany rejestr peryferium i do niego sie odnieść. A to ciekawe, co piszesz, bo asembler stworzono właśnie po to, aby nie trzeba było tych adresów pamiętać i zamiast tego używać właśnie ich nazw ;) Post nieprawidłowo łączy dwa tematy. Adresy symboliczne w JEZYKU assemblera Znajomość architektury...
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...
Używanie argumentu "bo taka jest konwencja" nie różni się niczym od stwierdzenia "bo tak". Aby zrozumieć problem, musisz, przede wszystkim zrozumieć, jak działa asembler i czym są wspomniane rejestry (częstym problemem osób programujących wyłącznie w jęz. wysokopoziomowych jest niemożność odróżnienia ich funkcjonalności od zmiennych). Tak więc na początek:...
Akumulator to tylko nazwa rejestru. Potrafił akumulować wyniki z ALU i był docelowym rejestrem do której zapisywany był wynik operacji. Obecnie wyniki mogą być zapisane do dowolnego rejestru z pewnej grupy rejestrów, więc nadaje się im po prostu nazwy R0..R31. Jeżeli, któryś z nich dodatkowo spełnia jakąś funkcję to nadaje się mu ekstra nazwę. Nazwa...
:arrow: Sind, asembler a widzieliście rejestr DDRx w mikrokontrolerach PIC? :arrow: mikmas podaj dokładnie typ procesora.
A zamieniłeś wszędzie , miejsca gdzie było 'dword ptr i' na 'edi', a 'dword ptr j' na 'esi' ? Poza tym, czemu wywaliłeś 'add esp, 0x0c' za wywołaniem funkcji???
(at)kamyczek Niestety niewiele osób używa symulatora, bo gdyby używali to nie byłoby wielu pytań na elektrodzie. Ale to nie znaczy, że ciągle należy siedzieć w ciemnogrodzie - w końcu trzeba zrobić krok naprzód i używać narzędzi, które się ma. Co do wstawek - oczywiście, że w asembler można wstawiać wstawki w C. Oba języki można dowolnie przeplatać...
hmmm generalnie to dopiero zaczynam się bawić w uP, ale wg moich informacji wygląda to tak: aby port szregowy spełniał te kryteria należy odpowiedniu ustawić rejestr SCON, czyli potrzebujesz mode 1(Transmisja szeregowa asynchroniczna slów 8-bitowych, przy czym szybkosc ustalana jest programowo) oraz ustawić ren na 0 (wyłączenie nadawania), reszta bitów...
To co napisałeś to pewnie bascom ,ale po pierwsze nie używasz przerwania int0 tylko portu jako wejścia . Żeby używać int0 jako przerwania powinieneś po pierwsze skonfigurować jakie zdarzenie na int0 ma wywołać przerwanie zmiana stanu , poziom .Zezwolić na obsługę przerwania int0 i odblokować globalnie przerwania . po wystąpieniu zdarzenia nastąpi skok...
Np binarnie - dzieląc dany rejestr przez dwa i wyświetlanie 0 lub 1 w zależności od stanu rejestru, który przechowuje resztę z dzielenia.
Witam. Dzieki pomocy tutejszego forum, znalazlem biblioteke procedur matematycznych w asemblerze AVR, jednak zupelnie nie potrafie ich uzyc. Po pierwsze nie wiem co to za asembler - AVRStudio nie przyjmuje np. takich polecen jak: public adres: Musialem wszedzie zlikwidowac slowo 'public' zostawiajac tylko - adres: AVR Studio nie przyjmuje polecen 'dc.b'...
można jeszcze tak: clr c subb a,r0 jz skok ;gdy a==r0 ... skok: ... tyle że traci się zawartość akumulatora. Tak wogóle to warto ,tak dla nauki, popisać sobie troche takich procedurek w C (np Keil), zdisasemblerzyć to ;) i popatrzeć co to też kompilator wygenerował czasami wychodzą różne ciekawostki na które trudno samemu wpaść...
Wydaje mi się , że do takich porównań lepiej użyć XRL , niż SUBB . Piotrek
Skoro obliczenia w asemblerze sprawiają Ci kłopot , to mając 8KB pamięci programu i 2KB EEProm-u , wygospodaruj 720 bajtów na tablicę , zapisz w niej gotowe wartości dla każdego kąta i ... to tyle ;) Piotrek
Witam. Dzieki pomocy tutejszego forum, znalazlem biblioteke procedur matematycznych w asemblerze AVR, jednak zupelnie nie potrafie ich uzyc. Po pierwsze nie wiem co to za asembler - AVRStudio nie przyjmuje np. takich polecen jak: public adres: Musialem wszedzie zlikwidowac slowo 'public' zostawiajac tylko - adres: AVR Studio nie przyjmuje polecen 'dc.b'...
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....
Witam mam do napisania dosc prosty(chyba) program w asemblerze na 51, problem ze mam z tego tylko 1 laborke na ktora musze oddac projekt, a samemu nie chce sie poznawac wszystkich tajnikow asemblera :) programem ma byc licznik wcisniecia przyciski, czyli po wcisnieciu przycisku(port P1.7) ma sie zapalic dioda(port P4.1), rejestr R1 ma sie zwiekszyc...
Błąd jest tutaj przy konfiguracji wejść: [syntax=asm]LDI R16,0X00 OUT DDRD,R16 OUT PIND,R16[/syntax] W atmega 32 rejestr PIND jest tylko do odczytu, powinno być PORTD. Nie włączyłeś podciągania poprzez wpisanie 1 na odpowiednie pozycje PORTD.
Witam. Pisze właśnie 48 kanałowy moduł PWM. Procesor to atmega 169. problem Polega na tym że odświeżanie jest trochę za wolne jak na moje oko - nie wiem czy nie przegiąłem z liczbą kanałów obsługiwanych przez jeden procesor. Pierwotnie napisałem program w bascomie - działa ale zdecydowanie za bardzo miga. Metoda chyba najszybsza z możliwych czyli programowy...
Próbowałem - po którymś kroku występuje warning i wszystko jest przerywane - 'word access pod adresem jakimś tam' - mniej więcej coś takiego. Czy wogóle trzeba i jest wolno na siłę ustawiać ten rejestr np. R4 jako np. 01111101B? trzy pierwsze bity odpowiadają za konfigurację pinów próbowałem wszystkich opcji no i nic:)
start: mov dx, al mov ah,9 int 21h Nie rozumiem pytania o konwersje, ale moge podpowiedzieć że podany wyżej kod raczej nie zadziała, bo są w nim 2 błędy, składniowy i logiczny. 1. Nie można skopiować wartości 8 bit do wartości 16bitowej 2. Funkcja 9 int21h przyjmuje w rejestrze DX wskaźnik do tablicy znaków a nie wartość.
1.jak wynika inicjalizacja procka nie łąpię, nie potrzeba inicjalizacji samego procka, on od razu działa 2.jak zainicjowac stos(pewnie to do 1.i pewnie mnemonik mov) też nie łapię stos już jest, można go przenosić w inne miejsce (rzadkość) PUSH rejestr wrzucenie na stos POP rejestr pobranie ze stosu 3.jak wykonac operacje porownania zmienna1>zmienna2...
w morde niemoge ustawić tego timera w stan przechwytywania -przerwanie ma adres 0x00c? bo niewiem dokładnie (piepszona dokumentacja) -a to przerwanie jest generowane samoczynie po wykryciu zbocza kture uaktywnia przepisanie ??(qur... dokumentacja i hu.... słownik) -jakie bity ustawić w rejestrze tccr1a,tccr1b ,tryb normalny ,zegar systemowy bez skalera????...
ok juz wiem ze w gcc asembler ma byc w notacji AT&T i moj kod wyglada tak : __asm__ __volatile__("mov $0x378, %dx"); __asm__ __volatile__ ("mov $0, %%al "::"r" (wartosc)); __asm__ __volatile__ ("out %al, %dx"); jest tylko jeden problem, zapis '$0' w drugiej linii jest traktowany jaka stala i programmi zeruje rejestr danych LPT:/moze ktos cos poradzi,...
Dopisanie pętli nadrzędnej musi poskutkować. Oczywiście jej licznik musi być niezależny od liczników pętli zagnieżdżonych. Jest kilka możliwych rozwiązań, a najprostszym chyba będzie użycie stosu, czyli: .startup mov cx, 10 petla_glowna: push cx ... pop cx loop petla_glowna .exit
Co do pierwszego - skąd symulator ma wiedzieć w jakim stanie jest pin wejściowy? Możesz stworzyć plik symulacji z przebiegami IO i nim nakarmić AVR Studio. Co do drugiego - cyfra to jak rozumiem jakiś symbol rejestru? Jak wygląda procedura obsługi przerwania? Jeśli tak jak pokazałeś to jest totalnie błędna, bo dec zmienia rejestr statusu procesora,...
.INCLUDE "m16def.inc" ldi R16, 0xFF out DDRA, R16 .EQU SYS_FREQ = 16 Petla: ldi R16, 0b11111111 out PORTA, R16 rjmp Delay 'to jest skok we wskazane miejsce a nie do procedury. powinno być rcall Delay ldi R16, 0b00000000 out PORTA, R16 tu też brakuje opużnienia rjmp Petla Delay: ldi R16, 1 ldi R16, 1 push R18 push R19 push R20 push R21 mov R20, R16 mov...
Nie rozumiem początku. Operacja mnożenia daje w wyniku sklejony rejestr 16 bitowy "B,A", gdzie jest B starszą częścią. Po drugim mnożeniu wykonujesz dodawanie z tym, że sumujesz starszy bajt poprzedniego mnożenia i młodszy bieżącego. Dalej nie sprawdzałem. Wyjaśnij cel powyższego działania (może ja coś wymyśliłem :-)). A poza tym we wzorze y=ax+b jest...
Pracuje na symulatorze JAGODA, który odwzorowuje system DMS-51. Mam do wykonania zadanie, które polega na zapełnieniu obszaru pamięci zawartością AB poprzez wykonanie adresowania indeksowego. Ponoć adresowanie indeksowe przedstawia instrukcja MOVC A,A(at)+DPTR (czyli: akumulator = ( rejestru bazowy + rejestr indeksowy ) ). Wartość AB otrzymam przez...
Nie mówiąc już o kolejnych poziomach optymalizcji, globalnej i optymalizacji na poziomie generowanego kodu w asemblerze (np. gcc 4.5 i nowsze, albo -mrelax). Czyli np. zamiana jmp na rjmp, call na rcall itd gdzi eto tylko jest możliwe. Dla człowieka taka optymalizacja byłaby upiorna. Nie żebym miał koszmary nocne z tego powodu, ale zwyczajnie takie...
Procedura obsługi przerwania musi zapamiętać wszystkie rejestry, których używa, a następnie odtworzyć je przed powrotem - to zasada podstawowa. Jeśli całość kodu piszesz w asemblerze, to możesz zostawić parę rejestrów tylko do użytku przerwań, i wtedy nie ma obowiązku ich zapamiętywania w przerwaniach, bo nikt inny ich nie używa. Jeśli "pętla główna"...
Ogólnie w procedurze programowanie_ bit sreg.i zeruje żeby wyłączyć przerwanie od usartu a na koniec znów go ustawiam. Cały rejestr ma jakieś znaczenie? ZlyDotyk tak to zrozumiałem.? Zastanawiałem się czy problem nie polega na nie wyłączaniu samego przerwania od komunikacji ale to też dobrego efektu nie daje:(. Mam też problem z zakończeniem tych procedur...
W szkole uczą dzielenia ręcznego ... W jakiej szkole uczą dzielenia z wykorzystaniem przesunięć i obrotów? to na prawdę proste i sam dojdziesz do odpowiedniego algorytmu. Mam nadzieję, że Ty już doszedłeś i podasz kawałek kodu. Przypominam, że chodzi o dzielenie dużych liczb (wielokrotnej precyzji) i możliwości użycia dzielnika większego niż dostępny...
AVR studio (asembler) to nie Bascom... tu nie ma czegoś takiego jak komendy do obsługi sprzętowych liczników, musisz używać rozkazów uP i konfigurować odpowiednie rejestry i przede wszystkim odpowiednio używać przerwań, bo one są chyba najważniejszym elementem, którego używa się przy pracy z licznikami. Musisz wziąć notkę katalogową tego atmelka i przejrzeć,...
W BASCOMie możesz używać wszystkich rejestrów od R16 do R25 bo BASCOM nic w nich nie trzyma (od R0 do R12 w sumie też ale na nich nie działa rozkaz ANDI). Pozostałe to nie wiadomo. Czasami jakiś wskaźnik może się tam znaleźć więc trzeba uważać.
Mam pewien problem otóż program dodaje 2 liczby wprowadzane z klawiatury ale tylko suma do 10 co zrobiłem źle i jak mam przekształcić program żeby zapisywał do pliku wynik?[syntax=asm].MODEL SMALL .STACK 100H .DATA PROMPT_1 DB 'Podaj pierwsza liczbe: $' PROMPT_2 DB 'Podaj druga liczbe: $' PROMPT_3 DB 'Suma liczb to: $' VALUE_1 DB ? VALUE_2 DB ? .CODE...
Panowie nie wiem czy w dobrym to dziale pisze jak nie prosze o przeniesienie ale prosze rowniez o pomoc mam w poniedzialek spr. prawie calo roczny i musze to miec conajmiej na niedziele 1.Na czym polega multipleksowanie 2.Jakie podstawowe funkcje pełni rejestr 3.Zamień cyfrę w zapisie 10 tnym na bierna i heks. 4.co to jest akumulator i jaka pelni funkcje...
;* ;***************************************... ;*PROCEDURA WYLICZANIA SUMY KONTROLNEJ Z NUMERU SERYJNEGO UKŁADU 1-Wire ;***************************************... ;* ;* ;*******************************OPIS****... ;*Kolejne bajty numeru seryjnego...
rejestr stosu asembler adresowa rejestr asembler diody asembler
wskaźnik akumulator silnik próżniowy przyrząd blokować rozrząd
ekspres delonghi tonsil megafon
Nieprawidłowe wskazania prędkościomierza w BMW F15 - jak skorygować? Zalewanie złączek mosiężnych na rurach PEX betonem - czy to bezpieczne?