- Where is the asm_io.inc file referred to
in the tutorial?
It's not listed anywhere in the tutorial; however, it is in the source
zip files. The asm_io object file that asm_io.inc
requires is also in the source zip files.
- Why does the example code generate segmentation fault/coredumps
on RedHat 7.1?
Red Hat 7.1 includes an rpm for version 0.98.xx of NASM. However, this
is not a stable release! Get version 0.97 or a more recent
0.98 version and all will be fine.
- Can I use the examples with the Windows cygwin port of gcc?
The Cygwin gcc compiler port
seems to use the same object file format as Microsoft's Visual C/C++
compiler. So the Microsoft examples
should work with the Cygwin compiler. One person has
confirmed that it does, but I have not installed the Cygwin compiler
to confirm this myself.
- Can I use the examples with the Windows MinGW port of gcc?
Yes, but it will take some work. Like Cygwin, you will need to use the
Microsoft examples and use -f win32 when assembling
your code. However, NASM will by default create an object file with a .obj
extension. MinGW needs an extension of .o instead. So you can either rename
the files yourself or tell NASM to when it generates them. Example,
nasm -f win32 -o file.o file.asm
You can change lines 16 and 17 lines of the Makefile to be:
$(AS) $(ASFLAGS) -o $*.o $*.asm
to fix it to automatically do this.
- How can I compile the example code as 32-bit on a
64-bit Linux OS?
When compiling the C/C++ code, use the -m32 flag with gcc. If using my
Makefile, just add -m32 to the CFLAGS and CXXFLAGS
- Is something wrong with Figure 1.1?
It seems that this figure was misleading. The figure shows 8 separate
one bit additions, not 2 4-bit ones. This is hopefully
fixed in the current edition.
- Does the tutorial cover structures or C++?
Yes, a new edition of the tutorial added a chapter covering these topics.
- Is the tutorial available as HTML?
Unfortunately not. It is written in LaTeX, but uses some packages that
the latex2html does not support. If I was starting today, I
would probably use DocBook which can output many different
formats. However, it would be a very difficult job to convert the
existing files to DocBook as it does not support some features I used
- Does the tutorial cover MMX or SSE instructions?
No, it doesn't and probably never will. I don't
know how to use these newer instructions. I'm not a real assembly
programmer. The tutorial is meant to be an introduction to assembly
for C/C++ programmers like myself. I try to stress the ideas from
assembly that I use all the time in my C/C++ programming. I do not
really see any great advantage to adding another chapter covering these
instructions. After finishing my tutorial, it shouldn't be too
difficult to learn how to use these newer instructions from other
- Do you take unsolicited questions?
Questions, comments and corrections about the
tutorial are welcome and I will reply as promptly as I can. Questions
on how to write your own OS, etc. will probably be ignored unless I
feel qualified on the subject and find the question interesting. Homework
questions will be ignored and get your e-mail address added to my block list!
- Can I translate your tutorial to another language?
Yes, you may. However, I have not had much luck with others making this offer.
After sending them the LaTeX source, I never hear from them again. To help
stem this problem, I am making the LaTeX source for the first chapter available.
If you are serious about translating my tutorial, download the file below and
translate the first chapter. Send me your work and I will then send you source
for the other chapters.
Chapter 1 LaTeX source zip file Read the README
file for instructions on getting started.
- What are some other resources for PC assembly on the net?
- Can you recommend any other assembly books?