Computers have arithmetical, logical, and control activities. A microprocessor manages these. Each microprocessor has a set of instructions for handling different operations. In order to program these, since we can’t use machine language (too hard and too obscure), we learn the low-level assembly language, to represent instructions in the symbolic code and make them more understandable.
Assembly language is basic. You have to learn it if you want to start programming from the ground up. So, to help you accomplish that, here are some great books to help.
Johanna Barlett brings us a really interesting way to see Assembly language in her book “Programming from the ground up”. This book is focused on Linux Assembly language and attempts to introduce new programmers into the world of programming.
Because it has a beginners focus, it is really easy to understand and you’ll be grasping the concepts quite fast. It will take you to step by step through concepts such as the operation of the processor, interaction of programs and the system, the internal representation of data within computers, how the processor views memory, etc.
The issue with this book is that x86 is rather outdated, and most beginners won’t work on it. However, any programmer with some experience will agree on the fact that it is imperative to be familiar with this language. Especially if you want to learn C, C++, or Objective-C.
Another advantage of this book is that it is really cheap, like on a ridiculous level when you compare it with others. So if you wanna learn the basics and get a taste, this book is definitely for you.
“The Art of Assembly Language” is a book written by Randall Hyde. This book helps us see Assembly Language from a high programmers point of view. It begins by explaining how macro language interfaces with Assembly, and really sets in the foundations for HLA (High- Level Assembly) before hitting x86 (which is a little more complex). High-level Assembly is the first assembler that allows you to write programs that are portable and will run under either Windows or Linux.
Another advantage this book has is the CD-room, which includes the HLA library, all the source code from the book you’ll need, and additional sample code. It’s very well documented and obviously tested.
This book is great for starting because it will actually help you learn the foundations and how Assembly Language works. Anyhow, it doesn’t really approach low-level assembly, if that’s what you’re looking for. Also, within Assembly books, it has a really reasonable price. This book will have you writing programs within days.
Modern X86 Assembly Language performing
“Modern x86 Assembly Language performing” is the book brought to us by Daniel Kusswurm. What this book will do is help you apply x86 into software development.
This book is definitely designed for beginners on the x86 part. It will explain the details that lay within it, like its core architecture, its data types, its registers, and its memory addressing modes. It also includes an instruction set that will help you create performance-enhancing functions. This can, later on, be of help cause it is callable for C++.
Each section will explain hardware architecture in detail. This is because Kusswurm claims, you can’t fully comprehend assembly language if you don’t understand what you’re programming for. The book also has an advantage over the others in the fact that it covers newer Intel technologies (SSE and AVX), so it avoids being obsolete.
Now if you’re a newbie in the programming world, this book might not be for you. The focus audience of it is more towards software developers seeking to create application programs for platforms based on Windows. It seeks to teach them how to write performance-enhancing algorithms and functions with x86 assembly language.
Assembly Language for x86 Processors
This book is probably one of the most used ones when it comes to Assembly Language, it is also the one with the most positive responses in Amazon and Goodreads. “Assembly Language for x86 Processors” is brought to us by Kip R. Irvine with the purpose of teaching students how to write and debug machine-level programs.
This book is written specifically for the Intel/Windows/DOS platform. And will totally help the reader put theory into practice. The topics progress logically and have questions and exercises at the end of each chapter to ensure full comprehension of the topics.
Most importantly, this book breaks down topics into digestible bits, you will not be confused by a lot of weird, long sentences about the language.
Anyhow, there are two problems with this book. First, it is definitely on the expensive side, even though it’s worth it. Second, it is recommended for readers to have previous knowledge on programming languages such as Java, C, or C++ to fully comprehend what the book tries to transmit.
Assembly Language Step-By-Step: Programming with Linux
“Assembly Language Step-By-Step: Programming with Linux” by Jeff Duntemann, is a book that seeks to engage new programmers into using Assembly. The book is a guide to Intel x86 assembly language under Linux, claiming it is the baseline for learning all the other programming languages.
The book begins with the most fundamental concepts and analogies and evolves into teaching more fancy assembly principles and practices. It will begin with binary math and take you step-by-step through computer architecture, data structures, and more. Later on, it will begin to focus on the practical applications of these. Examples provided are based on the 8086/8088 chips and the code is applicable into the entire Intel 80X86 family of microprocessors. It also covers both TASM and MASM.
The book is not as digestible as the others. Even when it is written for beginners, one might need to read the chapters more than once to fully understand what they’re trying to explain. However, once understood, this book will set quite a solid foundation for those who want to go for larger projects.
Assembly Language is not an easy one, especially considering most people try to learn it as beginners, but once grasped, all the other programming will be much easier. So, read your books, learn your Assembly and go out and program.