Wpisz w google "kurs fasm"
First link Linuks + DOS. Świetnie napisane.
Jedak assemblera na windowsa nie polecam, jest bardziej skomplikowany niż ten Linuksowy, głównie chodzi o wywołania funkcji systemowych. W windowsie jest to raczej porażka (chociaż nie znam go dokładnie).
Sam assembler nie jest trudny, ale ma sporo innych wad. Najbardziej bolesną jest to, że jest bardzo nieprzenośny, a na różnych architekturach różni się niebotycznie. Nawet kolejne wersje systemu mogą zmusić Cię do przepisywania całego kodu :| Po drugie wiele różnych nagłówków dla różnych kompilatorów i dwie składnie... Kody są w nim długie i nieczytelne (czytając czyjś kod praktycznie zdany jesteś na komentarze). Jednak to że kody są długie, ma też swoją dobrą stronę, szybciej nauczysz się go na pamięć (chociaż na początku będzie trudny). Zalety? Możesz ręcznie zoptymalizować program pod wybraną architekturę, jednak teraz tego się praktycznie nie używa. No i oczywiście mały rozmiar kodu wynikowego. Jednak znajomość assemblera pozwoli Ci lepiej programować w takich językach jak C (nawet gdy nie będziesz robił w nim wstawek assemblerowych). Programując w assemblerze poznajesz działanie swojej maszyny od bebechów, co jest gwarancją wydajniejszego i łatwiejszego używania wskaźników. Polecam składnie intela, ponieważ jest czytelniejsza i wymaga mniejszej dbałości od piszącego program. Assemblery (programy assemblujący nie nazywają kompilatorem) które polecam to FASM (ponieważ stworzył go polak i nie potrzebuje linkera) i NASM (jest w prawie każdym systemie). Jak coś będziesz chciał więcej, napisz, namiary znasz.