0% developed

Assembly Language and Computer Organization

From Wikibooks, open books for an open world
Jump to navigation Jump to search

Contents[edit | edit source]

Part I Assembly Language and Architecture[edit | edit source]

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

Part II: Computer Organization and Implementation[edit | edit source]

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

Preface[edit | edit source]

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 | edit source]

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!