Snel asm leren
- Berichten: 829
Snel asm leren
hallo,
weet iemand een paar goeie sites om op een zeer korte tijd deftig ASM te leren. Ik kan al programmeren in OO-talen dus het probleem zit niet bij algoritmes, ik zoek gewoon informatie over de opdrachtenset en de flags ervoor en dat soort dingen
mvg
Vladimir Lenin
weet iemand een paar goeie sites om op een zeer korte tijd deftig ASM te leren. Ik kan al programmeren in OO-talen dus het probleem zit niet bij algoritmes, ik zoek gewoon informatie over de opdrachtenset en de flags ervoor en dat soort dingen
mvg
Vladimir Lenin
"Als je niet leeft zoals je denkt, zul je snel gaan denken zoals je leeft."
--Vladimir Lenin-- (Владимир Ильич Ульянов)
--Vladimir Lenin-- (Владимир Ильич Ульянов)
- Berichten: 4.810
Re: Snel asm leren
Het hangt toch allemaal af van welke hardware je wil gaan gebruiken? Op zich is ASM niet zo verschillend van gewoon programmeren, je hebt enkel veel minder tot je beschikking.
- Berichten: 2.364
Re: Snel asm leren
Als je gewoon assembler wilt gebruiken voor de IA-32, kan ik je verwijzen naar de intel pagina. Hier staan alle denkbare instructies. De boeken kun je overigens ook gratis bestellen.
Quotation is a serviceable substitute for wit. - Oscar Wilde
- Lorentziaan
- Berichten: 5.079
Re: Snel asm leren
Any sufficiently analyzed magic is indistinguishable from science.
Any sufficiently advanced technology is indistinguishable from magic.
There is no theory of protecting content other than keeping secrets Steve Jobs
Any sufficiently advanced technology is indistinguishable from magic.
There is no theory of protecting content other than keeping secrets Steve Jobs
- Berichten: 5.679
Re: Snel asm leren
Waarom wil je dat eigenlijk leren? Er zijn vandaag de dag echt uiterst weinig praktische situaties waarin asm echt zin heeft.
(gewoon iets leren om het leren, of omdat het leuk, is natuurlijk een prima valide reden, daar niet van )
(gewoon iets leren om het leren, of omdat het leuk, is natuurlijk een prima valide reden, daar niet van )
In theory, there's no difference between theory and practice. In practice, there is.
-
- Berichten: 202
Re: Snel asm leren
Als je echt iets leuks wil maken, moet je eens kijken naar antlr: http://www.antlr.org/ hiermee kun je je eigen vertaler maken voor een zelf te maken programmeertaal. Hiermee kun je dan ook een codegenerator maken voor bijvoorbeeld ia 32.
-
- Berichten: 158
Re: Snel asm leren
Dat vind ik onzin. Asm is in de eerste plaats ontzettend handig om het binnenste van een computer te snappen. Dat een computer werkt met getallen en indirectie, en niet met symboolnamen en functies. Dat de processor niks weet van variabelen, maar een paar registers heeft waar je wat mee kan doen. Hoe simpele recursie op het laagste niveau moet worden opgelost door middel van een stack, en waarom een byte van 255 optellen bij een byte met waarde 255 een byte met waarde 254 geeft. Hoe kommagetallen er binair uit zien, of negatieve getallen in diverse notaties. Little endian, paging en segmentatie, noem maar op. Maar wat ik met deze opsomming vooral probeer aan te geven is dat je al heel veel moet weten voordat je snapt wat je doet als je in asm gaat programmeren. Asm op zichzelf is supersimpel, want elke regel is een variant op het patroon "Label: instructie operands ; Commentaar".Waarom wil je dat eigenlijk leren? Er zijn vandaag de dag echt uiterst weinig praktische situaties waarin asm echt zin heeft.
Op de opleiding Informatica moet je in het eerste jaar al een Commodore 64 emulator schrijven in asm, niet voor niets.
Helaas kan ik je geen verwijzingen naar het studiemateriaal geven omdat dat van de opleiding is, maar wel een link naar een Engelse tutorial (in NASM) die op het eerste gezicht voldoende informatie bied om het goed te kunnen leren. De asm zelf wordt niet alleen behandeld, maar ook een aantal van de dingen die ik hierboven noemde:
http://www.drpaulcarter.com/pcasm/
Waarom asm in NASM programmeren? NASM heeft een logischere (Intel) syntax dan veel andere bekende assemblers (zoals GAS, de GNU assembler), geeft duidelijker aan waar een eventueel probleem in de code zit (weer in tegenstelling tot GAS), en is ook beschikbaar voor Windows.
"Niet gehinderd door enige kennis van zaken..."
-
- Berichten: 185
Re: Snel asm leren
Ik ben heel blij dat er nog mensen zijn die Asm leren. Als Adm zou uitsterven, zou er een nieuw soort computer-analfabetisme ontstaan. Er zou geen programmeur meer zijn die de computer anders kan aansturen dan als een blackbox.
Alles wat in hogere talen geprogrammeerd kan worden, kan ook in Asm geschreven worden. Asm is in principe totaal bugvrij te schrijven, zolang je maar elke subroutine grondig test en op bugvrije hardware werkt.
Elk fatsoenlijk Asm programma is veel sneller dan welk gecompileerd programma dan ook, om van scripts nog maar te zwijgen. Je kunt dll's schrijven, of objects om te gebruiken in je OOPS taal.
Het internet stikt van de voorbeelden en tutorial sites. En als je even doorbijt kun je in Asm net zo snel schrijven als in C.
Masm32 (microsoft assembler, de meest gebruikte) kun je gratis downloaden vanaf http://www.masm32.com/
XP Platform SDK is ook gratis te downloaden van
http://www.microsoft.com/msdownload/platfo...FULLInstall.htm
win32api.big.zip is ook een verstandige download: http://www.carabez.com/downloads.html
succes
Maggy
Alles wat in hogere talen geprogrammeerd kan worden, kan ook in Asm geschreven worden. Asm is in principe totaal bugvrij te schrijven, zolang je maar elke subroutine grondig test en op bugvrije hardware werkt.
Elk fatsoenlijk Asm programma is veel sneller dan welk gecompileerd programma dan ook, om van scripts nog maar te zwijgen. Je kunt dll's schrijven, of objects om te gebruiken in je OOPS taal.
Het internet stikt van de voorbeelden en tutorial sites. En als je even doorbijt kun je in Asm net zo snel schrijven als in C.
Masm32 (microsoft assembler, de meest gebruikte) kun je gratis downloaden vanaf http://www.masm32.com/
XP Platform SDK is ook gratis te downloaden van
http://www.microsoft.com/msdownload/platfo...FULLInstall.htm
win32api.big.zip is ook een verstandige download: http://www.carabez.com/downloads.html
succes
Maggy
- Berichten: 4.810
Re: Snel asm leren
Alle code kan in principe bugvrij gemaakt worden, alleen is dat praktisch onmogelijk. Grote projecten in asm (die echt niet vaak meer voorkomen) krijgen ook vroeg of laat met bugs te maken, hoe hard je ook je best doet.Alles wat in hogere talen geprogrammeerd kan worden, kan ook in Asm geschreven worden. Asm is in principe totaal bugvrij te schrijven, zolang je maar elke subroutine grondig test en op bugvrije hardware werkt
Even met assembler werken is wel tof, maar je moet je er zeker geen maanden op leren om het te begrijpen. Overigens kan je naar mijn mening niet veel "assembler" leren omdat veel hardware echt van mekaar verschilt. Je kan wel wat trucjes leren en wat zaken leren die bijna overal voorkomen (zoals registers) maar dat wil nog niet zeggen dat je zomaar overweg kan met nieuwe hardware. Vaak wordt wel genoeg documentatie geleverd bij hardware om je weg te vinden zelf mocht je nooit assembler gezien hebben.
- Berichten: 5.679
Re: Snel asm leren
virtlink schreef:Dat vind ik onzin. Asm is in de eerste plaats ontzettend handig om het binnenste van een computer te snappen. Dat een computer werkt met getallen en indirectie, en niet met symboolnamen en functies. Dat de processor niks weet van variabelen, maar een paar registers heeft waar je wat mee kan doen.
(...)
paging en segmentatie, noem maar op.
En hoe is dat, in alledaagse praktijksituaties vandaag de dag, precies van belang?Ik ben heel blij dat er nog mensen zijn die Asm leren. Als Adm zou uitsterven, zou er een nieuw soort computer-analfabetisme ontstaan. Er zou geen programmeur meer zijn die de computer anders kan aansturen dan als een blackbox.
Volgens dat argument zou het net zo belangrijk zijn dat je als programmeur elektrotechniek en micro-elektronica studeert, want dan leer je pas écht hoe een computer werkt. En als je die lijn doortrekt, dan eigenlijk ook natuurkunde en quantumfysica.
De zaken die je hier noemt zijn inderdaad nuttig in allerlei praktijksituaties, maar dan gaat het meer om een conceptueel begrip dan kennis van assembler. Diezelfde kennis is net zo nuttig wanneer je voor intel als voor andere platforms programmeert (zoals game consoles, en tot voor kort de Mac, enz), en echt programmeren in Asm staat daar eigenlijk los van. De dingen die je omschrijft zijn mij ook vaak genoeg van pas gekomen in puur C++ situaties.Hoe simpele recursie op het laagste niveau moet worden opgelost door middel van een stack, en waarom een byte van 255 optellen bij een byte met waarde 255 een byte met waarde 254 geeft. Hoe kommagetallen er binair uit zien, of negatieve getallen in diverse notaties. Little endian,
Ik ben het wel met je eens dat het programmeren in assembler je vanzelf met deze concepten vertrouwd maakt (evenals pointers bijvoorbeeld, er zijn verdomd veel programmeurs die daar geen hol van begrijpen). Maar dan wordt Asm meer een middel (een leermethode) dan een doel.
Vroeger was Asm ook handig (of zelfs noodzakelijk) om bepaalde hardware aan te kunnen sturen, zoals geluids- en videokaarten enzo. Dat is met de komst van Windows en drivers ook veranderd, nu zit daar een laag tussen en spreek je met apparaten op een universele manier. En eerlijk is eerlijk, dat is wel zo handig en scheelt een onwijze bult werk en tijd.
Dat is per definitie zo, want Asm is de enige taal die je computer kan uitvoeren. Iedere compiler zet een random taal om in Asm.Alles wat in hogere talen geprogrammeerd kan worden, kan ook in Asm geschreven worden.
Dat geldt natuurlijk voor iedere taal. Bij Asm kost het alleen een veelvoud van de tijd, en is dus een stuk moeilijker om dat consistent vol te houden. En in de praktijk, waar een programma binnen een bepaalde tijd af moet zijn, is dat helemaal onrealistisch.Asm is in principe totaal bugvrij te schrijven, zolang je maar elke subroutine grondig test en op bugvrije hardware werkt.
Programmeren in Asm kost veel, veel meer tijd, en de kans op foutjes is groter, en die zijn bovendien moeilijker op te sporen.
Sorry, maar dat is echt volstrekte onzin. Ten eerste maakt het voor 99.99% van alle programma-onderdelen geen drol uit of het uit geoptimaliseerde assembler bestaat of een domme conversie vanuit een "hogere" programmeertaal. Ten tweede is het zeer twijfelachtig of je tegenwoordig nog wel betere Asm kunt maken dan wat compilers produceren. Heb je wel eens gekeken wat Visual C voor Asm produceert met alle optimalisaties aan? Dat is tamelijk ziek hoor, daar valt als programmeur (ook met de nodige expertise) nauwelijks nog tegenop te optimizen.Elk fatsoenlijk Asm programma is veel sneller dan welk gecompileerd programma dan ook,
Processors van vandaag de dag zijn dusdanig ingewikkeld dat je met zoveel facetten rekening moet houden (pairing, caching, penalties, noem maar op), dat een beetje complex programma al zo'n monnikenwerk zou zijn om in Asm te bouwen, daar is haast geen beginnen aan. Laat staan dat je het ook nog net zo goed wilt optimizen als een compiler doet, dat kost nog eens een veelvoud van het werk en benodigde expertiese.
Scripts worden doorgaans niet gecompileerd, dus dat is niet helemaal eerlijk te vergelijken. Maar zelfs daar zul je het in de praktijk zelden merken (scripts runnen vaak online en dan is de bandbreedte vaker de bottleneck dan de uitvoersnelheid van het script).om van scripts nog maar te zwijgen.
Pas als je intensieve dingen gaat doen in een scriptje (iets wat zwaar moet rekenen of veel data verwerken), dan wordt het merkbaar trager dan een 'echt' programma. Maar dat geldt zo'n beetje voor alle programma's gecompileerd in iedere willekeurige gecompileerde taal (met een fatsoenlijke compiler).
(Net als boven) vanzelfsprekend, want andere talen waarin dat kan worden naar Asm omgezet.Je kunt dll's schrijven, of objects om te gebruiken in je OOPS taal.
Andersom is het ook zo: alles wat je in Asm kan, kan ook in C, en omgekeerd. En alles wat je in x86 (intel) Asm kan, kan ook op een motorola cpu, en omgekeerd.
Ik durf te wedden dat ieder programma dat een béétje complex is (dus geen hello world, al geldt het daar ook voor) een veelvoud van tijd kost om te maken in Asm.Het internet stikt van de voorbeelden en tutorial sites. En als je even doorbijt kun je in Asm net zo snel schrijven als in C.
Ik wil niet de zuurpruim uithangen en Asm afkraken ofzo. Ik heb er jaren 100% in geprogrammeerd dus ik weet waar ik het over heb. Evengoed kan het best leuk (en op sommige momenten zelfs nuttig) zijn om Asm te leren, maar vergis je niet in hoeveel tijd en moeite dat gaat kosten, en hoeveel je er echt aan hebt. Als het je om het nut gaat, ben je tegenwoordig volgens mij beter af door je te verdiepen in andere programmeeraspecten.
Een fraai voorbeeld vind ik MenuetOS, een of andere freak die een compleet OS heeft gebouwd in 100% Asm. Oooh man wat moet die gast daar veel tijd in hebben gestoken! Compleet windowed, met netwerk support en browsers en alles. Erg leuk, veel hulde en respect voor zijn prestatie. En ook volslágen zinloos
In theory, there's no difference between theory and practice. In practice, there is.
-
- Berichten: 158
Re: Snel asm leren
Goed, in asm schijf ik de volgende regel code om een ingedrukte toets op te vangen in een interrupt service request handler: (Hierna staat het in het register AL en mag ik er alles mee doen wat ik wil.)Andersom is het ook zo: alles wat je in Asm kan, kan ook in C, en omgekeerd.
Code: Selecteer alles
in al, 0x60
Je kan niet alles in asm ook in C. Natuurlijk maken higher level languages de kansen op fouten kleiner, en door hun ontwerpstructuur maken ze het programmeren makkelijker en sneller. Maar jij zegt domweg dat asm tegenwoordig nutteloos is om nog te leren. Latijn is net zo nutteloos, want niemand spreekt het. Toch krijg je het zelfs op de middelbare school. Het gaat in beide gevallen dan om de basis, het achterliggende.
"Niet gehinderd door enige kennis van zaken..."
- Berichten: 5.609
Re: Snel asm leren
Al aan redcode gedacht? Praktisch gebruik is 0, maar het is een zeer intellectuele uitdaging om een virus te schrijven dat efficiënter andere virussen uitmoordt dan het zelf uitgemoord wordt
Verslavend. En het ligt vrij dicht bij assembler. En het stimuleert om echt efficiënt te beginnen programmeren.
Verslavend. En het ligt vrij dicht bij assembler. En het stimuleert om echt efficiënt te beginnen programmeren.
What it all comes down to, is that I haven't got it all figured out just yet
And I've got one hand in my pocket and the other one is giving the peace sign
-Alanis Morisette-
And I've got one hand in my pocket and the other one is giving the peace sign
-Alanis Morisette-
-
- Berichten: 185
Re: Snel asm leren
Laten we ervan uitgaan dat de meeste programmeurs hooguit twee types processoren in huis hebben die ze mogelijk willen aansturen in ASM, namelijk een x86 in hun PC en een in hun mobiel of PDA. Ja, die twee verschillen fors van elkaar. Maar het is heus mogelijk de volledige Asm van beide in je kop te krijgen. De volledige C++ reference uit je kop leren raad ik iedereen van harte af.Overigens kan je naar mijn mening niet veel "assembler" leren omdat veel hardware echt van mekaar verschilt.
Ik weet niet hoeveel spaken een wiel van mijn fiets heeft, ik weet vrijwel niets over de samenstelling van het rubber van mijn banden en zelfs mijn fietsbel laat ik maar liever dichtgeschroefd. Maar ik ben wel blij dat er nog altijd voldoende mensen zijn die weliswaar geen van alle individueel ALLES van grondstoffen tot complete fiets weten, maar gezamenlijk beschikken ze wel over AL die kennis. Een van de verschillen tussen een Batavus van 1000 euro en een chineese cheapo fiets is dat er wat minder metallurgische kennis in die laatste zit, resultaat een roestbak.En hoe is dat, in alledaagse praktijksituaties vandaag de dag, precies van belang?
De Romeinen waren qua wetenschap en techniek het meest ontwikkelde Europese volk van hun tijd (dankzij geimporteerde kennis uit de rest van Europa, voor-Azie en Egypte). Na de val van het Romeinse rijk verdween de meeste kennis weer... in Europa. Gelukkig waren de moslimlanden en Azie juist wel heel zuinig op de bestaande kennis en werd die daar fiks uitgebreid anders was het hier in de Renaissance ook niks geworden. In de tweede helft van onze middeleeuwen kwam er in de moslimlanden weer een eind aan de wetenschappelijke ontwikkeling door een veelheid aan factoren.
http://en.wikipedia.org/wiki/Islamic_science#Decline
Die geschiedenis kan zich op computergebied maar al te gemakkelijk herhalen.
goedkope manier van het onderwerp belachelijk maken. Mijn fietsenmaker op de hoek hoeft geen metallurg te zijn, maar zonder bekwame metallurgen reed ik nu op een roestbak.Volgens dat argument zou het net zo belangrijk zijn dat je als programmeur elektrotechniek en micro-elektronica studeert, want dan leer je pas écht hoe een computer werkt. En als je die lijn doortrekt, dan eigenlijk ook natuurkunde en quantumfysica.
En hoe bouw je die laag? Hoe bouw je compilers? Hoe simuleer je andere hardware op je PC?Vroeger was Asm ook handig (of zelfs noodzakelijk) om bepaalde hardware aan te kunnen sturen, zoals geluids- en videokaarten enzo. Dat is met de komst van Windows en drivers ook veranderd, nu zit daar een laag tussen
Asm is een voor mensen leesbare en schrijfbare programmeertaal die goed te structureren en te documenteren is. Je computer kent bits, bytes en words, meer niet. Heus geen Asm, laat staan dat er iets van je comments in de uiteindelijke machinetaal gehandhaaft blijft.Dat is per definitie zo, want Asm is de enige taal die je computer kan uitvoeren. Iedere compiler zet een random taal om in Asm.
Heb je wel 's een gecompileerd programmaatje gedisassembled? Dat leest in de regel niet echt makkelijk terug.
Bugs die al in compilers, libraries etc zitten blijven heel lang doorspoken en vermenigvuldigen zich naar elke volgende generatie programmeertalen die niet van de grond af in Asm maar in een bestaande hogere taal ontwikkeld zijn.Dat geldt natuurlijk voor iedere taal.
Ik was op mijn IBM PC van 4,77 MHz niet veel minder productief dan nu op mijn dual Xeon van 3 GHz, afgezien van het regelmatig wachten op disk swaps.Sorry, maar dat is echt volstrekte onzin. Ten eerste maakt het voor 99.99% van alle programma-onderdelen geen drol uit of het uit geoptimaliseerde assembler bestaat of een domme conversie vanuit een "hogere" programmeertaal.
Paintshop en Photoshop werken veel met scripts, offline. Heel veel mensen gebruiken Greasemonkey in Firefox. etc. En ik moet eerlijk zeggen dat ik ook zelf nog regelmatig een macrootje of Python scriptje gebruik om mijn computer te laten werken terwijl ik in mijn bedje lig.Scripts worden doorgaans niet gecompileerd, dus dat is niet helemaal eerlijk te vergelijken. Maar zelfs daar zul je het in de praktijk zelden merken (scripts runnen vaak online en dan is de bandbreedte vaker de bottleneck dan de uitvoersnelheid van het script).
Het kostte me weinig moeite om dit te vinden, pag 96:Andersom is het ook zo: alles wat je in Asm kan, kan ook in C, en omgekeerd.
http://books.google.nl/books?id=HLztYyTUt_...ble&f=false
goh, hoe kan het dan dat ik die indruk wel kreeg?Ik wil niet de zuurpruim uithangen en Asm afkraken ofzo.
- Berichten: 5.679
Re: Snel asm leren
Hier:En nu hetzelfde in C?
Code: Selecteer alles
#include <conio.h>
char c = _getch();
Ik kan een volledige cpu-emulator/virtualisator (zoals VMWare en VirtualBox enzo) in C maken. Die voert dan per definitie alles wat je in asm kan, uit in C.Je kan niet alles in asm ook in C.
Nou, ik zeg niet dat het compleet nutteloos is, er zijn tegenwoordig alleen veel andere zaken die eigenlijk nuttiger zijn, waar je in de praktijk meer profijt van hebt. Als je Asm voor de lol leert is dat geen argument. Maar als het je gaat om het praktisch nut dat je ervan hebt, dan kun je je tijd vruchbaarder gebruiken of efficiënter investeren. En Asm is zéker geen heilige graal voor het maken van übersnelle of foutloze programma's.Maar jij zegt domweg dat asm tegenwoordig nutteloos is om nog te leren.
In theory, there's no difference between theory and practice. In practice, there is.
- Berichten: 19
Re: Snel asm leren
hi, van u verwacht ik hier de vraag "wat kan ik nou met asm?" wanneer u oop taal kent, deze vraag, in combinatie, met een idee over het toepassen van asm, kan een aanleiding zijn voor een antwoord op de vraag hoe "beter" asm kennis opdoen... deftig ASM te leren. Ik kan al programmeren in OO-talen dus het probleem zit niet bij algoritmes
en zonder dat tik je gewoon in google 'asm turotials' en daar ben je.
'Anticipate charity by preventing poverty' (Mimoun Rambam)