Toon posts:

Assembly taal leren voor de fun

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Beste Tweakers,

Kan iemand mij een goed Nederlands boek aanraden wat betreft het leren van een assembleer taal? Graag hoor ik ook wat ervaringen van jullie :)!

Met vriendelijke groet,
Clyze

Acties:
  • 0 Henk 'm!

  • Onbekend
  • Registratie: Juni 2005
  • Laatst online: 23:14

Onbekend

...

Boeken? Tja, zoek eens naar oudere boeken over microcontrollers. De basis blijft het zelfde, namelijk bit en bytebewerkingen doen en flags controleren.

Wat wil je precies ermee bereiken?

Speel ook Balls Connect en Repeat


Acties:
  • 0 Henk 'm!

  • McKaamos
  • Registratie: Maart 2002
  • Niet online

McKaamos

Master of the Edit-button

Heb je enig idee waar je over praat? :P
"Assembleer taal"? uhh, wat?
Heb je uberhaupt al ervaring met een willekeurige taal of moet het voor een beginneling zijn?

Verder, als je een taal wil gaan leren is het goed om te weten waar je naartoe wil werken.
Dus, wat is het wat je graag zou willen bereiken?
Dat is ook van belang bij de keuze van een boek. Programmeertalen zijn toepasbaar in allerlei richtingen, dus zijn de boeken daar ook op toegespitst.

Iemand een Tina2 in de aanbieding?


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dankjewel, ik wil er heel graag de gemiddelde computer beter mee leren kennen.

Naast de webbased scripttalen die ik op school leer, en de wat hogere talen thuis wil ik graag een assembleer taal leren in m'n vrije tijd :).

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
McKaamos schreef op maandag 10 augustus 2015 @ 22:56:
Heb je enig idee waar je over praat? :P
"Assembleer taal"? uhh, wat?
Heb je uberhaupt al ervaring met een willekeurige taal of moet het voor een beginneling zijn?

Verder, als je een taal wil gaan leren is het goed om te weten waar je naartoe wil werken.
Dus, wat is het wat je graag zou willen bereiken?
Dat is ook van belang bij de keuze van een boek. Programmeertalen zijn toepasbaar in allerlei richtingen, dus zijn de boeken daar ook op toegespitst.
Ik wil heel graag cpu's leren programmeren, al is het een 64-bit taal. Inplaats van wat ik nu op school en thuis doe dat het lijkt alsof ik tegen een browser of het OS aan programmeer, wil ik graag ook een assembleer taal leren opdat ik computers in het algemeen beter ga leren begrijpen.

[ Voor 65% gewijzigd door Verwijderd op 10-08-2015 23:20 ]


Acties:
  • 0 Henk 'm!

  • McKaamos
  • Registratie: Maart 2002
  • Niet online

McKaamos

Master of the Edit-button

Verwijderd schreef op maandag 10 augustus 2015 @ 23:08:
[...]


Ja, wat scripttalen, momenteel ben ik bezig met een wat hogere programmeertaal genaamd Java, maar alsnog heb ik het gevoel dat ik nog dichterbijer naar de processor wil gaan programmeren.
Okay, valt wat voor te zeggen. Dus je wil graag Assembly leren, gericht op x86/x64 architectuur.

Misschien zinvol om eerst even dit door te nemen: http://hackeradam17.com/2...x86_64-assembly-language/

Korte introductie, wel in het engels. Kan je op basis daar van besluit nemen of je er wel of niet verder mee wil gaan. Even zien of je dat gevoel verder kan versterken :)

Boek-advies heb ik helaas niet voor je.

Iemand een Tina2 in de aanbieding?


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dankjewel, zijn er ook wat "lagere" talen dan 64 en 86 bit?

Ik sla alvast de link op, en neem hem ondertussen dan door :).

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 22:32

Janoz

Moderator Devschuur®

!litemod

Als het voor de hobby en voor het begrip is, dan is het misschien handiger om niet met x86/x64 te beginnen. Je kunt beter beginnen met een chip met een kleinere instructieset. Dit kun je vervolgens in een emulator draaien. Denk bijvoorbeeld aan een Commodore 64 of zo.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Janoz schreef op maandag 10 augustus 2015 @ 23:24:
Als het voor de hobby en voor het begrip is, dan is het misschien handiger om niet met x86/x64 te beginnen. Je kunt beter beginnen met een chip met een kleinere instructieset. Dit kun je vervolgens in een emulator draaien. Denk bijvoorbeeld aan een Commodore 64 of zo.
Dankjewel, dat lijkt mij verstandig.

Daar is het precies voor. Ik ga mijn best doen :).

[ Voor 5% gewijzigd door Verwijderd op 10-08-2015 23:27 ]


Acties:
  • 0 Henk 'm!

  • JJ93
  • Registratie: Maart 2013
  • Laatst online: 22:31

JJ93

Error 418

Verwijderd schreef op maandag 10 augustus 2015 @ 22:58:
Dankjewel, ik wil er heel graag de gemiddelde computer beter mee leren kennen.

Naast de webbased scripttalen die ik op school leer, en de wat hogere talen thuis wil ik graag een assembleer taal leren in m'n vrije tijd :).
Door te assembly code te gaan schrijven ga je de gemiddelde computer niet beter leren kennen.

Dan kan je je beter bezig houden met networking, drivers, memory management, processes, threads, operating system opbouw etc.

Linux Kernel: https://github.com/torvalds/linux
Windows NT architecture: Wikipedia: Architecture of Windows NT
Operating System Design: https://en.wikibooks.org/wiki/Operating_System_Design

Acties:
  • 0 Henk 'm!

  • McKaamos
  • Registratie: Maart 2002
  • Niet online

McKaamos

Master of the Edit-button

Verwijderd schreef op maandag 10 augustus 2015 @ 23:23:
Dankjewel, zijn er ook wat "lagere" talen dan 64 en 86 bit?

Ik sla alvast de link op, en neem hem ondertussen dan door :).
Assembly is zo laag als je kan gaan zonder in machinecode te duiken.
Voor elke architectuur werkt Assembly weer anders. Voor je normale desktop PC wil je Assembly voor x86-64.
Voor een mobieltje, tablet of een developmentboard (denk aan RaspberryPi) zal je in de regel ARM Assembly gebruiken.
Of je gaat kijken naar AVR of PIC. Dat zijn microcontrollers en dat lijkt in de verste verten niet op een PC. Wel leuk om kleine, op zichzelf staande apparaten mee te maken. Denk aan robotica. Al doet men dat ook al steeds vaker met krachtigere platformen zoals een ARM developmentboard.

Of, wat Janoz al zegt, gaan spelen met oudere apparatuur zoals bijvoorbeeld een Commodore64 of een Apple II ofzo.
Motorola 68K processors. RISC architectuur (Reduced Instruction Set Computing).
Die vind je ook weer terug in b.v. een Sega Megadrive en (ik meen) de Nintendo SNES.

Veel simpelere apparaten om mee te werken dan een moderne PC. Dan heb je veel sneller een leuk resultaat.

[ Voor 19% gewijzigd door McKaamos op 10-08-2015 23:32 ]

Iemand een Tina2 in de aanbieding?


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
JJ93 schreef op maandag 10 augustus 2015 @ 23:28:
[...]

Door te assembly code te gaan schrijven ga je de gemiddelde computer niet beter leren kennen.

Dan kan je je beter bezig houden met networking, drivers, memory management, processes, threads, operating system opbouw etc.

Linux Kernel: https://github.com/torvalds/linux
Windows NT architecture: Wikipedia: Architecture of Windows NT
Operating System Design: https://en.wikibooks.org/wiki/Operating_System_Design
Dankjewel voor de links :), ik moet er goed voor zitten om ook de componenten waar de processor mee communiceert te leren begrijpen.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
McKaamos schreef op maandag 10 augustus 2015 @ 23:28:
[...]

Assembly is zo laag als je kan gaan zonder in machinecode te duiken.
Voor elke architectuur werkt Assembly weer anders. Voor je normale desktop PC wil je Assembly voor x86-64.
Voor een mobieltje, tablet of een developmentboard (denk aan RaspberryPi) zal je in de regel ARM Assembly gebruiken.
Of je gaat kijken naar AVR of PIC. Dat zijn microcontrollers en dat lijkt in de verste verten niet op een PC. Wel leuk om kleine, op zichzelf staande apparaten mee te maken. Denk aan robotica. Al doet men dat ook al steeds vaker met krachtigere platformen zoals een ARM developmentboard.

Of, wat Janoz al zegt, gaan spelen met oudere apparatuur zoals bijvoorbeeld een Commodore64 of een Apple II ofzo.
Motorola 68K processors. RISC architectuur (Reduced Instruction Set Computing).
Die vind je ook weer terug in b.v. een Sega Megadrive en (ik meen) de Nintendo SNES.

Veel simpelere apparaten om mee te werken dan een moderne PC. Dan heb je veel sneller een leuk resultaat.
Super :D!

Ik ga beginnen met de commedore 64 of een raspberry als ik er niet aan kan komen :)!

Acties:
  • 0 Henk 'm!

  • downtime
  • Registratie: Januari 2000
  • Niet online

downtime

Everybody lies

Ik zou geen Commodore 64 nemen. Dat is investeren in een zwaar verouderde skill. Neem dan Raspberry. Die draait op ARM, een enorm populaire architectuur die bovendien relatief eenvoudig (want RISC-based) is, en waar zat actuele documentatie en tooling voor is. Je kunt er ook gewoon een modern OS als Linux of BSD op draaien.

Overigens is de ARM architectuur gedeeltelijk afgeleid van de 6502 die in de C64 zat. De 6502 zat namelijk ook in de BBC Micro en de ARM architectuur is ontwikkeld voor de opvolger van de BBC Micro omdat andere CPU's uit die periode niet voldeden.

[ Voor 27% gewijzigd door downtime op 11-08-2015 02:08 ]


Acties:
  • 0 Henk 'm!

  • cytherea
  • Registratie: Oktober 2003
  • Laatst online: 25-09 10:57
Ik zat laatst ook met assembler the spelen en kwam deze emulator tegen: http://schweigi.github.io/assembler-simulator/index.html. Misschien om te beginnen en te leren hoe assembler werkt een leuke?
Dan kom je er meteen achter hoeveel werk het is om iets simpels te doen in assembler. Wel leuk om te leren hoe een processor werkt en hoe geheugen aangesproken wordt.

Acties:
  • 0 Henk 'm!

  • kutagh
  • Registratie: Augustus 2009
  • Laatst online: 19:13
Als je wat literatuur erbij wilt, aan de Universiteit Utrecht wordt in het vak Computerarchitectuur & Netwerken ook aandacht besteed aan assemblerprogrammeren, zie o.a. de publiek beschikbare dictaat en de emulator die door deze dictaat wordt gebruikt: Simple Stack Machine.

Acties:
  • 0 Henk 'm!

  • Koppensneller
  • Registratie: April 2002
  • Laatst online: 22:46

Koppensneller

winterrrrrr

kutagh schreef op dinsdag 11 augustus 2015 @ 12:49:
Als je wat literatuur erbij wilt, aan de Universiteit Utrecht wordt in het vak Computerarchitectuur & Netwerken ook aandacht besteed aan assemblerprogrammeren, zie o.a. de publiek beschikbare dictaat en de emulator die door deze dictaat wordt gebruikt: Simple Stack Machine.
Aan de Radboud Universiteit wordt die SSM ook gebruikt in het vak Compiler Construction :)

Acties:
  • 0 Henk 'm!

  • anboni
  • Registratie: Maart 2004
  • Laatst online: 18:41
Als je doel is om 'computers beter te gaan begrijpen', is assembly leren misschien nog niet eens de meest voor de hand liggende aanpak. De oudere boeken van bijv. Andrew Tanenbaum zijn denk ik een interessanter uitgangspunt. Ik weet niet meer precies welke boeken ik van hem heb gelezen, maar die hebben voor mij zeker een bruikbare basis gelegd.

Of je gaat TIS-100 spelen ;) Kun je met hele simpele opdrachten gaan uitpuzzelen hoe je op dergelijk laag niveau problemen moet aanpakken.

[ Voor 21% gewijzigd door anboni op 11-08-2015 13:15 ]


Acties:
  • 0 Henk 'm!

  • gekkie
  • Registratie: April 2000
  • Laatst online: 22:19
Ooit nog eens een boek van Peter Norton gehad over assembly op de 808x .. fijn direct in het videogeheugen schrijven :)
Fancy de cover heeft zelfs de hedendaagse tijd gehaald: https://images.duckduckgo...ton-assembly-book.jpg&f=1

[ Voor 45% gewijzigd door gekkie op 11-08-2015 13:20 ]


Acties:
  • 0 Henk 'm!

  • Squ1zZy
  • Registratie: April 2011
  • Niet online
Assembly.. Ben er dagelijk mee bezig en was mijn eerste programmeertaal. De enige taal die ik goed wil leren kennen.

Er is maar 1 boek die ieder x86 Assembly Programmer moet hebben:

http://www.bol.com/nl/p/t...anguage/1001004007115969/

The Art of Assembly Language van Randall Hyde!

Zoals al aangegeven: Noem het a.u.b. geen assembleertaal en vergeet nederlandse boeken..

Overigens zie ik dat sommige Commodore, AVR of PIC aanraden. Dit zou ik zelf niet doen. Ik zou toch echt bij x86 beginnen.

Als je wilt weten "hoe een computer werkt" is Assembly niets voor jou. Zeker niet als beginner.

Wil je weten hoe een computer ECHT werkt? Koop het volgende boek van een goede kennis van me:

http://www.bol.com/nl/p/but-how-do-it-know/9200000020295972/

But how do it know van John Scott. Daarin legt John uit hoe een computer nou echt werkt. Zeer makkelijk weg te lezen al wordt het bij sommige hoofdstukken wel even 2x lezen.

Hier wordt op ingezoomed wat een CPU is (AND, OR, NAND gates etc) en bouwt zo zelf een "computer".

Acties:
  • 0 Henk 'm!

  • downtime
  • Registratie: Januari 2000
  • Niet online

downtime

Everybody lies

Code is een vergelijkbaar boek als je in lekentaak wilt horen hoe een computer nu precies werkt.

http://www.bol.com/nl/p/code/1001004000608279/

Acties:
  • 0 Henk 'm!

  • TunderNerd
  • Registratie: November 2011
  • Laatst online: 13-10 12:50
Leuke beginners PIC is de 16f628. Lekker weinig instructies etc. Programmers koop je voor 20 euro. Succes!

Acties:
  • 0 Henk 'm!

  • elhopo
  • Registratie: December 2005
  • Laatst online: 10-10 08:46
Ik zou het gewoon op de x86 instructieset houden. Met de int21 functies kan je dan prima iets uitlezen en dat vervolgens manipuleren, en dan weer op het scherm tonen (of op disk wegschrijven). Als laatste sluit je dan het programma weer af. Voordelen zijn dat je geen aparte hardware hoeft aan te schaffen, makkelijk kan debuggen, snel foutjes weer kan herstellen en opnieuw testen zonder PIC's of AVR's opnieuw te programmeren. Voor x86 assembly zijn genoeg tools te krijgen.

Probeer wel een doel voor ogen te hebben, zomaar iets gaan schrijven werkt vaak niet zo goed. Assembly is niet zo lastig om te leren, maar het lastige is wel dat je alle structuren zelf moet bijhouden. In kleine programmaatjes is dat nog wel te doen, maar in wat grotere ingewikkeldere dingen is het al veel lastiger.

Blijkt dat citroenvlinders helemaal niet naar citroen smaken.


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 00:16

.oisyn

Moderator Devschuur®

Demotivational Speaker

TunderNerd schreef op dinsdag 11 augustus 2015 @ 14:42:
Leuke beginners PIC is de 16f628. Lekker weinig instructies etc. Programmers koop je voor 20 euro. Succes!
Als je op die toer gaat kun je beter voor een development bordje kiezen zoals Arduino of Teensy. Betaal je ook €20 maar kun je een stuk meer mee en de drempel is een stuk lager.

Maar goed, dat was het doel ook niet echt. Voor het leren van assembly zou ik die dingen absoluut niet aanraden, want debugmogelijkheden zijn beperkt. Je wilt een debugger gebruiken die je instructie voor instructie kunt laten steppen en waarbij je op elk moment inzicht hebt in alle registers. x86 ligt daarbij dus voor de hand, omdat je dat gewoon op je eigen PC kunt draaien. Maar je kunt idd ook gaan voor andere platforms, als er maar handige emulators met debugging mogelijkheden beschikbaar zijn.

Kijk voor de grap eens naar Yasp, een webbased assembly emulator met geïntegreerde debugger :)

[ Voor 5% gewijzigd door .oisyn op 11-08-2015 15:02 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • maniak
  • Registratie: Augustus 2000
  • Laatst online: 21-09 08:52
90 NOP ;)

Acties:
  • 0 Henk 'm!

  • Naj_Geetsrev
  • Registratie: Oktober 2002
  • Laatst online: 21-07 13:18
anboni schreef op dinsdag 11 augustus 2015 @ 13:13:

Of je gaat TIS-100 spelen ;) Kun je met hele simpele opdrachten gaan uitpuzzelen hoe je op dergelijk laag niveau problemen moet aanpakken.
Die game wou ik ook adviseren! Lijkt mij de beste (en leukste!!) manier om de basis beginselen van assembly jezelf aan te leren.

Acties:
  • 0 Henk 'm!

  • heuveltje
  • Registratie: Februari 2000
  • Laatst online: 02:09

heuveltje

KoelkastFilosoof

Dat . want IMHO is assembly x86 en fun nu niet iets wat echt compatible is :P

Heuveltjes CPU geschiedenis door de jaren heen : AMD 486dx4 100, Cyrix PR166+, Intel P233MMX, Intel Celeron 366Mhz, AMD K6-450, AMD duron 600, AMD Thunderbird 1200mhz, AMD Athlon 64 x2 5600, AMD Phenom X3 720, Intel i5 4460, AMD Ryzen 5 3600 5800x3d


Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 00:53
.oisyn schreef op dinsdag 11 augustus 2015 @ 14:59:
[...]
Maar goed, dat was het doel ook niet echt. Voor het leren van assembly zou ik die dingen absoluut niet aanraden, want debugmogelijkheden zijn beperkt. Je wilt een debugger gebruiken die je instructie voor instructie kunt laten steppen en waarbij je op elk moment inzicht hebt in alle registers.
ARM Cortex-M based MCU's (dat zijn ze bijna allemaal behalve PIC en de achterhaalde 8 bit AVR's) hebben prima debug mogelijkheden door de ingebouwde Debug Access Port, waar veelal met een JTAG/SWD probe mee verbonden kan worden. (Data)breakpoints, single (assembly)step, register views etc is allemaal inbegrepen.

Een discovery kitje van 20 euro heeft MCU + JTAG debugger aan boord en kan zonder moeite via USB worden aangesloten. Software is veelal gratis en voor Windows en Linux beschikbaar.

Ik denk dat het een hele goede optie zou zijn, ook al omdat de instructieset redelijk overzichtelijk is en het redelijk snel tot een leuk resultaat leidt : knipperende LEDjes en dat soort dingen.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • 0 Henk 'm!

  • bartbart333
  • Registratie: Juni 2013
  • Laatst online: 11-06-2024
Als je trouwens wilt leren hoe een computer werkt kan je ook deze video's kijken:
YouTube: Stepping through a program on the 8-bit breadboard computer en YouTube: How A Computer Works AKA CPU Architecture Lets Build 8 Bit Computer Part 11
In de video's word duidelijk uitgelegd hoe een CPU werkt. Met de serie van het kanaal madmaxx zou je in principe ook zelf een simpele cpu kunnen bouwen van IC's met een eigen instructieset.

Acties:
  • 0 Henk 'm!

  • Sissors
  • Registratie: Mei 2005
  • Niet online
farlane schreef op dinsdag 11 augustus 2015 @ 17:47:
[...]

ARM Cortex-M based MCU's (dat zijn ze bijna allemaal behalve PIC en de achterhaalde 8 bit AVR's) hebben prima debug mogelijkheden door de ingebouwde Debug Access Port, waar veelal met een JTAG/SWD probe mee verbonden kan worden. (Data)breakpoints, single (assembly)step, register views etc is allemaal inbegrepen.

Een discovery kitje van 20 euro heeft MCU + JTAG debugger aan boord en kan zonder moeite via USB worden aangesloten. Software is veelal gratis en voor Windows en Linux beschikbaar.

Ik denk dat het een hele goede optie zou zijn, ook al omdat de instructieset redelijk overzichtelijk is en het redelijk snel tot een leuk resultaat leidt : knipperende LEDjes en dat soort dingen.
En die debuggers kosten geen drol. Officiele AVR is denk ik nog wel prijzig (al heb ik niet recent gekeken), maar zijn genoeg clones. ARM debuggers worden gratis bij een pak melk weggegeven. Elke grote ARM MCU fabrikant heeft goedkope dev boards (laten we zeggen, 10 tot 30 euro) waar behalve target, LEDjes en wat andere zaken ook een debugger bij zit.

Acties:
  • 0 Henk 'm!

  • Onbekend
  • Registratie: Juni 2005
  • Laatst online: 23:14

Onbekend

...

Ik zit nu te denken dat je in C++ ook gewoon inline assembly kan schrijven en half C++:

C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
void calcuAsm(int *x,int *y,int lengthOfArray)
{
    __asm
    {
        mov edi,TIMES
        start:
        mov esi,0
        mov ecx,lengthOfArray
        label:
        mov edx,x
        push edx
        mov eax,DWORD PTR [edx + esi*4]
        mov edx,y
        mov ebx,DWORD PTR [edx + esi*4]
        add eax,ebx
        pop edx
        mov [edx + esi*4],eax
        inc esi
        loop label
        dec edi
        cmp edi,0
        jnz start
    };
}


Je kunt hiermee eindeloos experimenteren zonder dat je extra hardware of andere software moet kopen, installeren en uitzoeken hoe het e.e.a. werkt.
Maak eerst iets kleins in C++, en probeer het na te maken in asm. :)

[ Voor 5% gewijzigd door Onbekend op 11-08-2015 22:57 ]

Speel ook Balls Connect en Repeat


Acties:
  • 0 Henk 'm!

  • TunderNerd
  • Registratie: November 2011
  • Laatst online: 13-10 12:50
.oisyn schreef op dinsdag 11 augustus 2015 @ 14:59:
[...]


Als je op die toer gaat kun je beter voor een development bordje kiezen zoals Arduino of Teensy. Betaal je ook €20 maar kun je een stuk meer mee en de drempel is een stuk lager.

Maar goed, dat was het doel ook niet echt. Voor het leren van assembly zou ik die dingen absoluut niet aanraden, want debugmogelijkheden zijn beperkt. Je wilt een debugger gebruiken die je instructie voor instructie kunt laten steppen en waarbij je op elk moment inzicht hebt in alle registers. x86 ligt daarbij dus voor de hand, omdat je dat gewoon op je eigen PC kunt draaien. Maar je kunt idd ook gaan voor andere platforms, als er maar handige emulators met debugging mogelijkheden beschikbaar zijn.

Kijk voor de grap eens naar Yasp, een webbased assembly emulator met geïntegreerde debugger :)
Debuggen op die dingen zelf is inderdaad niet fantastisch, maar de simulator is werkelijk geweldig. Zeker als je precies wilt zien wat er intern in de chip gebeurd! Alle registers zijn te volgen en door de 8 bits structuur zeer goed te volgen. Ik blijf er bij, de 16F628 is een heerlijk eenvoudige en leerzame chip!

Acties:
  • 0 Henk 'm!

  • Laurens-R
  • Registratie: December 2002
  • Laatst online: 29-12-2024
Onbekend schreef op dinsdag 11 augustus 2015 @ 22:56:
Ik zit nu te denken dat je in C++ ook gewoon inline assembly kan schrijven en half C++:

C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
void calcuAsm(int *x,int *y,int lengthOfArray)
{
    __asm
    {
        mov edi,TIMES
        start:
        mov esi,0
        mov ecx,lengthOfArray
        label:
        mov edx,x
        push edx
        mov eax,DWORD PTR [edx + esi*4]
        mov edx,y
        mov ebx,DWORD PTR [edx + esi*4]
        add eax,ebx
        pop edx
        mov [edx + esi*4],eax
        inc esi
        loop label
        dec edi
        cmp edi,0
        jnz start
    };
}


Je kunt hiermee eindeloos experimenteren zonder dat je extra hardware of andere software moet kopen, installeren en uitzoeken hoe het e.e.a. werkt.
Maak eerst iets kleins in C++, en probeer het na te maken in asm. :)
In het geval van Visual Studio: Laatste keer dat ik dit checkte kon dit niet meer in het geval van x64 builds, omdat Microsoft vind volgens MSDN je vergelijkbare optimalizaties met compiler intrinsics kan realiseren. Je kan ook evt. mbv MASM (word nog steeds meegeleverd en anders een assembler als NASM) met gecompileerde assembly linken.

Ik heb het ook een paar keer met GCC gedaan maar ik heb niet zoveel met de AT&T syntax. Vind de intel syntax prettiger.

[ Voor 5% gewijzigd door Laurens-R op 12-08-2015 13:23 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dank jullie wel jongens..

Ik ga een keuze maken met wat voor taal ik aan de slag ga :)!

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
downtime schreef op dinsdag 11 augustus 2015 @ 01:49:
Ik zou geen Commodore 64 nemen. Dat is investeren in een zwaar verouderde skill. Neem dan Raspberry. Die draait op ARM, een enorm populaire architectuur die bovendien relatief eenvoudig (want RISC-based) is, en waar zat actuele documentatie en tooling voor is. Je kunt er ook gewoon een modern OS als Linux of BSD op draaien.

Overigens is de ARM architectuur gedeeltelijk afgeleid van de 6502 die in de C64 zat. De 6502 zat namelijk ook in de BBC Micro en de ARM architectuur is ontwikkeld voor de opvolger van de BBC Micro omdat andere CPU's uit die periode niet voldeden.
Inderdaad, de Raspberry spreekt me nu wat meer aan :)! Dank u.

Ik zit te twijfelen met wat voor taal ik zal gaan beginnen, om het leuk te houden ga ik niet gelijk met x64 beginnen aangezien ik nog op mbo niveau gewend ben te studeren..

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
cytherea schreef op dinsdag 11 augustus 2015 @ 10:53:
Ik zat laatst ook met assembler the spelen en kwam deze emulator tegen: http://schweigi.github.io/assembler-simulator/index.html. Misschien om te beginnen en te leren hoe assembler werkt een leuke?
Dan kom je er meteen achter hoeveel werk het is om iets simpels te doen in assembler. Wel leuk om te leren hoe een processor werkt en hoe geheugen aangesproken wordt.
Geweldig, ik heb de link opgeslagen ;)!

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
kutagh schreef op dinsdag 11 augustus 2015 @ 12:49:
Als je wat literatuur erbij wilt, aan de Universiteit Utrecht wordt in het vak Computerarchitectuur & Netwerken ook aandacht besteed aan assemblerprogrammeren, zie o.a. de publiek beschikbare dictaat en de emulator die door deze dictaat wordt gebruikt: Simple Stack Machine.
Bedankt!

[ Voor 13% gewijzigd door Verwijderd op 17-08-2015 23:52 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
anboni schreef op dinsdag 11 augustus 2015 @ 13:13:
Als je doel is om 'computers beter te gaan begrijpen', is assembly leren misschien nog niet eens de meest voor de hand liggende aanpak. De oudere boeken van bijv. Andrew Tanenbaum zijn denk ik een interessanter uitgangspunt. Ik weet niet meer precies welke boeken ik van hem heb gelezen, maar die hebben voor mij zeker een bruikbare basis gelegd.

Of je gaat TIS-100 spelen ;) Kun je met hele simpele opdrachten gaan uitpuzzelen hoe je op dergelijk laag niveau problemen moet aanpakken.
Waaaat, er zijn gewoon assembly spelletjes o.o.

Deze moet ik aanschaffen haha!

Geweldig :D!

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Btw guys, is er iemand op de wereld die in binaire code kan programmeren haha.. :P

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik kan dit topic sluiten, er staat genoeg info in waar ik uit de voeten mee kan :D!

Dank jullie wel allemaal!

Wie mij nog een simpele assembly taal kan aanraden, zie ik graag een comment geven :D!

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Jeez. Had je daar nou echt negen (!!!) losse posts voor nodig? Als je de laatste bent die in een topic gereageerd heeft en je wil nog iets toevoegen, pas dan je laatste bericht even aan. Dit leest gewoon uitermate rot. Hele posts quoten alleen om "bedankt" te zeggen trouwens ook.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Sorry, ik was zo blij met de info die ik kreeg :D! Ik zal voortaan wat zorgvuldiger posten, nogmaals sorry.

[ Voor 101% gewijzigd door Verwijderd op 18-08-2015 11:11 ]


Acties:
  • 0 Henk 'm!

  • ZpAz
  • Registratie: September 2005
  • Laatst online: 12-10 20:50
Verwijderd schreef op dinsdag 18 augustus 2015 @ 00:02:
Btw guys, is er iemand op de wereld die in binaire code kan programmeren haha.. :P
Steve Wozniak schreef de BASIC interpreter op papier binair uit voor de Apple II.

Tweakers Time Machine Browser Extension | Chrome : Firefox


Acties:
  • 0 Henk 'm!

  • Laurens-R
  • Registratie: December 2002
  • Laatst online: 29-12-2024
ZpAz schreef op dinsdag 18 augustus 2015 @ 14:41:
[...]


Steve Wozniak schreef de BASIC interpreter op papier binair uit voor de Apple II.
Over twee uitersten gesproken :P Maarja als je voor het eerst een machine maakt heb je natuurlijk ook nog geen assembler klaar staan... (zeker gezien de tijd).

Acties:
  • 0 Henk 'm!

  • heuveltje
  • Registratie: Februari 2000
  • Laatst online: 02:09

heuveltje

KoelkastFilosoof

ook impressive :

De Originele Themepark Tycoon is geheel geschreven in assembler
Dat moet een *&()#$ zijn geweest om te debuggen :)

Heuveltjes CPU geschiedenis door de jaren heen : AMD 486dx4 100, Cyrix PR166+, Intel P233MMX, Intel Celeron 366Mhz, AMD K6-450, AMD duron 600, AMD Thunderbird 1200mhz, AMD Athlon 64 x2 5600, AMD Phenom X3 720, Intel i5 4460, AMD Ryzen 5 3600 5800x3d


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
ZpAz schreef op dinsdag 18 augustus 2015 @ 14:41:
[...]


Steve Wozniak schreef de BASIC interpreter op papier binair uit voor de Apple II.
Dat lijkt mij eerlijk gezegd BS. Wat voor vreemde editor moet je hebben om het binair te doen. Ik kan mij voorstellen dat het met een hex-editor o.i.d gedaan is, maar het lijkt mij nogal sterk dat hij echt 1'en en 0'en heeft lopen typen.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 00:16

.oisyn

Moderator Devschuur®

Demotivational Speaker

Je realiseert je dat er helemaal niet zoiets was als een "editor" in die tijd? De eerste programma's werden gewoon met de hand geschreven en ingevoerd. Pas als je een interpreter of compiler hebt kun je programmacode invoeren.

[ Voor 48% gewijzigd door .oisyn op 18-08-2015 16:30 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
.oisyn schreef op dinsdag 18 augustus 2015 @ 16:28:
Je realiseert je dat er helemaal niet zoiets was als een "editor" in die tijd?
Je bedoelt dat het in ponskaarten gemaakt werd o.i.d.?

Er moet toch iets van een editor zijn waarin hij het mee heeft ingevoerd. Ik snap en geloof best dat hij geen compiler heeft gebruikt, maar op de een of andere manier moet hij opcodes ingevoerd hebben, en binair lijkt mij niet de meest voor de hand liggende manier, maar ik kan het natuurlijk mis hebben.

[ Voor 26% gewijzigd door Woy op 18-08-2015 16:32 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 00:53
Die bestond uit schaar en plakband :P

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 00:16

.oisyn

Moderator Devschuur®

Demotivational Speaker

Woy schreef op dinsdag 18 augustus 2015 @ 16:30:
[...]

Je bedoelt dat het in ponskaarten gemaakt werd o.i.d.?
Steve Wozniak heeft in z'n eentje de Apple I computer ontworpen. Als je een processor en omliggend systeem werkt, dan heb je toch niet meteen automatisch een editor? 8)7
en binair lijkt mij niet de meest voor de hand liggende manier, maar ik kan het natuurlijk mis hebben.
Ik denk dat binair juist wel de meest voor de hand liggende manier is, omdat de variaties in opcodes vooral verschillen in de bits. Het is dus nogal onhandig om dat eerst om te gaan zitten rekenen.

Vergeet ook niet dat veel computers in die tijd, zoals de Altair 8800, geprogrammeerd moesten worden door simpelweg een set bit switches te togglen.
Programming the Altair was an extremely tedious process. The user toggled the switches to positions corresponding to the desired 8080 microprocessor instruction or opcode in binary, then used the 'DEPOSIT NEXT' switch to load that instruction into the next address of the machine's memory. They repeated this step until all the opcodes of a presumably complete and correct program were in place.

[ Voor 32% gewijzigd door .oisyn op 18-08-2015 16:44 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
.oisyn schreef op dinsdag 18 augustus 2015 @ 16:39:
[...]

Steve Wozniak heeft in z'n eentje de Apple I computer ontworpen. Als je een processor en omliggend systeem werkt, dan heb je toch niet meteen automatisch een editor? 8)7
Hij zal toch al iets van software op het systeem moeten hebben om het uberhaupt in te voeren, of hij moet het op een ander systeem gedaan hebben en de binary ergens op gezet hebben. Of het nou binair is of niet, er zal toch software moeten zijn die de toetsenbord aanslagen uitleest en ergens wegschrijft.
Ik denk dat binair juist wel de meest voor de hand liggende manier is, omdat de variaties in opcodes vooral verschillen in de bits. Het is dus nogal onhandig om dat eerst om te gaan zitten rekenen.
Ja, dat zou ik dan met een cheatsheet o.i.d. doen, het lijkt mij immers dat je eerst in een soort assembly achtige notatie het uitwerkt, en dan vertaald naar een representatie die je kunt invoeren.

Bijvoorbeeld het volgende:
code:
1
2
3
4
5
6
7
8
9
10
Assembly code:
mov ah, 2 
mov dx, 'a' 
int 21h 

Hex code
B4 02 B2 61 CD 21

Binair:
1011 0100 0000 0010 1011 0010 0110 0001 1100 1101 0010 0001

De hexcode lijkt mij een stuk eenvoudiger invoeren dan alle 1'en en 0'en
Vergeet ook niet dat veel computers in die tijd, zoals de Altair 8800, geprogrammeerd moesten worden door simpelweg een set bit switches te togglen.

[...]
Ok, daarmee was ik niet bekend. Je vraagt je wel af hoe daar uberhaupt werkende programma's uitgekomen zijn :X

[ Voor 15% gewijzigd door Woy op 18-08-2015 16:51 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 00:16

.oisyn

Moderator Devschuur®

Demotivational Speaker

Woy schreef op dinsdag 18 augustus 2015 @ 16:46:
[...]

Hij zal toch al iets van software op het systeem moeten hebben om het uberhaupt in te voeren
Die software was hij dus aan het maken 8)7
of hij moet het op een ander systeem gedaan hebben en de binary ergens op gezet hebben.
Zoals je kunt lezen had ie daar geen geld voor.
Of het nou binair is of niet, er zal toch software moeten zijn die de toetsenbord aanslagen uitleest en ergens wegschrijft.
Front panel? Hele basic (niet BASIC ;)) rom die het toetsenbord uitleest?
Ja, dat zou ik dan met een cheatsheet o.i.d. doen, het lijkt mij immers dat je eerst in een soort assembly achtige notatie het uitwerkt, en dan vertaald naar een representatie die je kunt invoeren.
Juist, en van assembly naar binary kan makkelijker zijn dan van assembly naar hexadecimal, afhankelijk van de opcode codering en handleiding. Veel informatie over welke registers je gebruikt of wat voor geheugenadressering je gebruikt staan gecodeerd in bits.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

heuveltje schreef op dinsdag 18 augustus 2015 @ 15:30:
ook impressive :

De Originele Themepark Tycoon is geheel geschreven in assembler
Dat moet een *&()#$ zijn geweest om te debuggen :)
Je bedoelt RollerCoaster Tycoon volgens mij, en zelfs die werd vooraf gegaan door de wat benodigde rekenkracht (voor routeberekeningen) veel zwaardere Transport Tycoon. ;)

Maar laten we het erop houden dat het ten tijde van RCT al ongebruikelijk was om assembly nog te gebruiken voor het maken van games van dat caliber. 20 jaar later is het al helemaal ongebruikelijk. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
.oisyn schreef op dinsdag 18 augustus 2015 @ 16:54:
[...]

Die software was hij dus aan het maken 8)7
De BASIC interpreter is wel wat anders (meer) dan invoer software.
Front panel? Hele basic (niet BASIC ;)) rom die het toetsenbord uitleest?
Als je een basic rom hebt gemaakt die binary in kan lezen dan is een rom die hexcodes inleest net zo eenvoudig te fabriceren.

Zeker als het via een frontpanel/bit-switches zou gaan zou ik denk eerst een simpele input/write-loop rom bouwen zodat het invoeren van je complexe programma eenvoudiger en sneller kan gaan.
Juist, en van assembly naar binary kan makkelijker zijn dan van assembly naar hexadecimal, afhankelijk van de opcode codering en handleiding. Veel informatie over welke registers je gebruikt of wat voor geheugenadressering je gebruikt staan gecodeerd in bits.
Mja, voor register waardes e.d. kan ik mij daar wat bij voorstellen, maar dan nog is het IMHO een stuk sneller en minder foutgevoelig om dat hexadecimaal in te voeren.

Maar hoe dan ook, het zal either way een crime geweest zijn om te doen :)

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Jongens, ik wil dus heel graag op assembly niveau kunnen programmeren. Kan iemand mij helpen met wat voor voorkennis ik precies nodig moet hebben om uberhaupt te kunnen begrijpen wat er gebeurd tijdens het programmeren?

Momenteel volg ik nog een mbo opleiding, applicatieontwikkeling en wordt hier nog niet verder op in gegaan bij het leren programmeren behalve dat we leren scripten.

Acties:
  • 0 Henk 'm!

  • H!GHGuY
  • Registratie: December 2002
  • Niet online

H!GHGuY

Try and take over the world...

Memory, memory, memory.

Computing gaat over data (en instructies zijn eigenlijk ook maar een speciale vorm van data).
Zowat alles in computerland wordt via een of andere vorm van geheugenadres aangesproken. Ook periferie zoals RS-232/UART controllers, I²C, SPI, PCI/AGP/PCIe, ... wordt via (speciale) addressen in het geheugen aangesproken (meestal dan registers genoemd).
Zie bijvoorbeeld http://cse.seu.edu.cn/peo...kuozhan/opb_uart16550.pdf voor de meest voorkomende controller.

Achter een geheugenadres zit ofwel echt geheugen (CPU memory of memory op een grafische kaart of ...) ofwel een chip die de data die je leest of schrijft op dat adres afvangt en het nodige werk verricht.
Zo simpel is het.

Daarvoor moet je echt geen assembly leren. Dan kun je beter enkele van die boeken van hierboven lezen.

ASSUME makes an ASS out of U and ME


Acties:
  • 0 Henk 'm!

  • downtime
  • Registratie: Januari 2000
  • Niet online

downtime

Everybody lies

Verwijderd schreef op zondag 23 augustus 2015 @ 18:46:
Jongens, ik wil dus heel graag op assembly niveau kunnen programmeren. Kan iemand mij helpen met wat voor voorkennis ik precies nodig moet hebben om uberhaupt te kunnen begrijpen wat er gebeurd tijdens het programmeren?
Gewoon een goed boek kiezen en beginnen. Niet alleen maar lezen maar vooral doen. Je gaat het nooit leren door hier te blijven posten.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
downtime schreef op zondag 23 augustus 2015 @ 21:14:
[...]

Gewoon een goed boek kiezen en beginnen. Niet alleen maar lezen maar vooral doen. Je gaat het nooit leren door hier te blijven posten.
Gelijk heb je, maar het is mijn intentie niet om alleen hier te blijven posten..
Pagina: 1