Poised Solutions Library

Poised Solutions Tech Library

assembly language
programming in Linux

Poised Solutions

Assembly Language Programming in Linux Book Review

Coding

IT Library

Assembly Language Programming in Linux

Assembly Language Programming in Linux

Amazon UKAmazon USA
Assembly Language Programming in Linux
Author:
Sivarama P. Dandamudi
Publisher:
Springer
Published:
2005
Pages:
527

Assembly Language Programming in Linux, is a great guide to the IA-32 instructions and Intel syntax based NASM assembler on a Linux kernel based system.

Assembly Language Programming in Linux, acts as both a good introduction to assembly programming and as a reference book. The only detraction from this well crafted book is the guide on Linux distro usage, it is understandable that this could be useful for an undergraduate only having to buy one book, but there are better texts on using Linux distros and for many it just is wasted space in a book of this nature thankfully only 68 pages are devoted to Linux installation.

Assembly Language Programming in Linux is laid out in a very logical nature, as one would expect from a book on assembly. Initially Assembly itself is introduced, then a detailed look at computer architecture from a programmer's perspective is given. Installation of Fedora Linux is then examined, followed by NASM (Netwide Assembler) usage, basic and advanced assembly language is covered and the appendices include; Number Systems, Character Representation and the IA-32 instruction set.


Assembly Language Programming in Linux Chapters

Assembly Language Programming in Linux Chapters
  1. Assembly Language
    • Introduction
    • What is Assembly Language?
    • Advantages of High-Level Languages
    • Why Program in Assembly Language?
    • Typical Applications
    • Summary
  2. Digital Logic Circuits
    • Introduction
    • Simple Logic Gates
    • Logic Functions
    • Deriving Logical Expressions
    • Combintational Circuits
    • Adders
    • Programmable Logic Devices
    • Arithmetic and Logic Units
    • Seqeuntial Circuits
    • Latches
    • Flip-Flops
    • Summary
  3. Memory Organization
    • Introduction
    • Basic Memory Operations
    • Types of Memory
    • Building a Memory Block
    • Building Larger Memories
    • Mapping Memory
    • Storing Multibyte Data
    • Alignment of Data
    • Summary
  4. IA-32 Architecture
    • Introduction
    • Processor Execution Cycle
    • Processor Registers
    • Protected Mode Memory Architecture
    • Real Mode Memory Architecture
    • Midex-Mode Operation
    • Which Segment Register to Use
    • Input / Output
    • Summary
  5. Installing Linux
    • Production
    • Partitioning Your Hard Disk
    • Installing Fedora Core Linux
    • Installing and Removing Software Packages
    • Mounting Windows File System
    • Summary
    • Getting Help
  6. Using Linux
    • Introduction
    • Setting User Preferences
    • System Settings
    • Working with the GNOME Desktop
    • Command Termina
    • Getting Help
    • Some General-Purpose Commands
    • File System
    • Access Permissions
    • Redirection
    • Pipes
    • Editing Files with Vim
    • Summary
  7. Installing and Using NASM
    • Introduction
    • Installing NASM
    • Generating the Executable File
    • Assembly Language Template
    • Input / Output Routines
    • An Example Program
    • Assembling and Linking
    • Summary
    • Web Resources
  8. Debugging Assembly Language Programs
    • Strategies to Debug Assembly Language Programs
    • Preparing Your Program
    • GNU debugger
    • Data Display Debugger
    • Summary
  9. A First Look at Assembly Language
    • Introduction
    • Data Allocation
    • Where are the Operands
    • Overview of Assembly Language Instructions
    • Our First Program
    • Illustrative Examples
    • Summary
  10. More on Assembly Language
    • Introduction
    • Data Exchange and Translate Instructions
    • Shift and Rotate Instructions
    • Definiing Constants
    • Macros
    • Our First Program
    • Illustrative Examples
    • When to Use the XLAT Instruction
    • Summary
  11. Writing Procedures
    • Introduction
    • What is a Stack?
    • Implementation of the Stack
    • Stack Operations
    • Uses of the Stack
    • Procedure Instructions
    • Our First Program
    • Parameter Passing
    • Illustrative Examples
    • Summary
  12. More on Procedures
    • Introduction
    • Local Variables
    • Our First Program
    • Multiple Source Program Modules
    • Illustrative Examples
    • Procedures with Variable Number of Parameters
    • Summary
  13. Addressing Modes
    • Introduction
    • Memory Addressing Modes
    • Arrays
    • Our First Program
    • Illustrative Examples
    • Summary
  14. Arithmetic Instructions
    • Introduction
    • Status Flags
    • Arithmetic instructions
    • Our First Program
    • Illustrative Examples
    • Summary
  15. Conditional Execution
    • Introduction
    • Uncodnitional Jump
    • Compare Instructions
    • Conditional Jumps
    • Looping Instructions
    • Our First Program
    • Illustrative Examples
    • Indirect Jumps
    • Summary
  16. Logical and Bit Operations
    • Introduction
    • Logical Instructions
    • Shift Instructions
    • Rotate Instructions
    • Bit Instructions
    • Our First Program
    • Illustrative Examples
    • Summary
  17. String Processing
    • String Representation
    • String Instructions
    • Our First Program
    • Illustrative Examples
    • Testing String Procedures
    • Summary
  18. ASCII and BCD Arithmetic
    • Introduction
    • Processing in ASCII Representation
    • Our First Program
    • Processing Packed BCD Numbers
    • Illustrative Example
    • Decimal Versus Binary Arithmetic
    • Summary
  19. Recursion
    • Introduction
    • Our First Program
    • Illustrative Examples
    • Recursion Versus Iteration
    • Summary
  20. Protected Mode Interrupt Processing
    • Introduction
    • A Taxonomy of Interrupts
    • Interrupt Processing in the Protected Mode
    • Exceptions
    • Software Interrupts
    • File I/O
    • Our First Program
    • Illustrative Examples
    • Hardware Interrupts
    • Direct Control of I/O Devices
    • Summary
  21. High Level Language Interface
    • Introduction
    • Calling Assembly Procedures from C
    • Our First Program
    • Illustrative Examples
    • Calling C Functions from Assembly
    • Inline Assembly
    • Summary
  22. Floating Point Operations
    • Introduction
    • Floating-Point Unit Organization
    • Floating-Point Instructions
    • Our First Program
    • Illustrative Examples
    • Summary
Assembly Language Programming in Linux Appendices
  1. Number Systems
    • Positional Number Systems
    • Conversion to Decimal
    • Comversion from Decimal
    • Binary / Octal / Hexadecimal Conversion
    • Usigned Integers
    • Signed Integers
    • Floting-Point Representation
    • Summary
  2. Character Representation
    • Characeter Representation
    • ASCII Character Set
  3. Programming Exercises
  4. IA-32 Instruction Set
    • Instruction Format
    • Selected Instructions
  5. Assembly Glossary
  6. Index

Assembly Language Programming in Linux, is written in a clear style, with well drawn diagrams and screen shots accurately guiding the reader simply through the various low level concepts explored. The editor has done a good job in bringing everything together and the index is very usable.

A CD is bundled with the book, that contains a file called io.mac. io.mac is used as an input output library, this allows the book to explore more advanced concepts without having to keep getting into the input and output structures in assembly. Creating your own input and output functions is a useful exercise in assembly coding and that information can be quite easily found elsewhere though.

There aren't many books on NASM (the Netwide Assembler) so Assembly Language Programming in Linux is a rare treasure. NASM uses the cleaner Intel assembly syntax as opposed to the AT&T syntax that is used in gas (GNU Assembler). NASM is always under development, and is a good assembler to use for assembly programs.

Assembly Language Programming in Linux overall is a good read, very informative and well written and diagrammed. If you are interested in assembly programming this makes a good introduction and useful for further work, so I rate this book quite highly, and give it 95%.

Assembly



















Poised Solutions Web Development and Web Design by Poised Solutions IT Practice

Guild of Developers  •  PantheonOS  •  Cyber Security