to czym się różnią eax od ebx??? Kolejnością wykonania z tago co mi wytłumaczyli więc wnioskuje że są dalsze litery alfabetu między e i x ale chyba jestem w błędzie No i są, ale rejestrów jest tylko 4 ;) Do tego EAX od EBX różnią się optymalnością rozkazów, niektóre rozkazy specjalnie traktują niektóre rejestry.
Między innymi tak
Od pewnego czasu tylko piszę w C i to zupełnie na inne mikrokontrolery, lecz naskrobałem takie "cóś": [syntax=asm] liczba equ 72h ; przechowywana liczba podana przez uzytkownika czy_kod_poprawny equ 73h ; zmienna "flaga", jesli wartosc 0 to kod poprawny org 0h; start: mov R0, #3 ; ilosc cyfr mov R1, #0 ; offset w tablicy mov DPTR, #haslo mov czy_kod_poprawny,...
To jest właśnie przesłanie nie bezpośrednio pod adres, tylko pod adres wskazywany przez rejestr (indeksowy SI). Zasadniczo DS jest podstawą, więc nie ma potrzeby podawania go przy adresacji. I nawet nie wiem, czy we wszystkich trybach pracy i na wszystkich procesorach można... A czemu w zadaniu jest napisane o założeniu DS to też nie wiem...
LJMP START START mov R3, #8 mov R4, #2 mov R5, #4; dotąd jest dobrze mov A, R3 ;add R3 -źle, dodawanie wymaga dwóch operandów add A, R4 ;add R4- jak wyżej add A, R5 ;add R5- jak wyżej mov R7,A ;mov A, R3-nie wiem co miałeś na myśli pisząc ten kawałek kodu(5 lini) ;mov A, R4 ;mov A, R5 ;mov A, R7 ;mov A, P1 mov B,#5 mul A, B mov B,#2 div A,...
W poprzedniej wypowiedzi dokonałem poprawek w przykładowym kodzie. Tak, to już jest kiedy Elektrodę traktuje się jako przerywnik przy pracy. Kwestią otwartą jest nadal testowanie wybranego bitu, lub bitów. 1. Jak to wykonywać poprawnie testowanie jednego bitu ? Zależy to od danej sytuacji. W trakcie testowania pojedynczego bitu w PINx z pominięciem...
A mógłbyś zamieścić, przykładowy kod, bo jestem nowy w assemblerze i za bardzo tego nie czaje. Gotowy kod? Za wiele wymagasz. Jak chcesz pisać w asemblerze, skoro go nie znasz? W sieci jest masa tutoriali i przykładów, które nalezy przerabiać i uczyć się na nich. Poza tym jeśli coś nie chce się zasemblować (nie kompilować, ten termin dotyczy HL) powinieneś...
Za pomocą jakich instrukcji w assemblerze mogę zapisywać coś do rejestrów R0-R15 ? Masz na myśli zastąpienie załadowania bezpośrednich wartości np. ldi / cbr / sbr r0, 0xD5 (nie istnieją !) ? Jest tego trochę ;) (na przykładzie r0 , r16 i wartości 0xD5 ): ldi r16, 0xD5 mov r0, r16 ldi r16, 0xD5 push r16 pop r0 Można także zatrudnić w/g własnej pomysłowości...
Może się mylę, bo mam sklerozę, ale czy można używać R4 jako rejestru indeksowego? Zdawało mi się, że tylko R0 i R1. Program Ci się skompilował? Pozdrawiam!
Kodu brak i może jakiś konkretny przykład byś podał? Czyli ciąg i wartości rejestrów.
PTR to nie jest rzutowanie, jakie występuje w językach wysokiego poziomu, tylko traktowanie. Po prostu jest spod adresu wskazanego zmienną pobierane WORD danych. Jako, że sama zmienna jest tylko typu bajt, to w rzeczywistości zostaną pobrane wartości ze zmiennej Byte1 i Byte2 w kolejności.
Bo, moim zdaniem, powinieneś adresować bufor pośrednio. Np. tworzysz sobie bufor od danego adresu. Adres zapisujesz do R0 i potem adresujesz np. mov A,SBUF mov (at)R0,A inc R0 Wówczas R0 jest Twoim wskaźnikiem do danej komórki bufora. Można zdefiniować jeszcze stałe np. BUFFER_START i BUFFER_END, które będą adresami początkowym i końcowym bufora, co...
Tamte akurat miały architekturę von Neumann-a, więc wszystkie adresy były jednego rodzaju. Składnia DANE<<1 (albo chyba DANE*2 też mogło by być) wynika z (nieco) idiotycznej konwencji, że dla przestrzeni kodu asembler numeruje (adresuje) słowa (pamięć FLASH jest 16-bitowa), natomiast przy dostępie przez LPM trzeba zaadresować pojedynczy bajt.
sbi _SFR_IO_ADDR(TIFR), OCF1A Instrukcji sbi nie można używać w odniesieniu do rejestrów o adresie większym niż 32, zamiast tego należałoby w tym przypadku użyć: push r18 ; opcjonalnie ldi r18, (1<<OCF1A) sts _SFR_MEM_ADDR(TIFR), r18 pop r18 ; opcjonalnie Odkładanie na stos nie powinno być konieczne, gdyż rejestr r18 zgodnie...
push/pop stosuje się, żeby zachować wartość początkową rejestrów, jeśli w innym miejscu programu są wykorzystywane. ldz - nie ma takiego menmonika w asemblerze AVR. Zapewne to jakieś makro. brcc - wykonuje skok jeśli wskaźnik carry (przeniesienia) jest wyzerowany, co ten wskaźnik oznacza to sobie doszukasz. lpm r16, z - ładuje do rejestru r16 wartość...
Zmienne bufora o ile pamiętam mają nazwy HEAD i TAIL więc kod może wyglądać tak (pod HEAD i TAIL należy wpisać wartości wskaźników): mov al, [HEAD] cmp al, [TAIL] jz bufor_pusty ..... Proste no nie ? No i oczywiście w ds musi być numer segmentu tych zmiennych (chyba że użyjesz jawnie innego rejestru).
16-bitowy assembler jest bardzo ograniczony, nie każdy rejestr może być wskaźnikiem danych. Zmień dx na di/si/bp/sp, albo [syntax=asm]mov di,dx mov bx, [di][/syntax]
ecx jest rejestrem, nie zmienna lokalna. Jesli wolana funkcja korzysta z tego rejestru (a moge sie zalozyc, ze tak jest), to Twoja petla sie rozsypie.
MOV R2, 0xDD MOV R3, 0xDD MOV R4, #0 ;zerowanie R4 ADD A, R2 ADDC A, R3 END robiac cos takiego dalej nic.. wynik bedzie zapisany w dwoch rejestrach ?
A ja jeszcze dodam, aby podejrzeć sobie wypluwany kod z asemblera, jakiś program z jednym rozkazem (wcale nie ma działać), potem zmienić rozkaz na inny (lub rejestr) i porównać z poprzednim wynikowy plik exe. Zobaczysz, że zmieniają się pewne bajty, a te zmiany to właśnie oznaczenia rozkazów i rejestrów. Assembler robi coś takiego (upraszczam, to nie...
Błąd powstaje gdy iloraz przekroczy dopuszczalną ilość bitów. W dzieleniu N-bitowym, iloraz musi się zmieścić w N-bitach (pamiętając, że dzielimy liczbę 2N-bitową przez N-bitową). Przykładowo dzielenie 16-bitowe (dx:ax) [syntax=asm]mov dx,0xFFFF ; dzielimy 0xFFFFFFFF mov ax,dx mov cx,1 ; przez 1 div cx;First chance exception: Address 0x0040190C Integer...
At90S2313 to procesor 8-bitowy wiec wszystkie rejestry (oprócz licznika rozkazów i jeszcze jakiegos ktorego niepamietam) są 8 bitowe, równiez organizacja pamieci danych jest 8-bitowa więc jesli chcesz posługiwac się słowem 16-bitowym to musisz go sobie podzielić na dwie częsci i przechowywać w oddzielnych rejestrach ( lub komorkach pamięci Sram) .
Witam. Czy istnieje jakas osoba która potrafi dość jasno wyjaśnić takie zagadnienie: Jest liczba zapisana w pamięci do której adres jest w rejestrze np R3. Jak najlepiej wyciągnąć wartość tej liczby i jeśli jest ona równa y to do adresu 5 przypisujemy 1 a jeśli nie, to do rejestru R4 przypisujemy 0
dziel FFFFFFFFFFFFF000 przez 00000AAAAAAAAAA - ucierpi nieco dokładność, ale jest to do wykonania na 64 bitach ALU. Wynik przesuń o 6 w prawo (otrzymasz 6 miejsc binarnych po przecinku, oczywiście przesunięcia dokonujesz modyfikując cechę wyniku). Generalnie dzielenie np liczb 32 bitowych na FPU odbywa się w rzeczywistości z wykorzystaniem 96 bitów,...
Nie wiem jak działa to w Bascomie. Tak działają rejestry w assemblerze. Staram się nie mieszać, ale wydaje mi się że jak zrozumiesz dokładnie do czego jest który rejestr to łatwiej Ci będzie to rozgryźć. Lepiej wiedzieć co do czego i po co.
Witam Czy pomoże mi ktoś rozwiązać to zadanie. A jeszcze bardziej zależy mi aby mi krok po kroku spróbował opisać co się z czym je:) 1. Jaka będzie zawartość rejestru R0 po wykonaniu programu ( odpowiedź w postali hex) .equ 1234h ld r0, #55555h rol r0 and r0, #maca 2.Jaka będzie zawartość rejestru R3 po wykonaniu programu ( odpowiedź w hex): ld r0,...
Odwołam się tu do Atmelowskiej instrukcji jak z Attiny12 przejść na Attiny13 ( ostatni post na stronie http://www.elektroda.pl/rtvforum/topic10... ) - i tam doczytałem się ze zmiana nazw rejestrów wystarczy ...
Witam, jak w temacie, potrzebuje w assemblerze(8086) wyświetlić zawartość rejestru w heksie na ekran, ale nie mam pojęcia jak to zrobić. Szukałem już w Internecie ale nie znalazłem nic na ten temat, więc się w ogóle zastanawiam czy jest tak możliwość. bardzo proszę o pomoc.
Użyj tego: BFI Rd, Rn, #<lsb>, #<width> , robi coś takiego Rd , ale adnotacja mówi że wspierany jest od ARMv6 wzwyż.
a) OK -> SFR dokładniej pod adresem E0H (ACC dla 8051) b) NIE -> stała liczba dziesiętna 121 pod adres 00h (czyli do rejestru R0) c) rozumiem, że są tu dwie instrukcje? Pierwsza ładuje liczbę do rejestru a druga zapisuje pod adres wskazywany przez R0 stałą 121. Czyli 121 zapisane pod adresem RAM 0AH (czyli 10 w systemie dziesiętnym) d) to samo co w...
...Mam pytanie jak przeniesc komende lookup (z bascoma) na assembler? To zależy z ilu elementów maksymalnie może składać się tablica i jaki jest rozmiar jednego elementu. Np. dla tablicy o wielkości max 256 elementów umieszczonej w pamięci programu i rozmiar elementu to 1 bajt: mov a,numer_elementu mov dptr,adres_pierwszego_elementu ; (początek...
Tak się składa, że wiem, że R0 jest wolny a każdy inny zajęty. Dziś jest wolny, jutro jest zajęty - obyś się nie przejechał. No i coś takiego nie działa, bo zmienna StackPointer Działa - potem R4 będzie przepisane do R0 żeby prawidłowo zwrócić wynik. jest ładowana do R4, który to ma być zrzucony instrukcją STMDB Wstawki assemblerowe są dużo bardziej...
Jesli rozumiem chodzi o przerwanie INT aktywowane oadajacym zboczem a nie poziomem. W INT0 ustawiasz bit IT0 w rejestrze TCON na 1 jesli ma byc od zbocza a 0 jesli od niskiego poziomu. w INT1 bit IT1
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...
Wystarczy naciskać F8 idąc po swoim kodzie w głównym oknie i patrzeć na wartości rejestrów procesora po prawej. Pokaż co masz bezpośrednio po funkcji 7 przerwania 21h bo to coś dziwnego aż, że wszystkie rejestry są ciągle zerowe.
A powiesz mi coś o przerwaniach? Np czy mogę użyć przerwanie aby zwiększyć rejestr o 1? Jak to zrobić
No tak, ale chyba ten timer0 tego trybu nie posiada... Do czego służy rejestr TCNT0??
jeśli wykryjesz, że naciśnięto przycisk (rozumię, że tyle zrobiłeś) to wstaw (najprościej): LCALL WAIT_KLAW a gdzieś poza programem dodaj procedurkę: WAIT_KLAW: DJNZ r7,$ DJNZ r6,WAIT_KLAW RET powinno działać ;-) jeśli gdzieś indziej używasz rejestrów r6/r7 to możesz oczywiście użyć innych rejestrów lub dowolną komurkę pamięci ram (zamiast r7/r6 może...
Jest jeszcze problem jakich rejestrów używać w funkcji tak, zeby nie nadpisać danych.
Co do wypisywania tekstu bez przerwania DOS-owego to myślę, że może trzeba uruchomić jakoś kartę graficzną, może przez jakiś tryb vga, ale nie mam pojęcia co dalej. Wszystko zależy od tego, jaką masz kartę graficzną, dla starych, monochromatycznych Hercules-ów pamięć zaczynała się gdzie indziej niż dla VGA - jak rozumiem mówimy o trybie tekstowym?...
Od kiedy AVR ma rejestry ACC IE PSW itd ??
zle rozumiesz, bo nie wiedziec czemu czyszcisz PORTB zamiast go ustawic. pomijajac juz fakt, ze nie ma rejestru, ktory zwalby sie PORTB1. 4\/3!!
Pewnie. Prosto z datasheetu: http://obrazki.elektroda.net/16_12377537... Trzeba ustawić rejestry jak w tabelce.
Jeżeli dalej potrzebujesz pomocy mogę poratować cię kalkulatorem napisanym w języku Assembler, działający na rejestrach mikroprocesora MSP430. Mam tez gdzieś do niego dokumentacje nawet z wyrysowanymi algorytmami :)
Napisz dokładnie jak to ma wyglądać i czy to ma być w trybie tekstowym czy graficznym. Ja osobiście polecam pisanie programów asemblera w notatniku, bo korzystanie z tego co wygeneruje kompilator C mija się z celem. Bo jak już wybieramy asemblera to chcemy napisać program jaknajbardziej optymalny. Najprostszy program w asemblerze typu "Hello World"...
Kilka błędów: - nie możesz zakładać, że zmienne znajdują się pod stałymi adresami w pamięci, to się będzie zmieniać pomiędzy kompilacjami, w związku z tym istnieje konieczność użycia symboli - register to tylko sugestia dla kompilatora i tych rejestrów wcale nie musi rezerwować. Ale jest też poważniejszy błąd - rejestry te są wykorzystywane przez AVR-libc...
Witam Proponuje popatrzeć na [url=http://www.micromade.pl/pdfy/dsm51_... strona 50, jeśli chodzi o wskaźniki proszę sobie poczytać o rejestrze PSW. Pozdrawiam
Cześć. Mam kilka wstawek assemblerowych jak poniżej. Kod ustawia pin D6 w stan niski i wysoki po upływie kilku taktów zegarowych. Służy to do uzyskania bardzo krótkich szpilek stanu wysokiego na pinie scalaka. Chciałbym jakoś móc je sparametryzować i wykorzystywać do sterowania innymi pinami. Czy da się jakoś sprytnie to zmodyfikować, by zamiast 0x0D...
Po ustawieniu portu w rejestrze PORTx musisz odczekać przynajmniej jeden takt zegara przed sprawdzaniem rejestru PINx. Możesz dodać intrukcję assemblera NOP.
Witam , Jak odczytać znak z klawiatury pod pic'iem ?? może ma ktoś gotową procedurkę zwracającą ASCII w rejestrze "W", w grę wchodzi tylko i wyłącznie ASSEMBLER Pozdrawiam ..
dodawanie do ZH:ZL można zrobić w dość prosty sposób: add ZL, r16 adc ZH, jakis_rejestr_o_wartosci_0 Jeśli tablica "cyfry" jest "Dim Cyfry(4) as Byte", to bardziej prawdopodobne jest, że znajduje się w pamięci RAM a nie programu, stąd szacunkowo kod powinien wyglądać jakoś tak (jakoś, ponieważ nie znam bascoma): $asm ' laduje do pary rejestrów Z adres...
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ć,...
nie sadze aby udalo ci sie znalezc ksiazke o MSP430. ten uklad jest malo popularny, trudno dostepny i ogolnie malo praktyczny [; zacznij sobie od tych AVRow, a jesli wolisz prostszy assembler, to w PICach jest on wielokrotnie latwiejszy - jest tam 35 instrukcji. problem jest tego rodzaju, ze PICe ogolnie sa mocno rozne od typowych prockow dzisiejszych:...
Jak dla mnie wystarczyłby na start graficzny assembler, gdzie wszystkie operacje np. na rejestrach byłyby w formie tablic logiczno-matematycznych na podstawie których mógłbym w profesjonalny oraz oszczędny sposób rozszerzać swoja bibliotekę graficzną... Co kto lubi... Dla mnie malowanie tych kresek byłoby mega niewygodne w kleceniu tych moich popierdułek.
W jakim kodzie są dodawane liczby - bin czy BCD? I w jakim kodzie ma być wynik bo jeśli w bin to dodając do siebie dwie 11-bitowe liczby potrzebujesz tylko dwóch rejestrów 8 bitowych na reprezentacje wyniku.
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...
OK, dzięki wszystkim, już doczytałem w dokumentacji sposób adresowania za pomocą rejestru Z ;) Temat zamykam. Pzdr.
SPLa przestał żyć. Nie przesadzaj - przecież ten cały STM32 Cube i będący jego częścią "HAL" (równie adekwatna nazwa jak "SPL"...) to SPL z minimalnie pozmienianym API. Dalej jest tak samo badziewny i napisany przez kogoś kto "nie ogarnia" programowania (wciąż brak jakiegokolwiek "const" przy wskaźnikach - na to chyba nigdy nikt tam nie wpadnie). Często...
mov ah,2 mov dl,30h int 21h wyświetla znak '0' (taki jest kod w rejestrze DL). Jaki kod Ci nie wyświetla?
Witam, Pierwszy błąd, który wychwyciłem to brak zachowania i odtworzenia rejestru stanu procesora SREG we wszystkich obsługach przerwań. Należy również zadbać o zachowanie używanych rejestrów (R0-R31). Zobacz ci się stanie np. w takim przypadku: CPI R16,10 ; tutaj przychodi przerwanie które zmienia stan SREG (znaczniki Z,C ...) BRNE xxx LDI...
Dzisiaj jedyne sensowne zastosowanie assemblera to małe wstawki do programów w innych językach. Może to dotyczyć jakiś specyficznych rozkazów dotyczących sprzętu (przełączanie trybów CPU, dostęp do jakiś specjalizowanych rejestrów itp) bądź pewne obliczenia łatwiejsze w assemblerze (np. bardzo duże liczby - w assemblerze jest dostęp do przepełnienia,...
Witam serdecznie. Wie ktoś może w jaki sposób odczytuje się dane z tablicy w assemblerze? Oto fragment kodu: Atmega8 Kompilator AVR studio 4.19 [syntax=asm]button1: ldi R20, table*1 rjmp main button2: ldi R20, table*4 rjmp main table: .db 0, 26 .db 51, 77 .db 102, 128 .db 154, 179 .db 205, 230 .db 255[/syntax] W podanym fragmencie kodu button1 odczytuje...
czy wie ktoś może jak w c++ albo w asmie sczytać adres rejestru EIP ?? Może jest jakaś funkcja która do tego służy ?? Z góry dzięki Zamykam. - arnoldziq
W dokumentacji jest lista rozkazów i rejestrów z której można korzystać. Ten dokument raczej cały czas ci będzie potrzebny.
zdrowie dotyczące Picoblaze. Myślę, że wina leży w tym, że dajesz instrukcje za pomocą LOAD zamiast rejesteru port. Należy zdefiniować "Przycisk" jako constant lub używać rejestru (s1, s2, itd.). Przycisk EQU "wartość" Port wejścia: LOAD s0, przyciski OUT s0, leds czytaj portu: IN s0, leds W Twoim miejscu, nie będę używać pblaz ide. To jest przestarzałe...
Adresy masz takie jakie portów - patrz mapa pamięci mikrokontrolera. Za porty odpowiadają wartości w rejestrach. Zatrzask tak średnio "rozszerza" I/O; w typowym zastosowaniu z '51 służy głównie podłączeniu zewn. pamięci adresowanej 16bit gdzie część adresów jest mieszana z 8 bitowymi danymi. Ogółem jeśli chodzi o LED to starałbym się zrobić to w formie...
Witam, jestem w trakcie pisania aplikacji na mikrokontroler Motoroli M68HC08. Potrzebuję przechowywać aktualizowane co jakiś czas dane w 3 zewnętrznych rejestrach przesuwnych. Motka ma tylko jeden port równoległy. Chcę połączyć rejestry szeregowo, z jednej linii portu wyprowadzić zegar, z drugiej dane. Nie mam pojęcia jak to zaimplementować w assemblerze...Dane...
Po pierwsze A jest rejestrem procesora o rozmiarze 8 bit. Błędnie interpretujesz zapis #high(xx) i #low(xx). to wyznacza wyłacznie starszy bajt i młodszy bajt STAŁEJ okreslonej w programie. dlatego gdy uzywasz "A" to masz błąd, bo nie jest to stała a identyfikator akumulatora, natomiast jezeli uzywasz napisu "B" to jest on (w wielu kompilatorach domyślnie)...
...umie ktos to zrobic ? bede wdzieczny za pomoc ... Ta może bez zbędnych ceregieli "podam na tacy" gotowca , a Ty spróbuj zrozumieć jak toto działa :D .include "8515def.inc" .def zero = r0 .def bcd = r16 .org 0x0000 rjmp start .org INT_VECTORS_SIZE start: ldi bcd,low(RAMEND) ldi r17,high(RAMEND) out SPL,bcd out SPH,r17...
Muszę uruchomić dodatkowy UART na tym procesorze kwarc to 18,432M potrzebuje informacji i programów w asemblerze. Jeszcze jedno jaką wartość wpisać do licznika jeżeli nie ko RZ ystam z wewnętrznych generatorów prędkości dla UARTA podstawowego. Wszystkie niezbędne informacje są w pdfach do tego procesora. Zajrzałeś tam ? Znajdziesz tam też wzory na...
.include "8515def.inc" .deftmp = r16 .defPWMValue = r18 .defKeyStatus = r19 .equMaxPWM = 19 .include "8515def.inc" start: lditmp, 0x5c outTCNT1L, tmp ldiKeyStatus, 0x3 rcallInitPWM InitPWM: ; tu jest błąd, bo w rejestrze TCCR1A bit 2 nie jest zdefiniowany i nie ; należy go ustawiać: powinno być 0x63 ; 0x63 oznacza ;...
Do deklaracji robisz kod danych: .dseg .org 0x60 Kolejna linijka to przejście do początku SRAM. Następnie definiujesz zmienną bajtową: Nazwa: .byte 1 No i masz deklarację. Do poszczególne bity musisz wyłuskiwać komendą iloczynu bitowego z liczbą stałą np. dla pierwszego bitu będzie: lds r16, Nazwa andi r16, 0b00000001 I w r16 masz tylko wartość...
Prawdopodobnie chodzi o coś takiego ;) plik :glowny.c #include<def.h> main() { while(1==1) { pp(246,28,0x00); //wywołanie funkcji z parametrami (parametry przekazywane są do assemblera } } //**************************************... plik def.h extern void pp(unsigned char poz_x ,unsigned char poz_y ,unsigned char dana7); //**************************************...
... chciałabym jedynie uzyskać odpowiedz na pytanie, czy bezpośrednie czytanie i zapis do i rejestrów XMegi może ją uszkodzić. Czy C, czy Assembler, czy BASCOM wszystkie operują na rejestrach. Jak więc miałyby uszkodzić mikrokontroler? ... C mnie już nie interesuje. Przesiadka z BASCOM na Assembler jest krokiem odważnym i chwalebnym. Jednakże uparte...
Nigdzie nie ustawiasz portu jako wyjścia. W funkcji opóźnienie zmieniasz rejestry R16-R18 po czym jak wyjdziesz z funkcji wystawiasz wartości te na porty.
żeby była jasność bo może nie sprecyzowałem: nie szukam wynalazków typu visual studio... itp... bo to wszystko sprowadza się generalnie do straty czasu podczas konfiguracji oraz późniejszej pracy ... (chociaż coś czuje że bez tego sie chyba nie obejdzie) Dziwie sie w ogóle - że cały ten dramat pod postacią "mozliwości" instalacji OPENOCD, C/C++ SDK...
witam szanownych forumowiczów. Ze względów, że większość wyjść mikrokontrolera atmega 8535 mam już zajęte, a musze jeszcze podłączyć LCD oczywiście w trybie 4 bitowym, mam problem jak wysyłać dane do LCD w przypadku gdy 3 piny będą na porcie A a jeden na porcie B. Czy można tak zakombinować żeby nie odnosić się do każdego pinu oddzielnie tylko wklepać...
operacja DIV dzieli liczbę bez znaku znajdujące się w AX (wersja 8-bitowa), DX:AX(wersja 16-bitowa) EDX:EAX (wersja 32-bitowa) przez operand. IDIV dzieli liczbę ze znakiem znajdującą się w AX, DX:AX, EDX:EAX przez operand i umieszcza wynik dzielenia w AL/AX/EAX a resztę w AH/DX/EDX Odpowiadając wprost na pytanie - dzielenie przez 32-bitowy operand dzieli...
Witam Mam takie pytanko:do pisania programow pod assembler jaka lepiej rodzine prockow wybrac: '51 czy AVR.Chodzi np o to ze AVR nie maja 16-bitowego rejestru DPTR i duzo rzeczy trzeba tam robic na piechote. Przy okazji prosze o podanie mi odpowiedniego oprogramowania. pozdrawiam
Niestety: If R6.4 = 0 Then nop End If ani nawet: If R6 = 0 Then nop End If się nie skompiluje. Pozostaje odczyt rejestru do zmiennej i testowanie zmiennej (O zgrozo - odczyt rejestru do zmiennej :D. Żeby potem i tak zmienna była odczytywana do rejestru i tam sprawdzana.), albo assembler: sbrc R6, 4 jmp Zrob_to nop nop nop nop jmp Zrob_tamto !Zrob_to:...
Tak sie sklada, ze mam ksiazke przed soba o tym urzadzonku. Znalazlem tam dwa polecenia SBIC i SBIS. Realizuja one pominiecie nastepnego polecenia jesli bit w rejestrze we/wy jest wyzerowany/ustawiony. Osobiscie nie wiem w czym jest problem ale moznaby to zrobic tak: np. SBIC PORTB,0 RJMP podprogram1 SBIS PORTB,0 RJMP podprogram2 podprogram1 - jesli...
Czasami rozkazy LPM,SPM dzialają z rejestrami ZL,ZH (R30,R31) ld r30,.... ld r31.......... LPM lub LPM r16,Z No właśnie u mnie "ZL" i "ZH" nie działają. Sam zauważyłem przeglądając inne strony ,że często zamiast nazwami rejestrów ludzie posługują się czymś takim. U mnie gdy próbuje czegoś takiego użyć zamiast nazw rejestrów kompilator wyrzuca błędy.
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...
odpowiednio dla pierwszej (inicjalizacja łacza) a AH -> 01100000 (rejestr przesuwny nadajnika jest pusty i rejestr buforowy nadajnika jest pusty) wysyłanie znaku AH -> 10100000 (przekroczenie czasu i rejestr buforowy nadajnika jest pusty) odbiór znaku AH -> 11100000
1. GNU ARM to najzwyklejsza paczka taka jak CodeSourcery, WinARM czy Yagarto, więc po co tego używać i po co to w ogóle roztrząsać? 2. CodeSourcery Lite jest darmowe. Jeśli nie jest wystarczająco darmowe, to wystarczy ściągnąć sobie źródła GCC i skompilować samemu [; Jest to możliwe, skrypty z Codesourcery to znacząco ułatwiają. 3. Niczym 4. Bo kompilujesz...
Nie bój sie assemblera. Procesory RISC maja niewiele prostych rozkazów. Platformy Kolega pomylił. W przypadku ARMa ani "niewiele" ani "prostych"; samo określenie ARM mianem RISC też dość dyskusyjne. Asembler ARM początkującego może jedynie wystraszyć. Z tą liczbą rozkazów, to temat faktycznie dyskusyjny. Z80 700 rozkazów i 6502 z 15 wypada gorzej....
Assembler wydaje mi sie prosty,operowanie odpowiednimi rejestrami na mojej atmedze 32 nie sprawiło mi do tej pory sporych trudności udało mi się przejść kurs assemblera na forbocie. Do tej pory nie napisałem żadnego poważnego projektu. Chcę się nauczyć obsługi wyświetlacza w assemblerze,skoru już go ruszyłem, jeżeli nie będzie mi odpowiadać,przesiądę...
To wszystko prawda, aczkolwiek wydaje mi się, że różnie to widzą różne kompilatory. Ofszem Acc jest nazwą rejestru SFR i można ją używać jak każdej innej zmiennej czyli w rozkazach z adresowaniem bezpośrednim (direct). Oczywiście jeśli to możliwe to lepiej jest korzystać z rozkazów wykonywanych na akumulatorze. Ale czy każdy kompilator zrozumie inc...
pomoc kompilatorowi w przkazaniu i wlasciwym poslugiwaniu sie rejestrami To jest chore. Wolę pisać w assemblerze od a do z. W avr studio przynajmniej jest normalny assembler. Ten wie jak pisze "out cośtam,cośtam" o co mi chodzi. Próbowałem naprawde zaprzyjaźnić sie z AVR-GCC. NIe chce widzieć tego badziewia na oczy. To jest shit wśród kompilatorów.
[syntax=asm]00E51353 sub esp,0F0h [/syntax] Tutaj masz ustawiany rozmiar stosu na zmienne lokalne, dzieje się tak w każdej funkcji. Jest także ustawiana ramka stosu. Odnoszenie się do zmiennych odbywa się poprzez obliczanie ich pozycji względem wartości rejestru ebp. W linii (z włączonym "Show symbol names"): [syntax=asm]00E5136E mov dword ptr [i],2...
Zacznijmy od tego, że analizowanie tego typu przypadku jest nieco bezprzedmiotowe - jest tam dużo rzeczy zbędnych, wiele architektu nie pozwala na użycie rejestru stosu bezpośrednio - stąd add r7, sp, #0 Przeanalizujmy kod: [syntax=c]void foo(int32_t); void bar(int32_t*); int32_t __attribute__((noinline)) DSP_2(int32_t NewSample, int32_t *XCoef, int32_t...
Niestety wymaga mimo wszystko troche więcej czasu od programisty, oraz znajomość wnętrza procesora (praktycznie nonstop pracujesz z datasheetem) chyba że masz dobrą pamięć i kojarzysz co w jakim rejestrze. I właśnie dlatego warto znać assembler, ale programować w C. Po co męczyć się, skoro można napisać ładnie i szybko, a kompilator przełoży to na...
Witam. Różnica symetryczna (XOR) dwóch bitów rejestrów - jak wykonać w assemblerze ?
(at)A.T. To jak przekazuje sę argumenty znajdziesz w opisie ABI kompilatora. Ma to znaczenie tylko jeśli całą funkcję C napiszesz w asemblerze - to znaczy umieścisz ją w odpowiednim pliku .S i wyeksportujesz za pomocą .global. Natomiast jeśli definiujesz funkcję w C i w jej ciele umieścisz wstawkę to odwołujesz się nie poprzez rejestry lecz nazwy zmiennych/argumentów....
Do wprowadzenia wartości 16-bitowej do rejestru 16-bitowego (jakim jest OCR1A) musisz użyć analogicznej techniki, jak przy ustawianiu wskaźnika stosu (SP). Dokładniej mówiąc, rejestr TEMP (r17) jest ośmiobitowy. Liczba 34285 wykracza poza zakres liczby 8-bitowej, więc się w nim nie zmieści. Należy ją rozdzielić na dwa bajty za pomocą funkcji low(34285)...
Prosze o kawałek kodu z dodawaniem dwóch 8 bitowych z wynikiem 16 bitowym. Przykładowy kod: in r17,ADCH clr r16 PETLA_PRZESUN_LEWO: lsl r17 inc r16 cpi r16,8 brne PETLA_PRZESUN_LEWO in r16,ADCL movw XH:XL,r17:r16 Po tej operacji poprawny wynik jest w rejestrach XL i XH. Temperatura nie przekroczy 255 stopni wiec teoretycznie (w/g mnie)...
Do R3 wpisujesz #32, a porównanie A z #3 daje ci dobrą wartość. To może do R3 wpisz #3 i zostaw cjne A,03h,CORRECT. Nie ma przerwania od przepełnienia rejestru. To w przerwaniu możesz sprawdzać R1 i w jeśli jest różne do 100 nie robisz a jak równe 100 to zerujesz R1 i zwiększasz R2. Jak w poniższym kodzie. [syntax=asm] ORG 0BH MOV TH0,#TH0_START MOV...
Port szeregowy działa na całkiem innej zasadzie. Podaje się mu liczbe iluś-bitową (to można skonfigurować) a on przekształci ją w ciąg binarny rozpoczynający się bitem startu a zakończony bitem stopu. Układ sterownika zbudowany jest z rejestru przesuwnego do którego wpisuje się wartość do wysłania a w czasie wysyłania kolejne bity są przesuwane tak...
Ale 01h przerwania 21h czyta znak, a nie liczbę. Co więcej, DIV chyba nie działa na 8-bitowych rejestrach, więc bierze AX przez BL. Stąd AX = 0134h = 308, a to jest podzielne przez 7.
Skorzystaj z adresowania względnego, ustaw któryś z rejestrów wskazujących na adres swojego rejestru, a operuj na rejestrze INDFx
assembler darmowy assembler assembler tablicy assembler przerwania
schemat pilota centralnego zamka thalia drzwi odwrócić sygnał napiąć
kocioł kondensacyjny kocioł kondensacyjny
Odbijanie białych świateł w telewizorze - jak zminimalizować refleksy? Zamiana lampy ksenonowej na halogenową: instrukcja