An assembly language is a low-level programming language for a computer, or other programmable device. Assembly language is used by almost all modern desktop and laptop computers. It is as close to writing machine code without writing in pure hexadecimal. It is converted into executable machine code by a utility program referred to as an assembler.
Assembly language is infrequently used by programmers nowadays, but there are still good reasons to learn the language. It is the most powerful computer programming language available. While assembly language shares very little with high level languages (such as Java, C#, Python etc), and assembly languages for different CPU architectures often have little in common, it gives programmers the insight required to write effective code in high-level languages.
Assembly language is also used primarily for direct hardware manipulation, access to specialized processor instructions, or to address critical performance issues. Assembly is excellent for speed optimization.
Here’s our recommended tutorials to learn Assembly. If you’re looking for free Assembly programming books, check here.
1. x86 Assembly Guide by David Evans
This guide describes the basics of 32-bit x86 assembly language programming, covering a small but useful subset of the available instructions and assembler directives. There are several different assembly languages for generating x86 machine code. The one we will use in CS216 is the Microsoft Macro Assembler (MASM) assembler. MASM uses the standard Intel syntax for writing x86 assembly code.
2. A fundamental introduction to x86 assembly programming by Nayuki
Gain a solid understanding of the x86 ISA from basic principles.
3. Assembly Language by Milo
This web page examines assembly languages in a general manner. Specific examples of addressing modes and instructions from various processors are used to illustrate the general nature of assembly language.
4. Assembly Language Tutor by Hugo Perez Perez
This is an introduction for people who want to programming in assembler language.
5. Assembly Language Lab by Paul Hsieh
The main purpose of this page is for people who already know the some assembly and C to see why it is often very beneficial to use a direct assembly implementation over a pure C implementation
6. Easy 6502 by Nick Morgan
In this short ebook, the author shows you how to get started writing 6502 assembly language.
All tutorials in this series:
Free Programming Tutorials | |
---|---|
Java | General-purpose, concurrent, class-based, object-oriented, high-level language |
C | General-purpose, procedural, portable, high-level language |
Python | General-purpose, structured, powerful language |
C++ | General-purpose, portable, free-form, multi-paradigm language |
C# | Combines the power and flexibility of C++ with the simplicity of Visual Basic |
JavaScript | Interpreted, prototype-based, scripting language |
PHP | PHP has been at the helm of the web for many years |
Ruby | General purpose, scripting, structured, flexible, fully object-oriented language |
Assembly | As close to writing machine code without writing in pure hexadecimal |
Swift | Powerful and intuitive general-purpose programming language |
Groovy | Powerful, optionally typed and dynamic language |
Go | Compiled, statically typed programming language |
Pascal | Imperative and procedural language designed in the late 1960s |
Perl | High-level, general-purpose, interpreted, scripting, dynamic language |
R | De facto standard among statisticians and data analysts |
COBOL | Common Business-Oriented Language |
Scala | Modern, object-functional, multi-paradigm, Java-based language |
Fortran | The first high-level language, using the first compiler |
Scratch | Visual programming language designed for 8-16 year-old children |
Lua | Designed as an embeddable scripting language |
Logo | Dialect of Lisp that features interactivity, modularity, extensibility |
Rust | Ideal for systems, embedded, and other performance critical code |
Lisp | Unique features - excellent to study programming constructs |
Ada | ALGOL-like programming language, extended from Pascal and others |
Haskell | Standardized, general-purpose, polymorphically, statically typed language |
Scheme | General-purpose, functional, language descended from Lisp and Algol |
Prolog | General purpose, declarative, logic programming language |
Forth | Imperative stack-based programming language |
Clojure | Dialect of the Lisp programming language |
Julia | High-level, high-performance language for technical computing |
SQL | Access and manipulate data held in a relational database management system |
Erlang | General-purpose, concurrent, declarative, functional language |
VimL | Powerful scripting language of the Vim editor |
OCaml | General-purpose, powerful, high-level language |
Awk | Versatile language designed for pattern scanning and processing |
Racket | Platform for programming language design and implementation |
BASIC | Family of general-purpose, high-level programming languages |
CoffeeScript | A very succinct programming language that transcompiles into JavaScript |
LaTeX | Professional document preparation system and document markup language |
Elixir | Relatively new functional language that runs on the Erlang virtual machine |
Dart | Client-optimized programming language for fast apps |
ABAP | Advanced Business Application Programming |
F# | General purpose, strongly typed, multi-paradigm language. Part of ML |
Chapel | Parallel-programming language in development at Cray Inc. |
Dylan | Multi-paradigm language, supports functional & object-oriented programming |
D | General-purpose systems programming language with a C-like syntax |
Solidity | Object-oriented, high-level language for implementing smart contracts |
XML | Set of rules for defining semantic tags that describe the structure and meaning |
Vala | Object-oriented language with a self-hosting compiler that generates C code |
ECMAScript | Best known as the language embedded in web browsers |
Kotlin | Statically typed, general-purpose programming language with type inference |
TypeScript | Strict syntactical superset of JavaScript, adding optional static typing |
Markdown | Plain text formatting syntax designed to be easy-to-read and easy-to-write |
Pike | Interpreted, general-purpose, high-level, cross-platform, dynamic language |
HTML | HyperText Markup Language |
Factor | Dynamic stack-based language |
Objective-C | General purpose language which is a superset of C |
Standard ML | One of the two main dialects of the ML language |
Alice | Educational language with an integrated development environment |
Agda | Dependently typed functional language based on intuitionistic type theory |
Icon | High-level, general-purpose language |
PureScript | Small strongly, statically typed language with expressive types |
Tcl | Dynamic language based on concepts of Lisp, C, and Unix shells |
Eiffel | Object-oriented language |