Skocz do zawartości

Nauka programowania w ASM


JammyCrazy

Pomocna odpowiedź

Dzień Dobry,

Chciałbym nauczyć się podstaw assemblera. Mam tutaj na myśli strukturę języka (dyrektywy, sekcje programu itp.) - inaczej mówiąc, zagadnienia niezależne od architektury docelowej. Wiedzę chciałbym najbardziej wykorzystać przy pracowaniu z układami AVR i ARM. Korzystając z zasobów internetu trafiłem na wiele "tutoriali", jednak wszystkie z nich były wg mnie niedopracowane - wiele terminów było omawianych powierzchownie albo wcale, jakby autorzy z góry zakładali, że każdy te terminy zna. Tak więc, jeśli ktoś może zasugerować przystępną, w miarę aktualną lekturę, byłbym wdzięczny za jej link/tytuł.

Edytowano przez JammyCrazy
Link do komentarza
Share on other sites

Obawiam się, że w przypadku asemblera bardzo mało będzie "zagadnień niezależnych od architektury docelowej". Jest nawet gorzej, bo dla jednej architektury różne narzędzia mogą używać innych formatów, czy też dyrektyw.

  • Lubię! 1
Link do komentarza
Share on other sites

10 minut temu, Elvis napisał:

Obawiam się, że w przypadku asemblera bardzo mało będzie "zagadnień niezależnych od architektury docelowej".

No to rzeczywiście słabo. W takim razie zostają mi książki typowo pod AVR i ARM. 

Link do komentarza
Share on other sites

Nauka asemblera ma jedną, niewątpliwą zaletę - pozwala zrozumieć jak faktycznie działa procesor. Co najważniejsze, jeśli się to raz zrozumie, nauczenie się innej architektury będzie o wiele łatwiejsze, a wiele jest praktycznie identycznych. Moim zdaniem najlepiej wybrać jedną architekturę, jedno narzędzie (asembler) i zacząć naukę. Jak kiedyś będzie potrzebne coś innego, trzeba będzie niestety sporo się douczyć.

  • Lubię! 2
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Najgorzej jest zawsze z mapą rejestrów i instrukcji, jak masz te dwie rzeczy i programator to sobie poradzisz 😉 

W przypadku nowszych wymysłów jak ARM jeszcze podstawowe przerwania powinny być przypisane.  Spróbuj zacząć od Low-Level C na wskaźnikach, potem możesz przejść do ASM. Tak będzie dużo prościej.

To pozwoli Ci zrozumieć jak uruchomić mikrokontroler (w szczególności ARM) na niskim poziomie, reszta to obsługa rejestrów i przerwań. Potem wystarczy, że przepiszesz to samo na ASM, z tym, że C kompiluje się do ASM, więc możesz w każdej chwili podejrzeć kod (polecam wyłączyć optymalizację).

Chyba, że masz jakieś starsze MCU pod ręką, to możesz wpaść też tutaj:

Wersja w dużym uproszczeniu 😄 

  • Lubię! 1
Link do komentarza
Share on other sites

1 godzinę temu, H1M4W4R1 napisał:

Spróbuj zacząć od Low-Level C na wskaźnikach, potem możesz przejść do ASM.

Tutaj idealna książka do tego dla AVR:

https://lubimyczytac.pl/ksiazka/189148/jezyk-c-dla-mikrokontrolerow-avr-od-podstaw-do-zaawansowanych-aplikacji

Są np dyrektywy kompilatora, aby pominąć odkładanie rejestrów na stos, podczas wywoływania funkcji przerwania oraz inne tego typu szczegóły. Jak ktoś może polecić dla ARM jestem zainteresowany. 

  • Lubię! 1
Link do komentarza
Share on other sites

Moim zdaniem lepiej zabrać się za naukę asemblera dla ARM. Układy AVR są już bardzo wiekowe, poza tym 8-bitów wcale nie ułatwia życia. Natomiast ARM Cortex-M3/M4 są całkiem przyjemne i w sumie proste do nauki.

Link do komentarza
Share on other sites

12 minut temu, Elvis napisał:

Moim zdaniem lepiej zabrać się za naukę asemblera dla ARM. Układy AVR są już bardzo wiekowe, poza tym 8-bitów wcale nie ułatwia życia. Natomiast ARM Cortex-M3/M4 są całkiem przyjemne i w sumie proste do nauki.

Ja się zgadzam. @Elvismasz jakąś książkę którą polecasz? 

Link do komentarza
Share on other sites

Świetne wiadomości. C mam w małym palcu, a praca ze wskaźnikami to dla mnie żaden problem. Tylko jaką płytkę ARM wybrać... PI Pico będzie ok? Podobno ciężko się go programuje na Windowsie, a na naukę Linuxa nie mam czasu i chęci.

Link do komentarza
Share on other sites

46 minut temu, Elvis napisał:

"PM0214 Programming manual" - do pobrania ze strony ST, jakoś nie mogę wkleić linka, ale google znajdzie bez problemu

Przejrzałem i co mogę powiedzieć: dobry manual nie jest zły. Dzięki za propozycję @Elvis. Gdyby ktoś jednak miał propozycję książki też chętnie skorzystam. 

Link do komentarza
Share on other sites

12 minut temu, pmochocki napisał:

Gdyby ktoś jednak miał propozycję książki też chętnie skorzystam. 

Na Amazonie jest trochę dobrych książek o programowaniu w asemblerze, kiedyś czytałem i mogę polecić: https://www.amazon.com/Definitive-Guide-Cortex®-M3-Cortex®-M4-Processors/dp/0124080820/

Z drugiej strony właściwie wszystko jest w PM0214 i to za darmo.

 

  • Lubię! 1
  • Pomogłeś! 1
Link do komentarza
Share on other sites

15 minut temu, JammyCrazy napisał:

Tylko jaką płytkę ARM wybrać... PI Pico będzie ok?

Pico ma rdzeń Cortex-M0+, na początek radziłbym Cortex-M3 lub Cortex-M4, jest łatwiej zacząć.

  • Lubię! 1
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.