i386 Assembly Language and Architecture

What you mainly need to know for this course is how to read the assembly language produced by a compiler. We will not be writing programs in assembly language, but we will occasionally mix some assembly language with C in a program. The very best reference for this material is Chapter 3 from the textbook Computer Systems: A Programmer's Perspective, which is on reserve in the library. You can download a sample from their Chapter 3 and you can download the author's lecture notes for that chapter (see "Class 05" through "Class 09"). (You should also take a look at their C Primer.)

The links below describe the syntax for i386 assembly languages (there are, unfortunately, two different syntaxes in use) and the basics of the architecture of an i386 type CPU.

Intel and AT&T Syntax from Using Assembly Language in Linux
3.2.2. What is this AT&T syntax from Linux Assembly HOWTO
Sample Program from Introduction to Linux Intel Assembly Language
AT&T Syntax versus Intel Syntax from Using as The GNU Assembler
These are references to the assembly language syntax used by the GCC and Lcc-Win32 compilers (called the "AT&T syntax") and how it differs from Intel syntax used by Microsoft's compiler. See also Appendix 1 of the "Lcc-Win32 Technical Reference", by Jacob Navia, that comes with the Lcc-Win32 distribution.

MSDN - C++ Language Reference - Inline Assembler
Brennan's Guide to Inline Assembly
Inline assembly for x86 in Linux
A Brief Tutorial on GCC inline asm (x86 biased)
These are references to "inline assembly language" which is the mixing of assembly language source code into the source code of a C program. This is not part of standard C, so every compiler has its own syntax for how to place assembly language into a C source file.

IA-32 architecture at sandpile.org
Basic x86 Architecture
Intel Pentium Instruction Set
Intel x86 instruction set
x86 Instruction Set Reference
IntelCodeTable.pdf
mnemonix.exe from hutch's Programming Tools
Opcodes help file from hutch's Assembler References
8086 Processor Registers
IA-32 Intel Architecture Software Developer's Manuals from Intel
Intel i386 - Wikipedia
x86 - Wikipedia
x86 Assembly Language - Wikipedia
Information about the archtecture of the i386 family of CPU's.


Return to the CS 302 home page.


compliments and criticisms