servuz,
ich bleibe dabei: assembler lernen ist leichter als c++ lernen.
man braucht nur wenige befehle, diese brauchen wenige parameter und wenn man mal das prinzip verstanden hat ist assembler auf jedenfall leichter(und vor allem logischer - auch was fehlermeldungen angeht).
auf jedenfall sollte man bevor man mit asm anfängt in einer hochsprache programmiert haben, denn ich kann mir gut vorstellen, dass assembler für leute ohne jegliche programmierkenntnisse schwerer ist als c.
ich würde aber am anfang nicht zuviel zeit mit dem erlernen einer hochsprache verschwenden, denn wenn du assembler kannst - kannst du in jeder sprache(ausser vielleicht vb

) gute programme schreiben (und wenn nicht - kannst du ja assembler einbinden- zb. bestanden meine ersten c programme zur hälfte aus assembler ^^).
beim assembler programmieren wirst du auf jedenfall einen guten debugger brauchen - zu empfehlen sind gdb, w32dasm, softice und ollydbg, wobei ich letzteren(u.a. wegen der möglichkeit den code zu patchen und als exe abzuspeichern) am besten finde.
zu lange im dos assembler rumhängen bringt nix - nach ein paar primitiven programmen(crypter etc.) würde ich sofort auf windows asm umsteigen.
das wirkt am anfang zwar ziemlich kompliziert, ist aber nach kürzester zeit einfacher (und vor allem logischer) als c. spaßeshalber mal ein paar programme "hardcoden" - also mit dem hexeditor und ner opcodeliste ist fürs verständnis(zb von bufferoverflowz) auch ganz nützlich(ausserdem hat man ja nicht immer nen compiler zur hand^^).
und was compiler angeht:
tasm ist nicht schlecht aber kommerziell(google suche nach tasm5_1.zip - sind 3 files)
masm ist freeware und in anfangszeiten schlecht gewesen, aber hat sich in letzter zeit stark gebessert und hat viele nütztliche beispiele und includefiles(die würde ich mir genauer anschauen) - auf jedenfall ziehn wegen den beispielen (
www.masm32.com)
nasm gibts auch - ist freeware und zum coden besser als die anderen beiden geeignet, um assembler zu erlernen würd ich trotzdem tasm nehmen - obwohl es eigentlich ziemlich egal ist mit was für einen assembler man coden lernt. (nasm.sourceforge.net)
das was ich an masm überhaupt nicht leiden kann sind funktionsaufrufe mit invoke(den assemblerbefehl gibts gar nicht!) - uargh.
btw bei mir sind sogar assembler sourcecodes(vor allem bei größeren programmen) kürzer(und die programme schneller) als in c ^^
cya, hants