Assembly language Step by Step .pdf
It was 1985, and I was in a chartered bus in New York City, heading for a press reception with a bunch of other restless media egomaniacs. I was only beginning my media career (as Technical Editor for PC Tech Journal) and my first book was still months in the future. I happened to be sitting next to an established programming writer/guru, with whom I was impressed and to whom I was babbling about one thing or another. I won’t name him, as he’s done a lot for the field, and may do a fair bit more if he doesn’t kill himself smoking first.
But I happened to let it slip that I was a Turbo Pascal fanatic, and what I really wanted to do was learn how to write Turbo Pascal programs that made use of the brand-new Microsoft Windows user interface. He wrinkled his nose and grimaced wryly, before speaking the Infamous Question:
‘‘Why would you want to do that?’’
I had never heard the question before (though I would hear it many times thereafter) and it took me aback. Why? Because, well, because . . . I wanted to know how it worked.
‘‘Heh. That’s what C’s for.’’Further discussion got me nowhere in a Pascal direction. But some probing led me to understand that you couldn’t write Windows apps in Turbo Pascal. It was impossible. Or . . . the programming writer/guru didn’t know how. Maybe both. I never learned the truth. But I did learn the meaning of the Infamous Question.
Note well: When somebody asks you, ‘‘Why would you want to do that?’’ what it really means is this: ‘‘You’ve asked me how to do something that is either impossible using tools that I favor or completely outside my experience, but I don’t want to lose face by admitting it. So . . . how ‘bout those Black-hawks?’’
Being a programmer is one thing above all else: it is understanding how things work. Learning to be a programmer, furthermore, is almost entirely a process of leaning how things work. This can be done at various levels, depending on the tools you’re using. If you’re programming in Visual Basic, you have to understand how certain things work, but those things are by and large confined to Visual Basic itself. A great deal of machinery is hidden by the layer that Visual Basic places between the programmer and the computer. (The same is true of Delphi, Java, Python, and many other very high level programming environments.) If you’re using a C compiler, you’re a lot closer to the machine, and you see a lot more of that machinery—and must, therefore, understand how it works to be able to use it. However, quite a bit remains hidden, even from the hardened C programmer.