• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Czy znacie jakiś dobry kurs assembler ?

Object Storage Arubacloud
0 głosów
746 wizyt
pytanie zadane 23 listopada 2018 w Assembler przez niezalogowany
Witam, ostatnio zainteresowałem się językiem assembler i chciałbym go lepiej poznać czy znacie jakieś dobre kursy (najlepiej żeby był w postaci filmu ale nie musi)

Z góry dziękuję i pozdrawiam
komentarz 23 listopada 2018 przez Hiskiel Pasjonat (22,830 p.)
x16, x86, x64?
komentarz 23 listopada 2018 przez Eryk Andrzejewski Mędrzec (164,260 p.)

Co to jest x16? laugh Masz na myśli tryb rzeczywisty (16-bitowy) architektury x86.

No albo koledze może chodzić o architekturę ARM, MIPS, SPARC, albo jeszcze inną - też by mógł to doprecyzować.

@michasus

Z jakiego systemu operacyjnego korzystasz? Chcesz uczyć się języka asemblera na Windows, Linux? Może DOS?

Jeżeli nie chcesz się zastanawiać nad systemem (warto nauczyć się języka asemblera dla danej architektury w sposób ogólny, nie męczyć się elementami specyficznymi dla danego systemu - przynajmniej na początku nauki), to możesz rzucić okiem na te poradniki: https://www.youtube.com/watch?v=OTLyD2EEN0w&list=PL7CA8FE35B665D4DD

Autor kursu stworzył program, który umożliwi uruchomienie tego samego kodu na systemie Windows jak i Linux. Kurs ten dotyczy architektury x86.

komentarz 23 listopada 2018 przez niezalogowany

Posiadam system operacyjny Windows
Kompilator NASM (z nim akurat nie mam żadnego problemu)
Emulator QEMU (też nie mam problemu)

I architektura to raczej 16-bitowa w QEMU nazywa się to i386 nie wiem czy to ma jakieś powiązanie ale podaję na wszelki wypadek podaję. Na razie skonstruowałem prosty programik w Assembler z innego kursu ale on miał tylko 2 odcinki więc dużo się nie nauczyłem.

[BITS 16]
[ORG 0x7C00]

_start:
	jmp 0:start
start:
	mov si, napis
	call print
	jmp $
print:
	xor bx, bx
	mov ah, 0x0E
.loop:
	lodsb
	or al, al
	jz .end
	int 0x10
	jmp .loop
.end:
	ret

napis: db 'Hello World', 13, 10 ,0

times 510 - ($- $$) db 0

db 0x55
db 0xAA

To jest chyba w architekturze 16-bitowej, domyślam się po [BITS 16]

Jak mógłbyś mi jeszcze doradzić to było by mi bardzo miło laugh

komentarz 23 listopada 2018 przez Eryk Andrzejewski Mędrzec (164,260 p.)

To jest akurat kod bootsectora, czyli piszesz w języku asemblera bez żadnego systemu operacyjnego. Też tak można, fajne wyzwanie to jest. smiley

komentarz 23 listopada 2018 przez niezalogowany
O to mi właśnie chodziło. Coś takiego jak system ale to tak dla nauki. I to jest 16-bitowy kod ? Bo już nie wiem, i czy ten poradnik co mi dałeś  to też tak działa jak ten mój projekt czyli nie jest potrzebny żaden system ? Budujemy program od zera.
1
komentarz 23 listopada 2018 przez Eryk Andrzejewski Mędrzec (164,260 p.)

Nie, tamten kurs opiera się o istniejące systemy operacyjne, ale wprowadza takie dodatkowe narzędzie (asmloader), dzięki któremu możesz w łatwy sposób wywoływać funkcje z biblioteki standardowej języka C (prinf, scanf, getchar, putchar i exit, kolejności nie pamiętam). Ma to zastosowanie dydaktyczne - chcesz po prostu pouczyć się działania instrukcji, to możesz z tego skorzystać.

Co do tworzenia w takim gołym środowisku, to raczej nie znam za bardzo materiałów, to podchodzi już pod tworzenie bootloaderów i systemów operacyjnych. Tutaj mogę bardzo polecić tę stronę: https://wiki.osdev.org/Main_Page

I może pozwolę sobie na taką drobną autoreklamę. To prosty projekcik i szczerze mówiąc średnio przydatny, ale może znajdzie jakiś walor dydaktyczny, popatrz do niego, jeśli chcesz. Opisałem projekt w tym pytaniu.smiley

1
komentarz 24 listopada 2018 przez Tomek Sochacki Ekspert (227,510 p.)

Eryk... jak można lubić i rozumieć brainfuck? A już myślałem, że jesteś normalny... :P

Plusik za ciekawy projekt, mnie raczej odstrasza schodzenie tak nisko, raczej wolę wysoko poziomowe języki i duuużo abstrakcji :)

komentarz 24 listopada 2018 przez niezalogowany
edycja 24 listopada 2018
@Eryk Andrzejewski

 

Skoro umiecie assembler'a to może wy mi coś podpowiecie np. jak zaimplementować język C/C++ do mojego "systemu".

Wszystko jest dla nauki więc i tak ten "system" nie będzie funkcjonalny.

A co do brainfuck nie korzystałem z niego nigdy. Zauważyłem w internecie że ludzie chwalą się systemami w plikach *.bat może lepiej byłoby zrobić im taki bootloader z obsługą właśnie języka Batch.

Pozdrawiam
komentarz 24 listopada 2018 przez Eryk Andrzejewski Mędrzec (164,260 p.)

@Tomek Sochacki,

No to się cieszę, że poznałeś prawdę. laugh

Ja nieszczególnie rozumiem brainfuck, napisałem po prostu skromny bootowalny interpreter (choć brainfucka lubię, nie zaprzeczę, to fajne wyzwanie napisać w nim jakikolwiek program - a jak jeszcze zacznie działać to już jest w ogóle świetnie).

Ja właśnie lubię takie niskopoziomowe sprawy, to takie robienie czegoś z niczego i mam dużą satysfakcję jak się jednak uda to coś zrobić.

@michasus,

No to zrobię kolejną autoreklamę. Planuję napisać lepszą wersję (pisaną w C++, tryb chroniony i wsparcie dla jakiegoś trybu graficznego, który by symulował tryb tekstowy dla większych "rozdzielczości",  wsparcie dla ANSI Escape Sequences oraz jakiś interfejs do komunikacji ze sprzętem - aby można było tworzyć prawdziwe systemy, a nie jakieś rysowanki cheeky) tamtego projektu, już nawet zacząłem pisać kod, ale z przyczyn osobistych i czasowych projekt jest chwilowo (już od roku) zawieszony. Ale oczywiście zamierzam do niego wrócić jak tylko znajdę trochę czasu i pomysł na eleganckie zaprojektowanie klasy terminala. Link do projektu. Póki co nie ma tam zbyt wiele, jest prosty bootloader napisany w języku asemblera, włączający tryb chroniony w procesorze, odblokowujący linię A20 (żeby można było mieć trochę więcej niż 1MB pamięci) i ładujący ELF z jądrem.

Co do "systemów" pisanych w Batch - można po prostu wziąć jakiegoś FreeDOSa lub MS-DOSa, do pliku autoexec.bat wrzucić kod owej nakładki i coś jest. Problem taki, że tworzenie takiej nakładki jest chyba średnio ciekawe, dużo bardziej interesujące jest zagłębianie się w to, jak działa komputer, bootloader, system operacyjny i tak dalej.

Jeżeli chcesz fajne materiały w języku polskim to zajrzyj na kanał Gynvaela Coldwinda na YouTube. Znajdziesz tam serię poświęconą tworzeniu systemu operacyjnego. Nie ukrywam, że trochę wiedzy i koncepcji z niej zaczerpnąłem. wink

komentarz 7 grudnia 2018 przez Marcin Wawrzyniak Nowicjusz (100 p.)

@Eryk Andrzejewski,
asembler jest niezależny od systemu operacyjnego. Oczywiście najlepiej pisać program w okienkowym IDE jednak sam kod assemblera pozostanie taki sam ( poza korzystaniem z gotowych rozwiązań systemu jak konkretne przerwania w trybie rzeczywistym czy funkcje systemowe ).

@michasus Idealny kurs chociaż w postaci PDF:kurs. W moim przekonaniu nie da się tego ogarnąć z kursu video ponieważ musiał byś na każdym etapie cofać odtwarzać ponownie, łatwiej wzrokiem wrócić do części textu której się nie zrozumiało od kopa.

do tego jest okienkowe IDE dostępne tutaj ze wszystkich składni najłatwiejsza (najmniej pisania) jest w składni Fasm.

IDE jest z przykładami prostymi, a cały proces kompilacji sprowadza się do kliknięcia przycisku "compile".

 

komentarz 7 grudnia 2018 przez Eryk Andrzejewski Mędrzec (164,260 p.)
No i zgodzę się, język asemblera jest zależny od architektury procesora. Ale jeżeli piszemy jakieś proste programy (działające w środowisku jakiegoś systemu operacyjnego), to sporo kodu to będzie właśnie wywoływanie jakichś przerwań/wywołań systemowych dotyczących wejścia-wyjścia. Jeśli chce się nauczyć właśnie samego języka asemblera, to nie ma potrzeby sobie zaprzątać głowy czymś takim, można skorzystać z owego asmloadera, albo też można skorzystać z biblioteki standardowej języka C i ją sobie zlinkować z własnym programem.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 324 wizyt
0 głosów
2 odpowiedzi 1,789 wizyt
pytanie zadane 29 maja 2017 w Assembler przez Milesq Nałogowiec (32,020 p.)
0 głosów
3 odpowiedzi 3,337 wizyt
pytanie zadane 25 września 2015 w Offtop przez Piotr Zborowski Obywatel (1,680 p.)

92,631 zapytań

141,498 odpowiedzi

319,869 komentarzy

62,011 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...