x86 Assembly Language From Ground Up™

1 Introduction

Getting Started
2 Setting Up the Development Environment
3 Coding Simple Assembly program
4 Installing a Syntax Highlighter

x86 Processors & Computer Architectures
5 Evolution of Intel Processors
6 Harvard Architecture vs Von Neumann Architecture

The Computing Device
7 Logic Gates
8 From Transistors to Operating Systems
9 Number Systems

The Programmer’s Model
10 Overview of x86 Data Types
11 Basic x86 Microcomputer Design
12 x86 Operating Modes
13 Overview of the x86 Registers
14 Coding One Register to Rule Them All
15 Overview of the x86 Flags
16 Overview of the Floating Point Unit
17 Overview of x86 Memory Models

Introduction to x86 Assembly Language
18 Notice
19 Overview of x86 Integers
20 Introduction to Directives and Instructions
21 Simple x86 Assembly Template
22 Coding Declaring Variables in Assembly
23 Dealing with Data
24 Endianness
25 Notice
26 Coding Mixing CC++ and Assembly

Data Transfer Instructions
27 Operand Types
28 Overview of the MOV Instruction
29 Understanding Direct – Offset Operands
30 Memory Addressing Modes

Arithmetic Instructions
31 Notice
32 The Increment and Decrement Instructions
33 The Addition and Subtraction Instructions
34 Data Operators and Directives
35 Coding Summing Array Elements
36 Coding Scanning an Array
37 Coding Using Pointers and Typedef

Conditional Branching
38 The Jump and Loop Instructions
39 Logic Instructions
40 Condition Jump Instructions
41 Instruction Operands

The Nature of Mixing CC++ and Assembly
42 Notice
43 Coding Computing the Sum of an Array
44 Coding Computing Signed Multiplication and Division
45 Coding Understanding CC++ Calling Conventions
46 Coding Experimenting with different Addressing Modes
47 Coding Declaring Global Variables in CC++ and using them in Assembly
48 Coding Experimenting with Conditional Codes

Working with Arrays
49 Coding Iterating through Array Elements
50 Coding Array Elements Square
51 Coding Working with 2-Dimensional Arrays
52 Coding Computing the Sum of Rows and Columns of a 2-Dimensional Array

Working with Strings
53 Coding Copying Strings from one Variable to another
54 Coding Creating a Character Search Algorithm

Programming with the Floating -Point Unit (FPU) Registers
55 Overview of the x86 FPU
56 Coding Writing a temperature conversion program using the FPU
57 Coding Developing the Sphere Computation Algorithm
58 Coding Processing Floating-Point Arrays with FPU Instructions
59 Coding Computing Min and Max of Single-Precision Floating Point Arrays
60 Coding Developing Algorithms with x86 FPU Transcendental Instructions
61 Coding Developing the Least Squares Algorithm

Programming with the x86 MMX Extensions
62 Coding SIMD Arithmetic with Packed Data using MMX Registers (Part I)
63 Coding SIMD Arithmetic with Packed Data using MMX Registers (Part II)
64 Coding Shift Operations with Packed Data using MMX Registers
65 Coding Understanding MMX Multiplication

Programming with the x86 SSE Extentsions
66 History of SSE
67 The SSE Execution Environment
68 Coding Understanding SSE Floating-Point Arithmetic
69 Coding Developing the Sphere Algorithm using SSE Instructions
70 Coding SSE Packed Integer Arithmetic

Programming with the x86 Advanced Vector (AVX) Extensions
71 History of AVX

72 Closing Remarks

Leave a Reply

Your email address will not be published. Required fields are marked *