Assembly Language and Computer Organization

Contents edit

 

Part I Assembly Language and Architecture edit

  1.   Introduction and Overview
  2.   DOS and the x86 Architecture
  3.   Computer Memory and Programs
  4.   ALU & Instructions
  5.   Control Unit & Instructions
  6.   Working with Procedures
  7.   Exploring Operating System Calls
  8.   UNIX System Assembly
  9.   RISC Processors
  10.   Harvard Architecture Computers

Part II: Computer Organization and Implementation edit

  1.   Introduction to Digital Electronics
  2.   Combinational and Sequential Circuits
  3.   Instruction set Design
  4.   Simple ALU Functions
  5.   Register Unit and Bus Design
  6.   Control Unit Design
  7.   System Clock Design
  8.   Complex ALU Functions
  9.   Memory Management Unit
  10.   Input and Output Systems
  11.   Final Assembly and Sample Programs

Preface edit

Stated simply, this book is about how computers work. In the first part of the book, we will explore computer behavior by means of writing computer programs. Unlike most programmers, we will be writing programs for computers at their most basic level. We will be commanding them directly in assembly code and machine language with the aim of seeing what is going on "under the hood." This type of programming used to be very common anywhere performace was an issue, but in this modern era of plentiful CPU cycles and inexpensive vast memory devices, few people write assembly code these days. Even though the art of writing these kind of programs is becoming rarer, learning assembly language is still a worthy pursuit as it reveals what is going on inside the machine and teaches programmers to "think like a computer." The exploration of assembly will begin with writing programs for the x86 family of processors. In later chapters we will be looking at other architectures and instruction sets. Ideas will be presented in the most general way possible throughout the assembly language chapters so that the reader will have no trouble transitioning to any computing platform / operating system environment.

In the second part of the book, we will explore digital electronics with an aim to designing a CPU. In this section, we will be using a logic circuit simulator to put the computer together. You will be able to execute software on this fictional computer, and if you really wanted to you could implement it in physical hardware. After completing this part of the book you will have intiment knowledge of the theory behind computer operation. In the last chapter of the second part, we will explore various sample programs and present some ideas for how the computer we design could be expanded.

Intended Audience edit

I am writing this book primarily for my students at Knoxville College, who will use this book in a two part course on Computer Organization. It is my hope that this book will be useful to other students and also to the curious people among the general public. I assume absolutely no knowledge of computer programming, as these courses are the first courses in our Computer Science program at Knoxville College. All you will need in order to enjoy this book is a basic knowledge of arithmetic, and a bit of patience. The key to this course is to not be intimidated by the complexity of what we are going to explore. I will attempt to keep the text as friendly as I can, and we will be taking everything one step at a time. I hope you enjoy exploring the inner workings of computers with this book!