What are some good resources to learn assembly Language?
GeneralThis forum is for non-technical general discussion which can include both Linux and non-Linux topics. Have fun!
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
What are some good resources to learn assembly Language?
Does anybody know where some good resources to learn Assembly.
The reason that I want to learn it is that I want to learn more about
the undercore of a Computer. Also if I want to write a device driver.
Also any type of expirence is a good think. I googled "Learning Assembly" and I didn't find anything good. Any Ideas
If you already know a compiled language like C or C++, why not try "gcc -S" and study the assembly language output? That's definitely a good way to go.
For whatever it's worth, I've found this book helpful:
Professional Assembly Language, Richard Blum
ISBN 0764579010
Does anybody know where some good resources to learn Assembly.
The reason that I want to learn it is that I want to learn more about
the undercore of a Computer. Also if I want to write a device driver.
Also any type of expirence is a good think. I googled "Learning Assembly" and I didn't find anything good. Any Ideas
Thanks for the help
John
You have to read books. Search online for old ones, because I dont think they come out anymore. On Usenet, there is a group: comp.lang.asm.x86 and one called I think alt.lang.asm which have discussion.
There are still I think lots of websites on assembly, including doing assembly lang on Linux.
Once I saw book called "the art of assembly language". It was 1360+ pages or something and seemed to cover almost everything about assembler. Unfortunately I don't know neither book's ISBN nor it's author (I saw it as a pdf, probably pirated and without front cover and author information). I recommend to search for that one.
Try to get some older books on game programming. Assembly was pretty much a must during the 90's for game programming, so these books give a relatively easy introduction and very visible examples. SAMS has had a few good books under this topic.
Assembly is different for each processor, so it's difficult to find a "one size fits all" reference book. For a rather academic approach I would suggest the old assembly books of Adam Osborne.
Using old books forever is not good. You'll get basics, but older books (especially written in 90s) won't cover SSE, SSE2, MMX, and other newer technologies. CPU industry goes forward, so it makes sense to keep your knowledge up-to-date.
Once I saw book called "the art of assembly language". It was 1360+ pages or something and seemed to cover almost everything about assembler. Unfortunately I don't know neither book's ISBN nor it's author (I saw it as a pdf, probably pirated and without front cover and author information). I recommend to search for that one.
Looks like the book I was talking about was an older edition of that one. I was talking about this (finally found it, but that's not pdf). Looks like author is "Randall Hyde" and it's not as new as I thought.
I started learning x86 assembler, too. The book "the art of assembly" looks a little bit strange, because the author is talking about HLA (High Level Assembler). The assembler code isn't the one, I know from other tutorials and from school, it another type of code.
Is there a good book for learning x86 assembler with intel or at&t syntax?
I started learning x86 assembler, too. The book "the art of assembly" looks a little bit strange, because the author is talking about HLA (High Level Assembler).
If I recall correctly, Intel had some tutorials. Unfortunately you will also need a copy of the specific x86 manual which describes the code set. Many operations are actually left unused by most operating systems and compilers. At any rate, you can practise writing and assembling the code, and invoking your code by linking to a C program. Keep in mind that while running an OS like Linux, you are in a low privilege mode and there are many instructions which you can't execute. Of course you can always fire up something like 'qemu' to execute the code you're playing with. You can also look at the GNU Assembler documentation.
The current models of Pentium etc are very complex so I'm not sure where best to start - maybe a simpler CPU like the ancient 8085 (and you can use simulators) and when your skills have improved you can move onto the x86 class? Unfortunately the assembly syntax changes although many concepts remain (code segment, data segment, etc). An x86 has numerous features not present in something like the 8085 - Floating Point Unit, virtual memory (part of the memory management unit), "hyperthread execution unit", multimedia extensions, etc etc.
The Apple2e emulator + BigMac are also a great tool set to play with; the 6502 is a very simple CPU. I have no idea how to (legally) obtain a copy of BigMac and the APple2e ROM images though, unless you still have your own copy from last century. My only complaint is that the emulator works very well - even assembling with BigMac takes forever! (Need a "full speed" option so BigMac compiles in seconds rather than minutes.)
@pinniped
An emulator is a great idea to learn assembly with simple processors. I started with 8086/8088 assembly, because I realized, that the current processors are complex. I'll take a look at processors like the 8085.
Thank you for the great tipps!
my suggestion is to start with a rudimentary processor (wdc65c02) and learn how to translate from assembly to machine language (and back to assembly) then move to a processor with more registers (m68k).
I like it a lot (actually better for a first intro than Art of Assembly, since that books goes into much detail from the very beginning. I would do PGU first, and AoA later)
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.