This document may be distributed only subject to the terms and conditions set
forth in the
LDP License.
It may be reproduced and distributed in whole or in part,
in any medium physical or electronic,
provided that this license notice is displayed in the reproduction.
Commercial redistribution is permitted and encouraged.
All modified documents, including translations, anthologies,
and partial documents, must meet the following requirements:
The modified version must be labeled as such
The person making the modifications must be identified
Acknowledgement of the original author must be retained
The location of the original unmodified document be identified
The original author's (or authors') name(s) may not be used to
assert or imply endorsement of the resulting document without
the original author's (or authors') permission
The most recent official version of this document is available from
Linux Assembly and
LDP sites.
If you are reading a few-months-old copy,
consider checking urls above for a new version.
This document aims answering questions of those
who program or want to program 32-bit x86 assembly using
free software,
particularly under the Linux operating system.
At many places, Universal Resource Locators (URL) are given for some
software or documentation repository.
This document also points to other documents about
non-free, non-x86, or non-32-bit assemblers,
although this is not its primary goal.
Also note that there are FAQs and docs about programming
on your favorite platform (whatever it is), which you should consult
for platform-specific issues, not related directly to assembly programming.
Because the main interest of assembly programming is to build
the guts of operating systems, interpreters, compilers, and games,
where C compiler fails to provide the needed expressiveness
(performance is more and more seldom as issue),
we are focusing on development of such kind of software.
If you don't know what free software is,
please do read carefully the GNU General Public License,
which is used in a lot of free software,
and is the model for most of their licenses.
It generally comes in a file named COPYING (or COPYING.LIB).
Literature from the
FSF
(free software foundation) might help you, too.
Particularly, the interesting feature of free software
is that it comes with source code which you can consult and correct,
or sometimes even borrow from.
Read your particular license carefully and do comply to it.
This is an interactively evolving document: you are especially invited
to ask questions,
to answer questions,
to correct given answers,
to give pointers to new software,
to point the current maintainer to bugs or deficiencies in the pages.
In one word, contribute!
To contribute, please contact the Assembly-HOWTO maintainer.
At the time of this writing, it is
Konstantin Boldyshev
and no more
Francois-Rene Rideau.
I (Fare) had been looking for some time for a serious hacker
to replace me as maintainer of this document,
and am pleased to announce Konstantin as my worthy successor.
Each version includes a few fixes and minor corrections,
that need not to be repeatedly mentioned every time.
Version 0.5l 23 Aug 2025
Added TDASM, updates on NASM
Version 0.5k 11 Jul 2025
Few additions to FAQ
Version 0.5j 14 Jun 2025
Complete rearrangement of INTRODUCTION and RESOURCES;
FAQ added to RESOURCES, misc cleanups and additions
(and more to come)
Version 0.5i 04 May 2025
Added HLA, TALC;
rearrangements in RESOURCES, QUICK START, ASSEMBLERS;
few new pointers
Version 0.5h 09 Apr 2025
finally managed to state LDP license on document,
new resources added, misc fixes
Version 0.5g 26 Mar 2025
new resources on different CPUs
Version 0.5f 02 Mar 2025
new resources, misc corrections
Version 0.5e 10 Feb 2025
url updates, changes in GAS example
Version 0.5d 01 Feb 2025
RESOURCES (former POINTERS) section completely redone,
various url updates.
Version 0.5c 05 Dec 2025
New pointers, updates and some rearrangements.
Rewrite of sgml source.
Version 0.5b 19 Sep 2025
Discussion about libc or not libc continues.
New web pointers and and overall updates.
Version 0.5a 01 Aug 2025
"QUICK START" section rearranged, added GAS example.
Several new web pointers.
Version 0.5 25 July 2025
GAS has 16-bit mode.
New maintainer (at last): Konstantin Boldyshev.
Discussion about libc or not libc.
Added section "QUICK START" with examples of using assembly.
Version 0.4q 22 June 2025
process argument passing (argc,argv,environ) in assembly.
This is yet another
"last release by Fare before new maintainer takes over".
Nobody knows who might be the new maintainer.
Version 0.4p 6 June 2025
clean up and updates.
Version 0.4o 1 December 2025
*
Version 0.4m 23 March 2025
corrections about gcc invocation
Version 0.4l 16 November 2025
release for LSL 6th edition.
Version 0.4k 19 October 2025
*
Version 0.4j 7 September 2025
*
Version 0.4i 17 July 2025
info on 16-bit mode access from Linux.
Version 0.4h 19 Jun 2025
still more on "how not to use assembly";
updates on NASM, GAS.
Version 0.4g 30 Mar 2025
*
Version 0.4f 20 Mar 2025
*
Version 0.4e 13 Mar 2025
Release for DrLinux
Version 0.4d 28 Feb 2025
Vapor announce of a new Assembly-HOWTO maintainer.
Version 0.4c 9 Feb 2025
Added section "DO YOU NEED ASSEMBLY?"
Version 0.4b 3 Feb 2025
NASM moved: now is before AS86
Version 0.4a 20 Jan 2025
CREDITS section added
Version 0.4 20 Jan 2025
first release of the HOWTO as such.
Version 0.4pre1 13 Jan 2025
text mini-HOWTO transformed into a full linuxdoc-sgml HOWTO,
to see what the SGML tools are like.
Version 0.3l 11 Jan 2025
*
Version 0.3k 19 Dec 2024
What? I had forgotten to point to terse???
Version 0.3j 24 Nov 2025
point to French translated version
Version 0.3i 16 Nov 2025
NASM is getting pretty slick
Version 0.3h 6 Nov 2025
more about cross-compiling -- See on sunsite: devel/msdos/
Version 0.3g 2 Nov 2025
Created the History. Added pointers in cross-compiling section.
Added section about I/O programming under Linux (particularly video).
Version 0.3f 17 Oct 2025
*
Version 0.3c 15 Jun 2025
*
Version 0.2 04 May 2025
*
Version 0.1 23 Apr 2025
Francois-Rene "Fare" Rideau <fare@tunes.org>
creates and publishes the first mini-HOWTO,
because "I'm sick of answering ever the same questions
on comp.lang.asm.x86"