Foreword

Assembly language programmers often hear the question, “Why would you bother when there are so many other languages that are much easier to write and to understand?” There has always been one answer: you write assembly language because you can.

Free of any other assumptions, free of artificial structuring, and free of the restrictions that so many other languages impose on you, you can create anything that is within the capacity of the operating system and the processor hardware. The full capacity of the x86 and later x64 hardware is available to the programmer. Within the boundaries of the operating system, any structure that is imposed, is imposed by the programmer in the code design and layout that they choose to use.

There have been many good assemblers over time, but the use of the Microsoft assembler, commonly known as MASM, has one great advantage: it has been around since the early 1980s, and while others come and go, MASM is updated on an as-needed basis for technology and operating system changes by the operating system vendor Microsoft.

From its origins as a real-mode 16-bit assembler, over time and technology changes it has been updated to a 32-bit version. With the introduction of 64-bit Windows, there is a 64-bit version of MASM as well that produces 64-bit object modules. The 32- and 64-bit versions are components in the Visual Studio suite of tools and can be used by both C and C++ as well as pure assembler executable files and dynamic link libraries.

Randall Hyde’s original The Art of Assembly Language has been a reference work for nearly 20 years, and with the author’s long and extensive understanding of x86 hardware and assembly programming, a 64-bit version of the book is a welcome addition to the total knowledge base for future high-performance x64 programming.

—Steve Hutchesson

https://www.masm32.com/