|
Mainly, the reason for this tutorial is to make assembly programming easier, better and more practical by doing it in Linux instead of DOS. Also, it may teach you a bit of Linux while you're at it (unless you're already at home with it).
This tutorial is an introduction to coding assembly in Linux. There are two "versions" to accommodate various people:
- The Step-by-Step Guide: This version explains everything in detail. It assumes that you have done at least a little bit of DOS assembly, and that you have Linux on your computer (although you may not have used it much yet). Since not everyone may know how to use Linux, there are links to sections where I explain how to do basic things like use the terminal and the DOS-equivalent commands.
- The Quickstart: If you're in a hurry and just want to see a Linux assembly program, compile it and run it, this is for you. It assumes that you understand basic DOS assembly, and that you know how to use the terminal. Basically, it just points out the differences between a Linux and DOS assembly program with just enough explanation not to confuse you.
The assembler I'll be using is NASM (Netwide Assembler). Lots of the stuff in this tutorial came from other tuts and the NASM documentation – see the References section for more info.
Download as zipfile
Quickstart
1. Introduction
2. Why this Tutorial?
3. The Netwide Assembler (NASM)
3.1 A Note on Assemblers
3.2 Where do I get NASM?
4. Introduction to Linux Assembly
4.1 Main Differences Between DOS and Linux Assembly
4.2 The Parts of an Assembly Program
4.3 Linux System Calls
4.3.1 Reading the Manpages
4.4 "Hello World!" in Linux Assembly
4.5 Compiling and Linking
5. More Advanced Concepts
5.1 Command Line Arguments and the Stack
5.2 "Procedures" and Jumping
6. Conclusion
Appendix A. The terminal is your friend - how to use it
Appendix B. Installing NASM (and other stuff) on Linux
Appendix C. References
A book that covers both these topics and is a useful assembly reference is:
The Revolutionary Guide to Assembly Language Vitaly Maljugin, Jacov Izrailevich et al Wrox Press ISBN: 1-874416-12-5
Table of Contents
Overview of the 80x86 Family · Representation of numbers in binary · Registers · Segments and offsets · The Stack
Push and Pop: Two Instructions to use the Stack · Types of Operand · Some Instructions that you will need to know · Your first assembly program · Compilation Instructions
Making things easier · Keyboard Input · Printing a Character · Control Flow · Jump on Condition Instructions · Example Program
Some instructions that you need to know · Introduction to Procedures · Procedures that pass parameters · What are "Memory Models"? · Macros · Macros with parameters
File Functions · How to save the file handle · Using the FindFirst and FindNext Functions
String Instructions · How to find out the DOS Version · Multiple Pushes and Pops · The PUSHA/PUSHAD and POPA/POPAD Instructions · Using Shifts for faster Multiplication and Division · Loops · How to use a debugger
More output in text modes · Mode 13h · First check that mode 13h is possible · Setting the Video Mode · Some Optimizations
Trackback(0)
|