PC Assembly Programming
Table of Contents

University computer science courses usually include several classes on computer architecture and assembly language programming within the first two years of undergraduate course work. Effective programming often depends on your familiarity with various hardware designs or, at least, your ability to assimilate them readily.

Abstract discussions of computer architecture just aren't enough, since there is nothing quite as good at teaching and deepening these concepts as genuine hands-on work. So actual assembly programming is an indespensible part of learning about computer architecture.

Self Education

There's a very long road ahead of those serious about educating themselves beyond the immediate needs of a particular project. And this is especially true in learning about computer architectures, their machine codes, various assembly languages, compilers and optimizers, operating systems and concurrent programming.

For example, the IBM PC architecture has grown from a relatively simple design, with the PC running at 4.77MHz. Computers were often shipped with only 64Kb of RAM and one floppy drive. The 8088 CPU exposed its local bus directly onto the system's attachment bus (later to be standardized and called the ISA bus.)

Today's Penium Pro family of computers have as many transistors in their support chipset as the CPU, itself. These systems include at least two levels of caching systems, support for several types of DRAM memory systems, a local CPU bus designed to smoothly handle up to four CPUs together, a reflection mode PCI bus, an AGP bus for video, the standard ISA bus and associated bridge chips, sophisticated interrupt controllers to manage both PCI and ISA bus interrupts, a specialized APIC bus that provides support for multiple CPUs, and support for memory holes and spaces for compatibility.

It's a bewildering complexity, partly born from compatibility needs and partly from performance and, of course, always from Intel's desire to make big profits.

Each piece of good documentation is hard to come by and probably outdated. And when the documentation is kept current (as Intel's manuals tend to be), it is a reference rather than a teaching tool. Worse, folks who really know this stuff well are hard to come by, too, and no one is likely to spoon feed you.

I hope these pages are a small help to some.

I'll be adding more to the following list of items. I've barely had a chance to start, just yet.

 

Quick Links:

 
 
    Creation Date:  Mon 29-Mar-1999 15:18:54
    Last Modified:  Sun 09-Apr-2000 20:59:34
    Copyright (C) 1999, 2000 Jonathan Dale Kirwan