Learn Assembly Language

Assembly language is the foundation of compiler development!

This project is an introduction to 64-bit assembly language programming for the Intel® x86-64 family of processors. It uses clear and jargon-free termonology to help make learning assembly language easier and more effective.

Designed for novice to more experienced programmers, this project will appeal to software developers who appreciate detailed explanations and a variety of practical examples. Integrating assembly language instructions with high-level source code is intended to reduce the initial workload and enhance the skills necessary for writing a compiler.

Why use Assembly Language?

The value of assembly language is an age-old question often debated ad infinitum. The bottom line is that all high-level programming languages must be translated into machine instructions and someone must posses the basic knowledge to do this proficiently. Additionally, learning assembly language offers the programmer great power over system hardware because most high-level languages do not adequately exploit the advanced capabilities built into modern microprocessors.

Do stuff with assembly language not possible with high-level programming languages!

This project covers the following topics:

A Complete Learning Experience

Assembly is the one language that logically reflects every element of the computer's underlying hardware architecture. Assembly language is a critical foundation of software design and fundamental requirement for all serious programmers at some stage of application development. With this awareness in mind, the purpose of this project is to bring to the widest possible readership the latest ideas on 64-bit assembly language programming. We understand that most users are constrained by limited resources in which to learn new software design concepts. For this reason, a jargon-free approach is used to reduce the complexity and time it takes to learn assembly language programming.

The most engaging way to learn assembly language is in a command-line environment without an IDE.

Inline Assembly Language Programming

Exploit the x86-64 Microprocessor

This project is presented in three formats: softcover book, PDF document, and Windows help file. Each edition presents a straight forward approach to learning 64-bit assembly language programming. Designed to help novice programmers break through the complexity of mixed-mode programming, these publications differ from other assembly language offerings because they concentrate on inline assembly programming—embedding low-level assembly language mnemonics right in high-level source code. This project uses the Ada/PM programming language to write program code; however, the concepts can be applied to many other languages as well. Few resources teach you so much, so fast, and so clearly about 64-bit assembly language programming.

Project ➤

Note that Inline Assembly Language Programming focuses on the Windows® 64-bit operating system, Intel® x86-64 architecture, and NASM syntax. You will find no examples of MASM or GNU Assembler (GAS) syntax nor any reference to Linux, UNIX®, MS-DOS, CP/M, or Apple® operating systems. Inline assembly language instructions are used in mixed-mode programming format versus standalone assembly language programs.

PMzone Manuals are Focused on Novice Programmers

PMzone publications are written for novice programmers who have no programming experience at all as well as computer science students who have some experience in Ada, BASIC, C, Go, or other high-level programming language. It also helps greatly if programmers who read our books have some familiarity with the Windows operating system. All our publications apply our signature learn-by-doing approach.

Learning Approach

The learn-by-doing method presents most concepts in the context of both code snippets and complete working code where necessary. The following components are included in our approach: (1) programming manuals that cover basic concepts related to the subject material, (2) practical examples using industry-recommended coding techniques, (3) exercises to ensure essential knowledge has been internalized, (4) first-class tools to facilitate hands-on learning activities, and (5) links to professional software developers who can answer questions and provide assistance.

Why Program with Assembly?

As good as many high-level languages are today, they all have one thing in common, their instructions need to be translated into a form the underlying CPU can actually use. High-level syntax is for the convenience of the programmer, but someone has to deal with the code generators of language compilers. That means someone has to understand the architecture of the targeted microprocessor and write the assembly code the machine needs to do its job. As it turns out, the machine language that assemblers turn out is the only language microprocessors understand.

Rationale for Ada/PM

The goal of Ada/PM is to provide a specialized programming language that increases the likelihood of applications behaving as intended. To this end, Ada/PM contains simple syntax, adequate expressive power, strict security and safety checks, strong typing and syntax verifiability, and restricted aliasing and overloading.

Simple Syntax

Simple syntactic constructs reduces the risk of unintended surprises. A language with a large number of complex constructs is more difficult to learn than one with a smaller number of constructs. As such, simplicity increases understanding and program readability.

Hand-in-hand with simple syntax is feature multiplicity. That is, having more than one way to write a particular operation. Ada/PM takes the approach that there should be one best way to write an operation and having multiple ways makes compiler design exponentially harder to accomplish and programs harder to read.

Expressive Power

The expressive power of an imperative language has to do with the number of basic constructs available to a programmer that can be substituted with each other. For instance, the "if" key word can be easily written in terms of a "case" statement. Ada/PM optimizes expressive power by limiting the number of different ways an operation can be expressed in order to reduce syntax ambiguities and number of constructs.

Security and Safety

Ada/PM provides program security and safety through strong static and dynamic checks, array bounds checking, restrictions on the use of aliasing and overloading constructs, and proof verification functions. This ensures Ada/PM performs to its specifications under all programming conditions.

Sources of Information

Much of the resources devoted to assembly language are often outdated since few programmers actually use assembly language these days. They include a lot of MS-DOS stuff and do not cover 64-bit mode at all. This website focuses only on 64-bit assembly programming and does it in a manner that is easy to understand and easy to use.

Copyright © 2020 PMzone Software. All rights reserved. Terms of Use