I'm interested in learning Assembly language, specifically x86-64, MIPS, or Z80, but I have no computer science background. I understand the basics of computers and have dabbled with game mods, but I've never coded or programmed before. My goal isn't career-oriented—I'm just curious about ASM and want to read and understand it for personal projects. I've been leaning towards x86 since it seems more comprehensive, but I'm open to suggestions. Are there any good online courses or books that cater to someone like me with little to no background in computer science? I recently borrowed a book called *Assembly X64 Programming in Easy Steps: Modern Coding for MASM, SSE and AVX* from my library. How does that stack up against other resources?
5 Answers
If you're torn between assembly languages, going from x86 to MIPS could be a good way to learn. For theoretical understanding, nand2tetris.org offers a fantastic free course that dives into how assembly works and its fundamentals, which might help clarify your goals. Just a note, though—don't stress too much about choosing the right language immediately; the basics will transfer across different architectures.
I've heard great things about "The Art of 64 Bit Assembly" for x86_64. It's specifically designed for beginners and might be a good fit for you!
Thanks for the suggestions! I appreciate the input, especially regarding how different architectures compare. I'll definitely check out those resources.
I suggest looking into "Computer Organization and Design" by Patterson and Hennessy. It covers MIPS specifically and helps ease you into other architectures like Z80. As for x86, it's quite different, often seen as more complex. If your goal isn't professional, you might find more value in learning MIPS or Z80 first, as they can be easier to grasp.
You might want to check out microcorruption.com. It's a free interactive tutorial that focuses on MSP430 assembly. It's quite accessible even for beginners, so it could be a great start!

I agree! MIPS provides a cleaner learning curve. Once you understand it, transitioning to other assembly languages should be smoother.