|
Softpanorama |
May the source be with you, but remember the KISS principle ;-)
Softpanorama Search
|
| John Socha | Tools | Debugging | Risc CPUs | Hardware | Humor | Etc |
Congratulations! If you get to this page you definitely have changes to become a good programmer.
Any decent programmer should know assembler language. It is much more fundamental that all those fancy OO, patterns and other fashionable staff. Moreover the greatest programmer book in the world used assembler. I am talking here about the most influential computer science book ever written -- The Art of Computer Programming by the computer science legend Professor Donald Knuth. This is actually the book to have for any assembler programmer, although it does not cover Intel assembler. Highly recommended. Algorithms are the most important part of programming ! And if OO suckers think otherwise, let them bask in this sea of ignorance ;-)
The first textbook can be John Socha's famous Peter Norton's Assembly Language Book for the IBM PC. In 1985-1990 those John Socha led the guys, who (along with Borland) wrote the best DOS programs in existence including Norton Commander, Norton Utilities and Norton Guide (it look like Peter Norton was just a photo model and talented manger of the company before it was bought (and destroyed) by Symantec ;-)
The other good textbook is The Art of Assembly Language by Randall Hyde. This is a more recent book published in September 2003.
In addition to a good textbook you need to have a good editor and debugger to work with the assembler. Some suggestions about the editor can be found here. There is also a page devoted to debugging. Borland assembler and debugger are probably the best you can find, but Microsoft's are more popular and also good enough.
The next in this line is Zen of Assembly Language Knowledge (Scott Foresman Assembly Language Programming Series) and Zen of Code Optimization both by Michael Abrash. Zen of Assembly Language is no longer in print, but you get a copy via Amazon. It well worth it, even though it focuses on the 8088. The other his book, Zen of Code Optimization coined the famous programmer maxim "Premature Optimization is the Root of All Evil''. This book is out of print, but it's included on the CD that comes with 'Michael Abrash's Graphics Programming Black Book'.
Note: Graphics Programming Black Book by Michael Abrash became available free online in PDF format. See Graphics Programming Black Book.
Here is the list of all Michael Abrash's books:
|
Michael Abrash's Graphics Programming Black Book, Special by Michael Abrash. Paperback (July 1997). It's now available on the Internet. See Graphics Programming Black Book. |
|
Michael Abrash's Zen of graphics programming by Michael Abrash. |
|
Power Graphics Programming by Michael Abrash. |
|
Zen of Assembly Language : Knowledge (Scott Foresman Assembly Language
Programming Series) by Michael Abrash. |
|
Zen of Code Optimization/Book and Disk by Michael Abrash. |
|
Zen of Graphics Programming : Master the Art of Creating Fast PC
Games and Graphics Applications by Michael Abrash. |
|
Zen of Graphics Programming : The Ultimate Guide to Writing Fast
PC Graphics by Michael Abrash. |
Dr. Nikolai Bezroukov
|
You can use Honor System to make a contribution, supporting this site |
Kip R. Irvine Assembly Language for Intel-Based Computers (4th Edition)
Peter Norton and John Socha Peter Norton's Assembly Language Book for the IBM PC
Reviewer: James Brodin from Stockton, CA
I first learned assembly language programming with the 16-bit edition of this book found on the internet. So naturally, I rushed out and bought the hard copy when it became available. My first thought was that "this is not the assembly language I'm used to." This book uses a new type of assembler, a High Level Assembler, for all of the examples. At first, I was completely put off by this approach - it was completely foreign to me.
But then I realized that this book was not meant for people like myself who have been programming in assembly for years, instead it was created for people who know a high level language and want to learn assembly. Once I realized this, I began to see this book in a whole different light. The organization is perfect for someone who has a high level language background and is learning assembly for the first time.
Although "old-timers" such as myself probably won't find this approach to their liking, I heartily recommend this book to anyone who is learning assembly language for the first time. While I do not have the perspective of learning assembly language using HLA, I am convinced that the author is correct that this is a good approach for beginners approaching the language.
See also: Softpanorama assembly page
This is a great introductory book. Probably still unmatched.
It teaches assembly language in a simple a versatile way starting with the now forgotten debug program. That's really helps because debug can act as interpreter for simple assembly programs. I would suggest replacing it with the free full-screen debugger AFD.EXE but still this is the best way to learn assembler. I recommend to run it from a DOS OFM you like (for example VC - Volkov commander) and use hview as a viewer. See Softpanorama archive for more details of this semi-forgotten world of DOS programming. It contains a lot of information and programs for fifteen year period from 1989 till 2004.
Highly recommended...
Great book/ Great authors/ A must-read, April 14, 1999
| Reviewer: An Amazon.com Customer |
I've read this book, and I really liked it. It is great. It teaches assembly language in a simple a versatile way. If you want lo learn Assembly language, this is a MUST-READ. --This text refers to an out of print or unavailable edition of this title.
A must book on assembly concepts and tutorials, December
18, 1997
| Reviewer: antunes@convex.com.br from Braganca Paulista - SP - BRASIL |
Norton and Socha's authority makes this book a must to every "beginner" assembly programmer. This book presents basic items such as binary numbers, registers & basic arithmetic inside the 8086 family processors into part 1. The contents of the book becomes closely related with DSKPATCH - a real program written in assembly - so the reader has a UNIQUE opportunity to see how real programmers (and here Norton is a PC guru) use step-wise refinements techniques and modular projects in a real world. The 2nd edition is based in MASM 5/5.1, Borland TASM and OPTASM features. Maybe we must wait for MASM 6.1 update... then it'll become a rating 10...
My first Assembly book, November 7, 1997
| Reviewer: An Amazon.com Customer |
This book has the great advantage of presenting such a difficult subject just like a personal teacher would do. It's written in a clear way and explains some important concepts about the 8086 processor.My advice is: if you want to learn assembler here's a good book to start with (even if it seems a little dated!)
A bad, overcomplicated and dull college textbook used in many colleges
for the assembler class. Pretty boring and uninspired coverage typical of
many college textbooks. It might be suitable as a reference but never
as a textbook: the author has no abilities at all in distinguishing between
important and unimportant material as well as material suitable and unsuitable
for the intro course.
For self-education I would recommend using old John Socha's book
Assembly Language for the PC instead (it covers
only real mode but this is OK for the introduction) or Assembly Language
Step-By-Step Programming With DOS and Linux (or prev edition of the
same book, which is cheaper but has almost the same content)
The only good thing about this book is that the CD ROM included with the book contains MASM 6.15.
The most bad thing about the book is that the author fails to distinguish between really important and redundant information and overload the book with an extra material. His approach is to add some predefined routines to assembler to make it more like a high level language. But at the same time he converts the language into a variant of C++: obscure mass of unnecessary details that overwhelm almost all novices. Without help of the debugger assembler is almost incomprehensible. IMHO for most students, especially for community college student for whom the book was originally written might passionately hate of assembler for the rest of their lives.
So it does not surprise me that out of 17 chapters the author did found space to cover the debugger. He is too preoccupied with obscuring things that with making them simple. Actually CodeView in included on the disk and can be used for debugging the programs in 8086 mode: again I would like to stress that using the debugger is the only right way to learn assembler. Thus this is not a shortcoming, this is a real blunder and that's why I give then book only two stars: in my opinion this makes book really harmful book as it discredits the idea of assembler as an important language for any computer science student.
If you want to compensate for this shortcoming it might be not easy as additional subroutines make finding the actual code not that easy. But you can use some tricks marking the start of the code with a special sequence of commands and then finding them. There are several debuggers for 32-bit mode as well. As author himself noted on the CD ROM:
For 32-bit Protected mode programming, two excellent debuggers you can use are:
Microsoft Visual C++ Debugger - This is an integral part of Microsoft Visual Studio. Look for a tutorial on our book's Web page that shows how to set up and use this debugger.
Microsoft WinDbg Debugger - This is a stand-alone debugging utility that can be used to debug both user-mode programs and kernel-mode programs (such as device drivers). At the current time, this debugger can be downloaded for free from Microsoft's Debugging Tools for Windows web page. If this link becomes inactive, check our book's Web site for an updated URL.
There is a website at http://www.nuvisionmiami.com/books/asm/ The first three chapters are available online:
The book takes the process of teaching assembly at a very slow pace
and layers each new concept on top of the previous concepts. If you
are pretty experienced and been doing this sort of thing for awhile
then this may frustrate you reading about bytes, words, RAM and other
common terms, however, remember this is designed to take a non-programmer
from nothing to programming in assembly language. In fact, you
do not even begin meeting machine instructions (on a formal basis) until
chapter seven and do not meet your first real life assembly program
until chapter 8. That is the beauty of the book. The author does not
assume anything, he leads you step-by-step (as promised in the title)
through everything.
Out of the 5 assembly books I own (beginner
to advanced), this is one of the better ones. Duntemann's book is EXCELLENT.
I read over my copy of Mastering Turbo Assembler and still I wasn't
getting it. I read over Using Assembly Language and had the same problem.
Too many authors just mention things and leave it at that figuring you
already know what they are talking about. This book is not like that.
He starts out at the foundation of the computer, at the CPU.
He doesn't jump into programming, but rather, explains how computers
work, about hex, decimal, how the processor works with code, and so
on. It is actually interesting because that's exactly what assembly
language is, right down to the metal. Then he takes it one command at
a time and explains it very well.
His examples are clear and he explains how all of it works. I was having
trouble with a couple commands and couldn't find help in several other
books. After I read Jeff's book, all those commands made perfect sense.
He doesn't teach EVERY assembly language function, but he gives
you an EXCELLENT foundation, one that is mandatory to learn
assembly.
In other books I've owned the authors put stories in there they try
to make fit with the lessons, but they never make sense. At the beginning
of some chapters, he does the same. His story makes sense, but once
you read the following part on assembly, you can put the two together
and understand just how things work.
A perfect example is how the stack operates. If you are a complete beginner
to assembly, someone who hasn't used it in a while, or need a general
reference, I couldn't recommend any book more than this. Jeff is truly
an excellent teacher.
Keep in mind this book covers the 8086/8088 (and briefly the 286-486),
so if you plan to move on, you MUST have base knowledge. You can't program
the 486 (or such) without knowing the 8086/8088. So don't take that
like "oh no, I'll only learn the old stale PC." You have to learn to
walk before you can run. Overall, I would recommend this book! to ANYBODY
wanting to learn assembly language. It lives up to its name.
I recommend highly for any Assembly beginner, June 10, 2000
Reviewer:
Robert Chatham (see more about me) from Memphis, TN
Like everyone else I've ever met who's looked into learning assembly, I had a little trouble comprehending how everything fit together. I'd heard wonderful things about Duntemann's last edition of Assembly Language: Step by Step, so I decided to purchase the updated linux version. Duntemann's 600+ page book slowly guides the beginner into an understanding of Assembly. Don't be confused by the book's size - this book will NOT make an expert - perhaps not even an intermediate programmer. Instead, this book teachers the basics of assembly and provides a decent background into the workings of computer memory, the cpu, and other concepts that EVERY programmer should know. This book can't be given a higher recommendation for anyone looking to start in assembly - Duntemann has a way of explaining (and re-explaining) through metaphors that enhance comprehension. Anyone who already has a background in this material will be amazed by the extreme explanations ("a whole CHAPTER on hex and binary! "), but it's really the perfect way to pound the knowledge in. By the end of the book, the reader will know so much more about assembly - and how/why it works. Just don't expect to be a highly skilled professional.
But I must make clear that
this book ONLY teaches you to WRITE programs in assembly.
If you need basic information about the architecture of the 8086/8088
family (how memory and processor works etc.) this is not a good book
to begin with. If you want to learn assembly from scratch (as
I did) I recommend the book Jeff Duntemann wrote; "Assembly Language:
Step by step". With this book and "Mastering Turbo Assembler"
you have all the information you need to start programming in assembly.
A very good way to learn assembler..., May 13, 1997
Reviewer: A reader
I really enjoyed reading this book. Tom Swan's writing style is clear
and concise. If I could only have one book on assembler this would be
it. The code is written using Ideal Mode but is easily adapted to Masm.
I highly recommend Swan's coding style! I rated this book with a
9 because the book does NOT cover extended (32-bit) registers, nor the
numeric processor, which you will need for any serious programming.
Get this book and Morneau's "PC Assembly Launguage" for complete
coverage.
Excellent Teaching Book for Assembly Language, November 12, 1998
Reviewer: Don Coppedge (dcoppedg@phoenix.net) from Houston,Texas
USA
Tom Swan has created another excellent tutorial book. I spent a year
of lunch time reading on this one. Excellent progression of ideas. In
the end I went from being a complete novice of assembly language to
writing standalone assembler for Windows applications - and being comfortable
with it! Excellent tutorial on the more advanced uses of the Borland
Debugger CPU view.
Lucid writing, but weak coverage of 1994 CPUs., June 5, 1998
Reviewer: A reader from Columbus, Ohio
Nice coverage of software topic. OOP, interfacing to C, etc. However,
assembly language is inherently hardware specific. Swan's (C)'95 book
doesn't do much with '386,'486, nor Pentium CPUs which were out circa
'93. Selector registers, the tag register used to toggle 16/32-bit MODES
& hence "flat thunking" slighted. If you use DOS, this book seems excellent.
If you use WinDOS 95, MasterClass Asm.Lang. also '95 from Wrox may be
better.
The best referance and TASM coverage!, May 11, 1998
Reviewer: eastbone@geocities.com from Chicago
This book has the best instruction coverage, every 8086 insctruction
is fully covered. It also covers the TASM assembler from Borland. Every
directive is fully described. So if you are planning on doing your Assembly
programming with TASM, this is the best Assembler there is. The book
goes through pretty fast, I recommend you learn another language like
C/C++ or Pascal. I would also recommend tobe familiar with Debug that
comes with DOS. This book is not for complete beginners, sorry :( but
it does a very good job if you are a little bit familiar with the Intel
8086 programming.
The author, Barry Kauler , April 13, 1997
Link to further information about the book
I write Windows applications in 100% assembly language -- amazing but true! To find out how easy it is, have a look at the book. You can find an example program at my web site, plus a whole lot more information about the book: http://www.arrowweb.com/goofee/ The book introduces the PC and CPU architectures, assembly language, DOS-Win interface, Windows 3.x and 95, ring 0, VxDs -- goes through everything, so is an excellent TEXTBOOK. Even if you end up programming in Visual C++, having all this low-level knowledge under the belt is a solid foundation.trg-@usa.net from The Netherlands , October 13, 1998 ****
Essential reading, but not perfect
Being one of the very few books on this topic, this book is essential for anyone who's interested. Although there is a chapter about the basics of assembly language, I think the reader must have some basic assembly skills before starting with this book. I personally knew DOS assembly and wanted to learn Windows assembly. This book formed a GREAT introduction.The only drawbacks I find are:
- the comparison Win16 <-> Win32 is made, I'd rather see the comparison Win9x <-> Winnt;
- the author doesn't always explain what he promised to explain. E.g. A chapter about Ring0 Code is about an example of *getting* ring0 from ring3;
- the source code is messy, and doesn't always compile.
But still, it's a great book.
dave@powerbasic.com from Carmel, CA , July 28, 1998 **
Highly disappointing
His first edition on 16-bit was very well written and covered nearly every subject on writing Windows programming in assembler. His second edition is just a rehash of the first edition with a few 32-bit tidbits tossed in among code that will not compile in either TASM or MASM.Granted, it's the only book available on this subject, so you might was well buy it, but clearly the author didn't spend much time on this edition.
[Socha1985]
Assembly Language Safari on the IBM PC First Explorations
by
John Socha
I'm Lost Without My Copy, March 23, 2001
Reviewer: Mike Allison (see more about me) from SLC, UTAH USA I LENT my copy of Socha's book a few years back. I've been trying ever since to find a copy. If you can find one -- new or used -- BUY IT.
This is without a doubt a classic book on computers and programming but, moreso, it is a model for how to write introductory guides. If they had followed this model long ago, we'd all be better off.
Forget "The Idiot's Guide to ..." Socha respects his readers but he still walks them carefully through what is an intimidating process of assembly language programming -- while having a bit of fun.
I will find a copy somewhere tonight on the web and buy it. I need it on my shelf...
-Mike Allison
Classic PC Programming, October 8, 1999
Reviewer: An Amazon.com Customer This is the best book for learning x86 assembly language programming I've ever seen. All of the people that have borrowed (and been forced to return) my dog-eared copy loved it. It contains a full description of how to use the x86 processor and the MASM of the time.
Only somewhat out-dated 15 years later.
The later Peter Norton versions aren't as interesting having a much more serious tone.
The great benefit of this book is the fairly step-by-step method results in a great hands-on understanding of the concepts.
Reviewer: An Amazon.com Customer
I've read this book, and I really liked it. It is great. It teaches assembly language in a simple a versatile way. If you want lo learn Assembly language, this is a MUST-READ. --This text refers to an out of print or unavailable edition of this title.
A must book on assembly concepts and tutorials, December 18,
1997
| Reviewer: antunes@convex.com.br from Braganca Paulista - SP - BRASIL |
Norton and Socha's authority makes this book a must to every "beginner" assembly programmer. This book presents basic items such as binary numbers, registers & basic arithmetic inside the 8086 family processors into part 1. The contents of the book becomes closely related with DSKPATCH - a real program written in assembly - so the reader has a UNIQUE opportunity to see how real programmers (and here Norton is a PC guru) use step-wise refinements techniques and modular projects in a real world. The 2nd edition is based in MASM 5/5.1, Borland TASM and OPTASM features. Maybe we must wait for MASM 6.1 update... then it'll become a rating 10...
My first Assembly book, November 7, 1997
| Reviewer: An Amazon.com Customer |
This book has the great advantage of
presenting such a difficult subject just like a personal teacher would
do. It's written in a clear way and explains some important concepts
about the 8086 processor.
My advice is: if you want to learn assembler here's a good book to start
with (even if it seems a little dated!)
Advanced assembler book are almost always connected with the optimization, the attempt to drive PC faster that common folks. Like in driving this is nor for weak programmers.
I am new to programming in general and will start to learn Assembler next quarter, our instructor has told us that if we learn assembler well, (meaning to document correctly and make our code 'elegant') we will be in the highly sought after group of people they call Professionals. This is of course a great goal. But you know about the alligator/ swamp thing. I am now at this part of the learning curve - so overwhelmed by the sheer volume of things -to remember, that it is too easy to just get job done and make it work. Well, Jeff has taken a most unique approach to this problem - he has written a book for absolute beginners - and he does so with out making me fell like I just arrived on the planet. He assumes that you are knowledgeable about your PC and nothing more (how to turn it on, etc) He seems truly interested in making this and his future books to come - a book that we would want to have on our reference shelves for years to come. My highest recommendation for an author would be - if I cared - if he would write another book on this or a related subject. In this case, I am going to write him a letter to ask him to do so. It is, as if I had just read my first book by Clive Cussler and can't wait for the next book to come out. |
This book is a must read for every serious developer. I was greatly pleased with the book except that it was a little thin. It is an excellent introduction for assembly language programming and the very effective use of macros. I highly recommend this book for programmers who are interested to write fast and tight code in a high efficient manner. This book needs to be owned by developers doing assembly language programming on a higher level. |
Amazon.com Books Optimizing C With Assembly Code
Optimizing Assembly with C as an infrastructure, January 15, 2001
| Reviewer: Philip Cummins from Perth, WA Australia |
This is one of the very few books that can help a person improve their skill in assembly as well as many of the common optimization and pitfalls for speed. Since it's rather old, it handles only up to the 486 but is very useful nonetheless.
Don't buy this book expecting to be handheld, it expects (and demands) an intelligent programmer who knows what they are doing to get good mileage. If you're a beginner, you're better off with another book - this is really for the competent C programmer who knows a bit of assembly and knows what to expect from the 80x86 architecture.
If you're an assembly programmer who wants to cycle count and tweak those algorithms for extra cycles of speed, this is your book.
The only thing I'd love to see in the future is a little more coverage of the terminal services part of it. (2 pages isn't enough), and maybe a little more deep hands on experiments. All handson experiements seems to be pretty much "overview and simple". But you can't have it all, this nearly 1000 page book is like a design document for NT/2000. >=]
But no doubt, if you develop NT tools or sysadmin NT network this book is a *MUST*! If you don't have it, HURRY UP AND BUY IT NOW!
Also, remember to visit http://www.sysinternals.com for the best utils for NT. (And maybe the most stable ones. ;))
Terje
Practical Magic in Win32, April 18, 2001
Reviewer:
George Datuashvili (see more about me) from
Cupertino, CA United States
This is the book to take with you if you are expelled to deserted island
with 1 laptop, solar power generator, win32 sdk/ddk, and 1 book of choice.
It will make you think, wonder, appreciate and grok the best OS that
Microsoft can offer. As Matt Pietrek said once, the magic of being debugger
guru is the better understanding of OS. If there is any book to help
you become one, this is it.
What is very important also is that along the line Mark (and David) explain and teach the reverse engineering techniques to explore the surrounding world of unknown black-box software. The books if full of ideas, hints and tips on multiple ways how to peek under the hood and extract that piece of information you are looking for.
It made me to fully understand and re-think the implications of thread scheduling, memory management, paging and synchronization on the complex code I was working with and resulted in great performance improvements.
You will also get to see the elegance of design decisions and compromises made by engineers working on such a complex OS, and this enlightening experience alone justifies reading of the book even if you are not interested in Win32 in any way.
It is incredible amount of knowledge and hard
work compressed in a single volume.
Copyright © 1996-2009 by Dr. Nikolai Bezroukov. www.softpanorama.org was created as a service to the UN Sustainable Development Networking Programme (SDNP) in the author free time. Submit comments This document is an industrial compilation designed and created exclusively for educational use and is placed under the copyright of the Open Content License(OPL). Site uses AdSense so you need to be aware of Google privacy policy. Original materials copyright belong to respective owners. Quotes are made for educational purposes only in compliance with the fair use doctrine.
Disclaimer:
Last modified: August 10, 2009