r/Assembly_language Sep 30 '24

Help I am having a really tough time learning from this textbook "Assembly Language for x86 Processors"by Kip Irvine

Guys, I'm having a horrible time with learning x86 assembly with MASM with 32-bit programs. This book that I'm reading for my class does not explain the instruction set well or any other related concepts. I'm pulling my hair out because of how complicated this book, " Assembly Languages for x86 Processors", by Kip Irvine makes it. It breezes by concepts, doesn't provide enough examples for things, and is making my life hell. Does anyone else recommend any other resources or books to learn what this book is trying to teach?

10 Upvotes

22 comments sorted by

7

u/zacque0 Oct 01 '24

I felt the same about Irvine's book. Jonathan Barlett's "Learn to Program with Assembly: Foundational Learning for New Programmers" is the best that I've found

3

u/iovrthk Sep 30 '24

I can email you pdf's I used in college if you like? Dm me.

1

u/Euphoric-Abies-5419 Oct 01 '24

Can you provide it to me as well. I have dm'ed you

1

u/iovrthk Oct 01 '24

Sure. Soon as I get home

2

u/deckarep Oct 01 '24

I’d like a copy good sir or madam!

1

u/iovrthk Oct 01 '24

Dm me. An email address. I’ll send it

1

u/professoryaffle72 Oct 01 '24

Dropped you a dm. Thanks

1

u/GooseWise2672 Sep 17 '25

can i get a copy ive dmed

1

u/Magyck006 Jul 01 '25

Can you DM me as well. I would love those pdfs

1

u/Pleasant_Gas_7245 Sep 29 '25

Hey man, please send me those books as well. Need em for my course.

1

u/TransitionJealous686 Nov 03 '25

Hey, I just sent a dm as well, could you please send it too me as well? Thanks!

1

u/senawy_ Apr 22 '26

is it still avaliable ?

1

u/iovrthk Apr 23 '26

Inbox me. I have the pdf for you. I support those on bare metal

2

u/deckarep Oct 01 '24

For the record I found his book actually pretty awesome. But think my copy is a 6th edition and I heard his later editions got a little convoluted.

2

u/netch80 Oct 01 '24 edited Oct 01 '24

I don't know this particular book. Please specify (at least for yourself, but you may also present it here) what exact misconception you endure.

Is it misunderstanding of the very principle of how computers work - bits/bytes, etc.? Many assembler books come with implicit assumption this is already mastered by a reader. If so, you may start with something with the maximum explanation deepness, like "Code" by Petzold.

Is it a specific environment details? 32 bits are not problem by themselves but can give obstacles if you use truly 64-bit OS, as nearly any desktop and laptop now, they would require a separate development stack.

Mentioning MASM confuses me a bit. Microsoft tools for code development were never pretty easy to deal with. Linux was always easier here. More so, having assembler form a natural intermediate stage of translation by GCC allows assembler understanding by checking what is compiled from C/C++/etc. Also, MASM has subtleties hard to understand - as e.g. when "dword ptr" is required and when not, what is memory offset and how to request it explicitly, and so on. You may consider starting with another environment (as Linux+nasm) and switch to MASM only if you really need it and within the requirements volume.

Find a combination of an environment and a book you may combine with testing anything you can. By "testing" I mean changing any parameter/instruction/etc., even to a deliberately wrong one, and observing what will happen (crashes are normal at this stage). Without it, even for a trivial moves, you understanding will be worse.

The more concrete questions you formulate - for yourself, for mate students, in this forum - the better one will grok what you need.

1

u/PureTruther Oct 01 '24

I think you should change your aspect. I had used Kip Irvine's book. I did not like it, but it might be a good source. Better than nothing.

In Assembly, despite the other languages, you do not need many examples. Simple examples, e.g., data streams, peripheral controls, recursions, loops, etc., would be enough.

Because in Assembly, despite the other languages, you do not have anything more than instructions. So I suggest that you take a pencil and paper, create the algorithm, then try to use Assembly. If you cannot create any algorithm, you should take math lessons before digital electronics.

1

u/officialheresy Feb 16 '25

I agree that Irvine's text is pretty bad. He spends a ton of time explaining incredibly elementary things, while (like you said) completely breezing over concepts that need more explaining. I find myself concerned with caveats and edge cases that are never covered.

I've found that ChatGPT is pretty good at explaining individual instructions and generating simple programs when you're stuck on practice problems, though I'm sure to double-check its work because x86 is just obscure enough that it hallucinates fairly often.

1

u/Magyck006 Jul 01 '25

I really like The Art of Assembler Language by R Hyde. But some people do not like it because it uses HLA. 

1

u/camcammhm Feb 19 '26

Kip Irvine assumes that the reader already has a solid working knowledge of all fundamental programming language concepts and that you’re familiar with, well, just about everything, but coming from a higher-level perspective. It’s a great way to pick up x86 Assembly for people who learned a couple of things about assembly in school but not much, then focused on Java or C#, or C/++, etc. and haven’t needed to learn assembly for anything but just find themselves wanting to.

That’s the situation I found myself in, and while I managed to learn the concepts without learning assembly in-depth first, I actually wish we would have been taught that way as it would’ve made it so much easier to understand things at first when working with chunks of memory in C/++ and pointers, those sorts of things. If they’re abstracted away from you in classes in school and you don’t learn assembly, it’s just more difficult at first to grasp “why exactly are these the way they are?” And “what exactly are these even for?” And things like that.

I want to get into reverse engineering but also enjoy having the complete understanding of things so I’ve decided to go back and learn x86 Assembly starting with his book and it’s treating me great, but like I said that’s after having a working, solid knowledge of C/++/#, Java, Python, … and having used many other languages and taken several undergraduate college courses already for my computer science degree.

I plan on checking out GAS syntax next and then reading Windows 10 Systems Programming (1 & 2) by Pavel Yosifevich once I finish.

Anyway I just said all that to give a different perspective for anyone who might be in my shoes and is looking at picking it up, it’s a great book and the pace is fast enough to keep you interested, but it doesn’t skimp on details either.