Windows Assembly Language & Systems Programming: 16- And 32-Bit Low-Level Programming for the PC and Windows
||Author: Barry Kauler|
List Price: $49.95
Our Price: Click to see the latest and low price
Publisher: CMP Books (August, 1997)
Sales Rank: 19,859
Average Customer Rating: 2.72 out of 5
Customer ReviewsRating: 2 out of 5
This book really didn't live up to expectations. I really should've sent it back and ate the shipping.
Rating: 1 out of 5
Lame rehash or previous (also imperfect) edition
Previous version of this book was just as badly structured and hard to read, but at least it was timely technically, and interesting. The new version (also obsolescent these days) is no more than a touch-up job, thus largely irrelevant. Moreover, all "new" (that is, 32-bit) stuff is geared towards 95 (not NT), and is largely useless because of that.
If you don't have the old edition, I say it's worth getting for 5 bucks or less, purely for the general curiosity's sake. Otherwise, you should feel no regret by ignoring this book...
Rating: 1 out of 5
Throwback to Windows 3.1
Assembly language is important - you really need it when
a) your compiler is producing instructions different to those you intended with your higher-level language
b) debugging system-level code
c) disassembling some binary file that has no source code
d) presented with a crash address alone.
e) You might even need to write a little assembly when what you are doing simply cannot be written in a higher level language.
There are some excellent books to help learn assembly, and chapters in books and articles by the likes of Pietrek and Robbins.
Kauler is different. He believes you should write your Windows GUI programs straight in assembler - dialogs, menus, windows and all. He thinks this is a good way to write Windows programs. Anybody who wants to follow his advice does not need this book, he needs to learn about modern tools. Modern compilers are really good, and it is ludicrous to suggest replacing their work with yours.
Having undermined the central premise of this book, it is worth commenting on the content. Firstly, it is very heavy going, and somehow clunky. I don't know if it is the font, page layout, or simply trying to cover too much too quickly, but I had to read each paragraph a few times to understand what was being said here. The book has clearly been rehashed from previous Kauler literature, even leaving in the same screen shots from 1992! Several chapters have rambling overviews of Windows architecture or the boot up process, and quite frankly, other books cover this far better. What this stuff has to do with assembly is not explained.
He also seems to be stuck in a time warp, by writing most of his code in 16-bit assembly. There was a time, when I was still young, when you had no choice - 32-bit Windows was still a pipedream. But already for several years this has been obsolete, and the only need to know it is when poking around in the 16-bit underworld of 95, but heaven forbid actually programming in it!
I have to admit that there are some gems here - Kauler has prised open some of the cracks in the Win95 OS, and revealed some amazing tricks. Among them are using DOS interrupts to gain access to low-level services and using CallGates to run Ring0 code from Ring3. However, even this gem is written cock-eyed, with the main program in 16-bit code, and the CallGate callback in 32-bits! Does he want nobody to understand him?
And all this to expose the Win9x OS! It still exists, but is becoming more and more obsolete. XP Home is already upon us, and I doubt any home PCs will be sold with the 9x family installed ever again. The kind of people who want to dig into the OS migrated to NT years ago, while Kauler is still stuck in the 9x days, blinking in denial as he emerges from a 16-bit slumber.
Not for me such stuff. Avoid this book, unless you are a real 9x underworld junkie, think in assembly, have more that just a dash of Windows 3.1 nostalgia, and yearn for the good old days of 16-bit programming.
· Writing Windows VxDs & Device Drivers; Programming Secrets for Virtual Device Drivers
· Assembly Language for Intel-Based Computers (4th Edition)
· Protected Mode Software Architecture
· Linkers and Loaders