|

Jeff's Home Page
Contrapositive Diary
Jeff's SF
|
|
|
|
It's still
in print (since May 2000) and available: The second editionor maybe
the third, depending on how you countof what may be the only genuine
beginners' text on Intel assembly language ever written. It's in
most stores and on Amazon, and although I may not be the most objective
commentator, I don't think there's anything like it anywhere. This book
(or its two predecessors, see below) have been in print continuously since
mid-1989. You can order it through Amazon by clicking on the cover image
at left.
The idea behind the book, nutty as it might seem, is to teach assembly
language as your first programming language. No previous programming
experience required. When I first wrote the book, I thought it was a reach,
but 125,000 copies and countless fan letters later, I guess it actually
worked.
How does it work? I started at the beginning, and explained what computers
are and what they do. Assembly language must take the hardware
into account (at least as far as memory addressing is concerned) so I
talk about hardware. And when I finally get down to teaching assembly
language itself, the emphasis is on memory addressing. In assembly language,
if you know where your operands are, you're three quarters of the way
to anywhere else you might want to be.
This is a radically different approach from most "intro" assembly
books, which begin by teaching you the MOV instruction, and then perhaps
the ADD instruction, with little or no discussion of the context
in which assembly language operates. This is dumb. Instructions are probably
35% of the trick in assembly language. 50% is memory addressing, and the
remaining 15% is odds'n'ends.
The big win in the second edition is that there's Nothing Else to Buy.
Everything you need is on the CD: A masterful free assembler called NASM,
and a DOS text-mode development environment from which to work, including
a text editor. This environment, called NASM-IDE, replaces my ancient
JED environment, which was described in the first edition. For Linux work,
you can use any of the many Linux console editors/environments like vi
or EMACS. I describe EMACS, as it's my personal favorite, but it's your
choice. Because DOS no longer comes with a linker, I also provide a free
linker, ALINK.
By the way, all of this software is freeware, and even if you don't buy
my book, you can download it without charge from the links I've gathered
below, in the "Assembly Language Downloads" section. It may
be a good idea to download the software from the Web anyway, because the
CDs in the book were burned in 2000 and newer versions are now available.
Buy the Book Online
By the way, if you ever run across a signed copy of either of the first
two editions, it's not rare. Back when we were selling my book through
ads in PC Techniques and Visual Developer Magazine, I was
signing every copy that went out the door, so literally hundreds have
my autograph.
Hints for Running the Example Code
Although I don't much care for Windows XP, I have an XP lab machine and
have tested NASM-IDE and NASM16.EXE on it. Works fine, and you don't have
to boot into DOS mode or anything. (There is no DOS mode, really. DOS
is truly dead, and has been stuffed and mounted on XP's wall, as a block
of APIs.) You have to open a console window and navigate to the directory
where NASM-IDE and NASM are located, and work within the console window
as though it were DOS. XP will also open a console window if you double-click
on NASM-IDE.EXE. Rob Anderton has a nice Java-based Windows version of
NASM-IDE, and I suspect I will move to that with the next edition.
You may run into an obscure error the first time you try assembling any
code under NASM-IDE. It's SPAWNO error code 2. This error happens when
NASM-IDE doesn't have the full path of the assembler stored in its Options|Assembler
screen. This full path must contain the name of the assembler file
(typically NASM16.EXE) in it. The path to the directory is not enough.
For example you must have something like this: C:\assembly\nasmide\nasm16.exe
You may choose to arrange your directories in some other fashion, and
whatever you choose is OK...as long as you tell NASM-IDE where everything
is. Enter directories for include files and for the output directory in
Options|Directories.
A related SPAWNO error happens when NASM itself can't find its log file.
Make sure there's a file named NASM.LOG in the directory where the assembler
resides. If not, create an empty text file called NASM.LOG and put it
there. The SPAWNO errors are errors that turn up when NASM-IDE "spawns"
a process by invoking NASM. They basically mean that NASM can't run for
some reason. The most common causes are that there's no full path to the
assembler (including the assembler executable's name) as mentioned above,
or that the log file is missing.
Errata for the Second Edition
A fair number of people have written to say that they've been
unable to run NASM-IDE after copying it from the book's CD and then lowering
all the Read Only bits. (See the next errata item for more details on
the Read-Only bit issue.) When they attempt to run NASM-IDE, they get
an error message on the order of "Unable to initialise file."
I'm not really sure what the problem is, but the solution is simple: Don't
use the copy of NASM-IDE on the CD at all! Download NASM-IDE from the
link on this page, below in my "Assembly Language Downloads"
section. Use that copy. Leave the other one on the CD. Something's wrong
with it, so let it pass, and use the one here. It's free and it does all
the same things.
This isn't exactly an error, except of omission: I forgot to tell
you guys to turn off the read-only bit on the files you transfer over
from the CD! All files stored on CD-ROM have their Read-Only bit set.
This bit is not automatically cleared when you copy the file to
a hard disk using Windows Explorer or DOS COPY. If you don't clear it,
you'll have problems with any file that must be written to, including
both example program source files and program log and INI files, etc.
This will cause peculiar problems, especially with NASM-IDE, and it's
no fault of NASM-IDE's. The easy way to do this is to multiple-highlight
the files you copied from the CD after they're on your hard drive
and then right click to the Properties context menu item. Un-check the
Read-Only attribute check box. All files that were highlighted will have
their Read-Only bits cleared. And it should be obvious, but note that
you can't run the software off the CD-ROM.
Another problem with the CD, noticed by many people, is that some
text files are missing: sam.txt, oldsam.txt, and moose.txt. You can download
these files (plus all the rest of them) from my site: http://www.copperwood.com/pub/.
Page 19, Figure 2.1. Martian is an acquired taste, but I didn't
make it any easier here by muffing the column captions. I'll post the
whole corrected figure here once I fix my scanner (it's correct in the
first edition, sigh) but I can describe the captions for you. From right
to left, over the columns, it should be:
# of Foos
# of Foobies
# of Foobities
# of Foobidities
# of Foobididities
Thanks to Jeff Mansfield, who first brought it to my attention. Sorry
for the messup. This chapter was a bitch to get right with the technical
artist, copyeditors, etc.
Page 31, under the heading From Decimal to Hex, last sentence
in the third paragraph: "The next largest power of 16512is
obviously too large to be present in 449." Although it's true that
512 is obviously too large to be present in 449, the next largest power
of 16 after 256 is not 512 but 4096. Please replace "512" with
"4096," and thanks to Willem Brown for spotting it.
Another "first catch" for Willem Brown is on Page 43,
in the list of numbered steps. Several exponents were demoted to ordinary
numbers during the typesetting process, and I missed 'em: 2^3Two to the
third power (which is hard to express in HTML) came out as "23;"
two to the fourth power came out as "24;" two to the sixth power
came out as "26," and so on. The text there makes no sense as
it is.
Page 69, first paragraph, second line, typo: "the fireman's
pockets" should be "the foreman's pockets." (Maybe that
Pentium should be water-cooled...) Thanks to Andy De Paoli for spotting
this one.
Page 129, under the heading Moving Around the Edit Window,
third paragraph under the heading: "There are numerous other cursor
movement keys that you can use within JED." Replace JED with NASM-IDE.
That's what I get for "repurposing content." Thanks again to
Andy De Paoli.
Page 153, very last paragraph: "The colloquial '64K' is shorthand
for the number 66,536." Obviously, 66,536 should be 65,536. Don't
know how that one snuck in. Again, thanks to Andy De Paoli, as for the
above two.
Page 325, in the code for Byte2Str: The third line in the actual
procedure has a typo in the comment. It reads "Load offset of Digits
into DI" when in fact it should say "Load offset of Digits into
BX." The code is correct. Thanks to Corey Vavrik for spotting that
one.
Page 344, under the heading "The Phantoms of the Opcodes":
In "TEST AX,3 ; 3 in binary is 00001000B" both of the "3"
digits should be "8"s. Bit 3 of a binary number has the value
8, but the late-night blearies made me switch it around. Thanks to Jack
Higbie for spotting this one.
Pages 351 and 365, in the comment header for the Display Adapter
Information Lookup Table. What I say is a 26-character string is actually
a 27-character string. Many thanks to a sharp-eyed reader named Brian
who did not pass along his last name.
Finally, many people have pointed out that the ASCII table mentioned
in several places in the book (supposedly present in Appendix D) simply
isn't anywhere to be found. I'll try and get one into a subsequent printing.
It's not like I don't have one here anywhere...
The History of My Assembly Language Books
In late 1987, acquisitions editor Amy Davis of Scott, Foresman &
Co. asked me if there was room in the market for a series of books on
PC assembly language. I wasn't sure but the more I thought about it the
more I wanted to give it a shot. I had done some assembly for nearly all
machines I had ever owned; first an RCA COSMAC system based on the Elf
from Popular Electronics (I added 2560 bytes of RAMan immense
amount of memory to wire-wrap by hand in 1976) and then my first 8080
machine, a Big Box With Toggle Switches. (Ithaca Intersystemsanybody
remember them? I eventually gave the machine gratis to the San Jose School
District.) Assembly had always been a bit of a struggle, and I pondered
if there was a way to make it easier, and get beginners into assembly
with less bloodshed and hair loss than I myself had suffered.
I thought, well, we could use three books for starters: A beginner book,
and intermediate text, and a wizard's grimoire. I would write the beginner
book, and figured that if I could pull it off, I could do damned near
anything. I approached the most astonishing Michael Abrash about the grimoire,
him being the leading assembly language wizard for the PC, back then and
probably throughout all the ages to come. Amy brought me a pair of authors
for the intermediate text, Bill Murray and Chris Pappas. My book would
be called Assembly Language From Square One. Chris and Bill were
to write Assembly Language Magic. Michael's book was to be Zen
of Assembly Language.
We all got to work. I sketched out what I wanted, tossed proposals back
and forth with my co-conspirators, and got all three books under contract.
Michael objected at first that he wasn't sure there was enough of his
wizard's insight to make a book out of. My intuition said otherwise, and
the eventual result eight years later (Michael Abrash's Graphics Programming
Black Book) was about three inches thick, and the largest single book
ever published by Coriolis Group Books. True, some of that was C programming,
but the bulk of it was and is assembly material.
The books came off pretty well. I wrote my own and edited the other two.
We worked all through 1988 and into 1989, and eventually all three books
were published, mine in mid-1989 and the other two in very late 1989 and
early 1990. I don't like the paper they were printed on, which tears too
easily and is yellowing badly now, fifteen years later, but that wasn't
the worst problem we had. In late 1989, Scott, Foresman's trade book like
was acquired by monster publishing conglomerate Harper Collins. They didn't
much want to be in trade publishing, and had purchased Scott, Foresman
for their highly-regarded textbook business. They canned the whole trade
line in early 1990, after our little series had been out for only a little
while. So as good as Zen of Assembly Language was (and it is legendary)
back in 1990 you just couldn't get it.
This drove me nuts. I worked hard to get rights back for the books, but
it took awhile, and for reasons that only a big publisher would understand,
I had to agree to change the title of my book before republishing it with
another house. (This has to do with retailer returns.) So when
I took the book to John Wiley & Sons in 1991, they jumped on itand
republished it in 1992 as Assembly Language Step By Step, which
was a series they had going at the time. Wiley didn't want to republish
Zen, and Michael was ambivalent about it as well, since it really
didn't cover the more advanced processors which had come to rule by 1992
or so. He eventually wrote much additional material in his columns in
PC Techniques and Dr. Dobb's Journal, which was gathered
into Zen of Code Optimization, published by Coriolis Group Books
in early 1994. Zen of Code Optimization was really Zen of Assembly
Language, Part 2but it had some C code in it as well, and we
wanted the title to reflect that fact. Later on, we put the text and scanned
figures of Zen of Assembly Language on the CD ROM for Michael
Abrash's Graphics Programming Black Book, and if you can find that
book (which is now out of print, alas) you'll have Zen as well.
What if anything Bill and Chris did with their book after rights reverted,
I never really knew.
Wiley's Assembly Language Step By Step was a huge successit
blew the doors off all my earlier Turbo Pascal books rolled together.
Wiley intended to keep it in print as long as it sold, and it continued
to sell...and sell...and sell. Every couple of years they asked me if
I wanted to revise it, and I quailed a little at the thought. What I wanted
to do, come 1996 or so, was add material for the Linux operating system,
which was becoming a force at that time.That was a big job, since I didn't
know a lot about Unix and would have to learn it deep. I finally
got down to work toward the end of 1998, and worked on it for most of
a year. The revised and enlarged second edition finally appeared in May
2000.
I've lost track of Amy Davis, but Michael Abrash remains a close and
treasured friend, and I run into Bill and Chris regularly at trade shows.
I've written books that I've enjoyed moreThe New Delphi 2 Programming
Explorer being probably the most fun of anything I've ever done sitting
downbut I doubt I've learned more writing anything else.
Will there be a third edition? I'm hoping, but Wiley hasn't shown much
interest so far. I'll let you know in this space if anything turns up
on that front. I'd like to drop DOS specifics, add coverage for Windows
console apps, and do more with Linux, including how to make kernel calls
and instructions on writing 80 X 25 text mode apps with ncurses.
The problem is that the book can't grow very much anymore. It's already
as large, page-count wise, as the publisher is willing to go. If I add
new material I'll have to pull something out to make room, and that will
be a difficult decision.
Other Assembly Language Books
Probably the single most commonly asked question I get on assembly is:
"After I'm done with your book, what book do I use to go on from
there?" The answer (like the answer to most questions) is: Depends.
Depends on what else you want to do. Because after you get done with my
intro to assembly, assembly (like most computer disciplines) begins to
specialize. With that in mind, let me recommend a few titles here. One
problem I have is that many of my favorite assembly language books are
no longer in print, so it's kind of pointless to recommend them to you
if it's going to drive you nuts looking for them. As best I know, the
titles shown below are still available new, and I provide links to take
you write to their order pages on Amazon. You can also search for any
of these books on the major used-book sites like ABE
Books and Amazon's used-book service Bibliofind.
If a book on Intel assembly is currently in print and not listed
here, that means I've looked it over and don't recommend it for some reason.
Useful books on assembly are scarceand I won't recommend useless
ones simply because good ones are hard to find.
Mastering Turbo Assembler, Second Edition by Tom Swan. (Sams
Publishing, 1995. ISBN 0-672-30526-7) 900 pages. $45 US
Tom's book is the classic intermediate-level assembly text for DOS assembly
working using Borland's Turbo Assembler (TASM.) It's a bruiser of a book
(900 pages) that has a couple of intro chapters, but it goes considerably
farther than mine for DOS and has an introductory chapter on assembly
programming for Windows. It also discusses (in some detail) assembly language
interface to both Pascal and C++. It covers disk file handling from assembly
and the creation of DOS TSR (Terminate, Stay Resident) utilities. Tom's
writing style is superb, and there's lots of code examples. The only caution
I have is that the chapter on Windows assembly will barely get you started,
but if you're going down that (scary) road, it's a good way to begin.
Note that you need TASM to follow the examples. Click
to order this book from Amazon.
Macro Magic with Turbo Assembler by Jim Mischel (John Wiley &
Sons, 1992. ISBN 0-471-57815-0) 350 pages. $39.95 US
Full
disclosure: I edited this book...but I also believe in it. It's the only
text ever published devoted entirely to the use of macros in x86 assembly.
Macros are a mechanism allowing code re-use in assembly work, and they
foster a philosophy of "define once, use everywhere" that gives
you the programmer another defense against both duplication of effort
and the bugs that come of writing the same sequence of assembly instructions
over and over again, which is dumb. The chapter on "Little Languages"
explains how you can use macros to create your own "mini programming
languages" to make specific tasks easier. The book is clearly written,
with a touch of humor and a practical slant. The book covers DOS only.
Again, you need TASM (not a free product) to assemble the examples. Click
to order this book from Amazon.
Inner Loops by Rick Booth (Addison Wesley, 1996. ISBN0-201-47960-5)
364 pages. $39.95 US
It's
dangerous to attempt to optimize your code before you understand assembly
language thoroughly, but once you have a grip on the basics, you need
to know what will buy you execution speed and what won't. Rick Booth's
book is the only book on x86 optimization that I know is still in print,
and while I wish it were twice as long, it's excellent. The book is not
new (1996) and thus covers only Pentium and Pentium II issues, but what
he describes still holds and needs to be learned. You'll learn the dynamic
and interrelated nature of instruction timing, cache effects, memory alignment,
and many other things. He points out some pitfalls of thinking in C while
you're coding in assembly, and has some coverage of the MMX instructions
that I've seen in no other book. Deep stuff, but definitely worth having.
Click
to order this book from Amazon.
The Revolutionary Guide to Assembly Language by Maljugin et.
al. (Wrox Press, 1993. ISBN 1-874416-12-5) 986 pages. $39.95 US
This
intermediate-to-advanced text has its uses, but the writing is not the
best. Its focus is DOS and MASM, and it contains an immense amount of
detailed information about assembly language access to the disk system,
keyboard, and video. Good chapter on creating TSRs, and nice coverage
of memory models. Like all DOS-focused books, its usefuleness is eroding
(it was published in 1993) but there are still things in here you won't
find in other books, and I refer to it regularly. Grab Tom Swan's book
first, especially if you're working in TASM. This book will serve as an
intermediate text if you're using MASM, but the gap between intro and
intermediate here is broader. Click
to order this book from Amazon.
The Embedded PC's ISA Bus: Firmware, Gadgets, and Practical Tricks
by Ed Nisely (Peer to Peer, 1997. ISBN 1-57398-017-X) 344 pages. $39.95
US
Finally,
I include a book that isn't exclusively devoted to assembly, but it's
about embedded systems work using Intel x86 systems, something of interest
to a lot of guys like me who got started with electronics and hardware
and (in some cases) computers built chip-by-ship, by hand. Ed Nisely is
a terrific writer, and the book covers the ISA bus, the electronics, and
how to write code in both C and assembly to use the PC architecture in
embedded work like dedicated controllers. There are several chapters on
interfacing an embedded PC to an LCD display. Fun book, completely unique,
though I need to reiterate: It's more about the electronics of embedded
PC controllers than about assembly language or coding of any stripe. Not
generally found in bookstores. Click
to order this book from Amazon.
Assembly Language Downloads
| File |
Size |
Description |
| NASM
(all versions) |
|
I used to host NASM here, but now that the
project has moved to SourceForge and is evolving rapidly, I think
it's best for you to download all NASM files from the project's home
page. The book's code was written using NASM 0.98, but the examples
are simple enough so that changes in the assembler shouldn't require
changes in the source code from the book. |
| NASM-IDE |
231 KB |
Robert Anderton's great free NASM editor/environment
for DOS. |
| ALINK |
183 KB |
Tony Williams' great free linker for DOS,
version 1.6. |
| LNK563.EXE |
280 KB |
Microsoft now makes its venerable linker,
LINK.EXE, available without cost. This used to come with DOS and Windows
but no longer does, and if you prefer it to ALINK, you can now get
it without any fuss or money. LNK563.EXE is a self-extracting zip,
containing LINK and some other stuff. |
| DOSCODE.ZIP |
23 KB |
This is the code for the DOS examples in
Assembly Language Step By Step, Second Edition. No Linux code
is included in this file; all of that is in a separate archive, see
the next item, LINUXCODE.ZIP.. |
| LINUXCODE.ZIP |
67 KB |
This is the code for the Linux examples
(including makefiles) in Assembly Language Step By Step, Second
Edition. No DOS code is included in this file. See the previous archive,
DOSCODE.ZIP. |
| JED.ZIP |
116 KB |
This file is only for those using Assembly
Language from Square One or Assembly Language Step By Step,
First Edition. DOS only. It contains the code listings for the two
earlier books, along with my JED editor/environment. |
|
ASMENV.ZIP
|
138 KB |
This is a more advanced DOS editor/environment,
inspired by JED but much more sophisticated. Written by Gene Fowler,
a good friend of mine, in Borland Pascal 7 Turbo Vision. |
| My
Downloads Folder |
|
This is a quick link to my downloads folder
on copperwood.com. Note that my current hosting service does not
offer anonymous ftp access to files, so you'll have to use a Web browser
to see what's there and bring down what you need. |
Assembly Language Links
Randy Hyde has emerged as the guru in matters of assembly language
on the Web. WEBster is his Web server, and it serves as a jumping off
place for all of his various initiatives, many of which involve assembly
language. These are so important that I'm breaking out several of the
most significant as separate links in this compendium, even though everything
is reachable through WEBster.
A 1500-page intermediate-to-advanced assembly language programming
textbook, dating to 1996 but updated regularly. Free, and available
either online as a (large) passel of HTML files, or downloadable as
an even larger Adobe Acrobat (PDF) file. Brilliantly done, somewhat
academic, and not as "intro level" as some practitioners believe,
but still a superb piece of work that belongs on every assembly programmer's
hard disk. Focuses on MASM rather than NASM, but the principles still
apply. Don't miss it!
I'm of two minds about "high-level" assembly (HLA). I used
such a hybrid (called DACL) to write a lot of production code back in
my Xerox days, and while it was marvelously fast and compact (sheesh,
it had to support up to four simultaneous users of a single 32K, 1 Mhz
8080 system!) it had lost most of the flavor of assembly, and (worse)
didn't teach me much about the underlying machine. With that caveat,
I do want to endorse Randy's treatment of the concept, which is very
well done and (as you might expect) exquisitely documented. Using HLA
feels like writing assembly code mixed with simple Pascal or (especially)
C code, and you can create very small, very fast programs very quickly.
To get a sense for what HLA is about, read this
first. To see a piece of good HLA code, click here.
Definitely take a look and give it a try. It's not for everybody, but
it definitely works and works very well. An assembly variant with exception
handling! Woo-hoo!
Another of Randy Hyde's projects hosted on his WEBster server. A large
(over 200 routines) library of DOS utility functions in MASM syntax,
which can easily be translated to NASM once you have your NASM wings.
I found the string handling stuff very useful, and it's all beautifully
written and easy to read. People writing comm programs may also appreciate
the serial port code. The link above is to the documentation page; downloading
the library itself is done through a link in the page. NOTE: Don't use
the V2.0 library linked to in the page. As the authors indicate, it's
incomplete and buggy. Use 1.0 only.
The last of Randy's projects that I'll link to here is his large and
intriguing work on assembly language coding style. The goal is to learn
how to write readable assembly code with MASM, but most of the principles
apply to any assembler (including NASM, as long as you're sensitive
to some of NASM's philosphical differences) and some apply to programming
in general. The link above is for the HTML version; you can also get
a PDF file here.
My only reservation here is that this is not for beginners, and will
be a rough go until you've established some assembly smarts, and by
then you may have internalized some bad habits. A good entry level meltdown
and re-presentation of this material would be a very good thing to have.
Quarterly electronic magazine for assembly topics, distributed via
email every three months. Signup is free. Back issues are archived at
this site, and there is some additional Web-only content, including
a very nice links page, message boards, "programming challenges"
and other stuff. Covers all the common x86 assemblers and platforms.
As Torry says, "Just well done."
Small (50K) download for a utility that converts AT&T assembly
syntax (that is, for gas, the "native" Linux assembler) to
the more familiar Intel syntax. It can convert the .s files produced
by gcc into Intel mnemonics so that you can read them more easily. Comes
with source so you can recompile it for Linux, or with a DOS executable
that runs under DPMI. Not quite done; some of the math coprocessor instructions
are not supported as of this writing. (2/29/2000)
Very slick, content-rich site from the gang at Dr. Dobb's Journal.
Unbelievable collection of undocumented CPU wisdom of interest to assembly
code fetishists. Microprocessor news too. Much of what I know about
Crusoe came from here. This site does not bend the knee to beginners,
so be prepared for some head-banging if you're not completely comfortable
in the assembly world.
I don't care for MASM and haven't used it for a good long while (basically
since I picked up TASM, and certainly not since I went to NASM) but
I learned recently that you can download MASM for free, and free is
not a bad price for the creature. Getting MASM is not as simple as downloading
a single ZIP or an install suite, so this link is to a page that explains
it all and provides a table of download links for all the different
files you might need. There's a lot of code drifting around the NET
for MASM, so having it on your hard disk isn't a bad thing, even if
you do most of your original work (as I do) in NASM.
VASM has gone away, and its mantle is being taken up by RADASM, a Win32
IDE for assembly work that has a lot of promise. I haven't done much
with it yet but will begin poking at it before I start serious work
on the Third Edition.
German site that focuses on the Linux INT 80 interface to the kernel.
Very arcane stuff, documented almost nowhere else, the goal of
which is to program in assembly without having to call into clib all
the time. (I teach clib calls in my book--ya gotta walk before ya run!)
Keep in mind that calling the kernel directly makes your code kernel-version
dependent. On the other hand, doing this stuff is probably the best
way I could suggest for becoming a Linux kernel expert!
Poor Jan apologizes for his "flintstone English" but whatever
his actual nationality, his English isn't bad and I learned a great
deal here. This is a new URL that replaces the one I published in Assembly
Language Step By Step, Second Edition. Lots of example source code
for both NASM and gas, including a demo of how to use the ncurses text
screen library and SVGAlib.
Russian site, spearheaded by Konstantin Boldyshev and Dragan Stancevic.
All x86 so far, though they are asking for assembly info for Linux under
other processors, and will post it once they find it. Interestingly,
they have a link that will allow you to download the entire site as
one file. Lots of code, but the real win here are the tutorials, of
which there are many, and the links, which include everything I've ever
found. Probably the most content-rich Linux assembly site ever. Plan
to spend more than a few hours hereor just download the whole
site!
This is wild: A protected mode, open-source operating system for Intel
386 and beyond, written entirely in assembly language...and taking up
42K. 42,000 bytes. Eek! But hey, if you want to learn operating system
theory and assembly at the same time, this is a much easier run
than trying to swallow the Linux kernel whole. Lots of fun. Give it
a shot, just to experience an operating system smaller than your typical
animated GIF. Boots from a floppy.
For those who must face the Beast, here's a good starting point.
Steve knows his stuff and has been around forever, and if he says something
works, I'd lay odds that it works. However, I don't know (and don't
have time to learn) much about Windows work in assembly, so I can't
help you much beyond pointing you here.
Assembly Language Newsgroups
Most people have forgotten Usenet in this age of the all-powerful Web,
but there are a fair number of Usenet newsgroups devoted to X86 assembly
language, and while there's lots of unrelated chatter among the regular
characters (including a number of running in-jokes) but I've found the
groups well worth monitoring.
comp.lang.asm.x86
This is the best, and if you only monitor one newsgroup, monitor this
one. Randy Hyde hangs out here a lot, and a great deal of useful information
can be gleaned from the back-and-forth.
alt.lang.asm
This group gets more traffic on a daily basis than comp.lang.asm.x86,
but it's not as focused on x86 work, and the noise level seems higher,
including what is (for me) an infuriating tendency for people to go off
on political rants.
alt.os.assembly
Usually pretty sparse, but worth subscribing to and checking periodically.
Assembly language is also discussed in newsgroups with more specific
focus, like game programming or virus technology, and there are some interesting
things in alt.hacker. But the three groups listed above are where
you'll find the most concentrated trove of assembly traffic. Don't forget
that Google will now search newsgroups, and you can search for assembly
topics in other groups through Google. Look for the "Google Groups"
link on the main page.
|