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.
Może chodzi to różne tryby pracy procesora jak tryb uprzywilejowany oraz tryb użytkownika. Gdzie zmienia się zestaw rejestrów przy zmianie trybów dzięki czemu aplikacja nie ma dostępu do rejestrów których używa system.
Poczytaj, przyda Ci się: http://pl.wikipedia.org/wiki/Tryb_rzeczy...
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,...
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...
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,...
IloscRamu dd 0 . . . mov IloscRamu, eax Tak zapiszesz do zmiennej. Co do pytania o sprawdzenie ilości ramu chyba był specjalny rozkaz do odczytywania konfiguracji sprzętowej. ALe głowy nie dam. Chyba, żeby się dało jakoś odwołać do biosu. [EDIT] http://www.osdev.org/osfaq2/index.php/Ho... Tutaj jest cały...
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.
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...
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.
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.
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).
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ść...
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]
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...
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...
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.
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...
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) .
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 ?
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 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
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...
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...
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 ...
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.
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.
witam, musze zrobic dzielenie 2 doubli, czyli musze podzielic dwie mantysy 52bitowe. Nie moge uzyc koprocesora, wiec pozostaja rejestry 32bitowe. Probowalem trzymac jedna mantyse w 2 rejesrach (eax, ebx) w jednej byly by 32 bity w drugiej 20. Z druga tak samo. Uzylem algorytmu dzielenia przez odejmowanie, pomijajac fakt, ze jeszcze nie dziala tak jak...
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...
Od kiedy AVR ma rejestry ACC IE PSW itd ??
No tak, ale chyba ten timer0 tego trybu nie posiada... Do czego służy rejestr TCNT0??
Pewnie. Prosto z datasheetu: http://obrazki.elektroda.net/16_12377537... Trzeba ustawić rejestry jak w tabelce.
A powiesz mi coś o przerwaniach? Np czy mogę użyć przerwanie aby zwiększyć rejestr o 1? Jak to zrobić
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
Użyj tego: BFI Rd, Rn, #<lsb>, #<width> , robi coś takiego Rd , ale adnotacja mówi że wspierany jest od ARMv6 wzwyż.
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 :)
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?...
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...
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...
Jest jeszcze problem jakich rejestrów używać w funkcji tak, zeby nie nadpisać danych.
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...
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
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...
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ć,...
Po ustawieniu portu w rejestrze PORTx musisz odczekać przynajmniej jeden takt zegara przed sprawdzaniem rejestru PINx. Możesz dodać intrukcję assemblera NOP.
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...
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.
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 ..
OK, dzięki wszystkim, już doczytałem w dokumentacji sposób adresowania za pomocą rejestru Z ;) Temat zamykam. Pzdr.
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, 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...
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...
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); //**************************************...
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.
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,...
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...
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ć...
No i o to mi chodziło dexter... Pisząc Ram nie miałem na myśli tylko SRAM'u powyżej 60H ale ogólnie równiż rejestry. Chyba nawet lepiej definiować numery bitów jako 1,2,4,8,16,32,64,128 i wtedy nie trzeba przesuwać tylko napisać np. sbr bity,bit3 lub kilku cbr bity,b2|b4. I mała poprawka - w rejestrze jest 8 bitów a nie 5 ;-) dzięki. pozdrawiam.
...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 ;...
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)...
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:...
...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...
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...
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...
(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....
Witam! Przygode z assemblerem radze zacząć od porządnego zrozumienia jak działa wasz sprzęt, jak jest zorganizowana pamięć, co to są rejestry, przerwania itp. Tutaj macie dwa kursy z ktorych sam korzystalem: http://skowi_magik.republika.pl/ http://rudy.mif.pg.gda.pl/~bogdro/dos/in... Pozdrawiam!
W obecnych czasach nauka asemblera jest marnowaniem czasu Nieprawda. Assembler potrafi zrobić rzeczy, których C/C++ zwyczajnie nie obsługuje, jak np. zmiana kontekstu. Polega to na tymczasowym zatrzymywaniu działania programu, całość rejestrów procesora jest kopiowana do RAM, a zaraz po tym z innego miejsca w RAM kopiowane są rejestry zapisane wcześniej....
... 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...
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
przemo_wielki, dzieki bardzo za ten kod, teraz juz rozumiem gdzie robilem źle, musze jeszcze teraz przerobic ten program (a wlasciwie jako drugi program na zaliczenie) abym mogl wprowadzac liczby wielocyfrowe (powiedzmy tylko dwu lub trzy) i program rowniez ma je sumowac i wyswietlac sume koncepcje mam taka, ze liczby te (a wlasciwie zmienne) musze...
Nie bardzo kumam o co biega. Jesli odpalasz program napisany w asemblerze z poziomu systemu operacyjnego to juz jestes w trybie chronionym i nie ma potrzeby sie na nic przelaczac. A jesli chcesz napisac program w asemblerze ktorego kod laduje sie zaraz po starcie (czyli bez systemu operacyjnego) to moze ci chodzic o tryb rzeczywisty procesora (wszystkie...
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.
Witajcie. Mam wielki problem z napisaniem programu dla µC który komunikuje się z magistralą CAN za pośrednictwem kontrolera SJA1000. Czy ktoś zna ten układ i wie jak mu rejestry konfigurować, aby "gadał" ? Niby nie ma ich wiele (32 rejestry 8bitowe) ale z angielskich pdf'ów ciężko mi się dokładnie wyczytać... A może ktoś jest w posiadaniu wsadu...
Mam mały problem i dużą nadzieję na uzyskanie pomocy :) Mianowicie, ciałbym napisać funkcję w assemblerze, umieścić ją w jakim pliku assemblerowym (*.S), następnie napisać prototyp tej funkcji w pliku nagłówkowym C (*.h), po czym wykorzystać tą funkcję assemblerową w kodzie C. Troszke zakręciłem, więc może jakiś przykład obrazujący moje zamiary: Plik...
Jakimi wnioskami? Poczytaj notę procesora AVR to się dowiesz do czego służą rejestry R0-R31. Jak pisałem w C nie masz zasadniczo wpływu jak kompilator rozmieści zmienne i jak te rejestry wykorzystuje. Najogólniej zmienne są raczej przechowywane w pamięci, z wyjątkiem jakiś krókożyjących zmiennych lokalnych, które mogą być w rejestrach. Pamięć SRAM i...
Po pierwsze to zależy na jakim procku to masz napisać, komendy trzeba sobie przejrzeć jakie są dostępne i na tej podstawie coś próbować zrobić. Nie wiadomo, jakie instrukcje są wykonywane więc ciężko ułożyć jakiś scenariusz. Wywołanie podprogramu zapisuje się na stosie, a to ile dokładnie zajmuje ten narzut (przynajmniej adres powrotu z podporgramu...
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...
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ę...
Ja większość kodu sterującego urządzeniem do kreślenia charakterystyk elementów półprzewodnikowych napisałem bez nadmiernego zastanawiania się nad logiką, musiałem jedynie spędzić trochę czasu na poczytaniu dokumentacji bibliotek oraz rejestrów urządzeń i2c. Schemat blokowy programu zrobiłem już po fakcie, dokumentując całość w pracy inżynierskiej....
Owszem, jeżeli jest to konieczne (brak wolnych\nie wykorzystanych rejestrów) O wiele lepszym rozwiązaniem jest skopiowanie do wolnych rejestrów. Dla kompilatora C pojęcie "wolne rejestry" nie istnieje. Wolne one są tylko wtedy gdy ich zawartość zostanie odłożona na stos. Autor wątku nie posługuje się assemblerem więc po co mieszasz? Ja nie znając bascoma...
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)...
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...
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.
0xGH już wogóle wygląda...innowacyjnie :P Te dwa rejestry co wymieniłeś to nie są komórki pamięci. Rejestry które deklarujesz w plikach nagłówkowych to są już *(adresy w pamięci) , dlatego jest mozliwość postawić tam wskaźnik. A da się postawić wskaznik na np. R2? Spróbuj...;] Procesor ma rejestry robocze , nie wmapowane w pamięć, na których wykonuje...
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...
W jaki sposób mogę w DSM-51 zrobić taką rzecz, aby zmierzyć czas między pierwszym naciśnięciem przycisku i drugim naciśnięciem przycisku? A następnie zapisać ten czas w taki sposób aby dioda wyłączała się i włączała w jego okresie. Pomógłby ktoś? Ja bym to robił tak, że czekał bym na klawisz - następnie po jego naciśnięciu włączał timer i po ponownym...
ale większość ludzi jest w stanie skumać, że nawet super optymalny program w asm na '51 nie będzie szybszy niż normalnie napisany program w C/C++ na Cortexa. Po prostu nie ma takiej możliwości fizycznie I tutaj nie masz racji...bo '51 to nie tylko AT89C51 i tego typu pochodne. Analog produkuje 12MIPS'owe '51 a ciekawe jest to że nie jest to mikrokontroler...
Twoja prośba jest trochę zbyt lakoniczna. Potrzeba trochę więcej informacji np. -czy korzystasz z Atmel AVR Assebler2 czy gcc-assembler - jak mają być przekazywane parametry do funkcji czy będziesz np podawał adres zmiennych zawierających czas, czy raczej parametry będą w rejestrach - czy masz już gotową obsługę I2C - ... I przy okazji może byś wyjaśnił...
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
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:...
Czyli wystarczyłoby zapamiętane zawartości rejestru status oraz W? Jednak w tym przypadku tego nie widzę. A co ze stosem i używanymi rejestrami? Domyślnie (tak jak pisałem) kompilator C dba o zachowanie rejestrów wykorzystywanych przez niego samego. Jest to nieoptymalne, ale uniwersalne. Gdy (przykładowo) kod przerwania ma zmienić 1 bit zapamiętywanie...
no coś mi nie idzie. :)) zacząłem troszkę sam. Zainicjowałem ADC, przerwania. Sam program nie stanowi dla mnie większego problemu, bo nie mam problemów z programowaniem . Nie potrafię jednak tego połączyć z LCD. Nie znam tych wszystkich protów i rejestrów odpowiedzialnych za przetworniki, timery itd. C/C++ było fajniejsze :D
Poczytaj tutaj: http://www.ibiblio.org/gferg/ldp/GCC-Inl... Do zmiennej odwołujesz się jako %0, %1 itp: const int c = 55; __asm__("movl %0, %%eax;\n\t" : /* bez operandów wyjściowych */ : "r"(c) /* c jest załadowane do dowolnego rejestru przed asm */ : "%eax" /* wartość EAX jest...
Jak program ma prawie nic nie robić, to nawet ATTiny11 albo ATTiny12. ATTiny11 nie ma pamięci RAM, więc albo assembler (przy tak prostym programie nawet nie zauważysz braku pamięci, bo wszystko w assemblerze i tak robi się na rejestrach),a jak w BASCOMie, to zabawa bez użycia zmiennych. Ja bym dał ATTiny11, bo assembler dobrze znam. Nie wszystkie ATTiny11...
Od bajtu CB zaczynają się wszystkie rozkazy Z-80 dotyczące operacji na bitach: ustawianie (SET), zerowanie (RES), testowanie (BIT) oraz przesywanie bitów (RR,RL,SR,SL i pochodne). Bajt DD dotyczy operacji na rejestrach IX, a FD na rejestrach IY. Stąd operacje na bitach rejestrów IX rozpoczynają się od DD CB, a na bitach rejestrów IY rozpoczynają się...
rejestry atmega8 atmega128 rejestry assembler darmowy assembler
nagrać dekodera komputer akumulator izolować zalany xiaomi
philips senseo sterownik ładowarki akumulatora
Zamiennik akumulatora 40V do kosiarki Lahmann – kompatybilność Lehmann/Kanwod, regeneracja Audi Q7 4L/4M – auto blokuje i odblokowuje się po 15 km/h, zanik świateł w klapie, przełączanie na zderzak – mikrostyk, wiązka, BCM