COE 205 Computer Organization & Assembly Language
Term 041

Catalog Description

Introduction to computer organization. Octal and Hexadecimal number systems, ASCII codes. Assembly language programming, instruction format and types, memory and I/O instructions, arithmetic instructions, addressing modes, stack operations, and interrupts. ALU and control unit design. RTL, microprogramming, and hardwired control. Practice of assembly language programming.

      Prerequisite: COE 200 and ICS 201

Course URL   http://assembly.pc.ccse.kfupm.edu.sa 

printable version of the online material

Text Books & References:    

  • Introduction to Assembly Language Programming: From 8086 to Pentium Processors, Sivarama P. Dandamudi, et al., Springer Verlag. (ISBN: 0387985301).

  • Computer Systems Design and Architecture, Vincent Heuring, Harry F. Jordan, Miles Murdocca, Addison Wesley. (ISBN 0-8053-4330-X).

Grading Policy   

 
Homework 5% Online submission is required (WebCT)
Prog. Assignments 10% May require Demo to the grader
Quizzes 10% Pop quizzes. be ready every class
Major Exam I 20% Thursday March 23rd 9:30am
Major Exam II 20% Thursday May 4th  9:30am
Final Exam 20% TBA
LAB 20% Subject to normalization

                     

                                                

Course Learning Outcomes

1.              Proficiency in assembly language programming, particularly for the Intel 80x86 processor family. Ability to analyze, design, implement, debug, and test assembly language programs.

             Knowledge of the Intel x86 16-bit and 32-bit architectures.

             Knowledge of assembly language directives and instructions, instruction formats, and addressing modes.

             Knowledge of Pentium instructions: data movement, arithmetic, bit manipulation, compare, jump, loop, stack instructions, call, return, and interrupt instructions.

             Ability to write control structures and algorithms in assembly-language.

             Ability to handle arrays and data structures in assembly-language.

             Ability to write procedures, pass parameters and return results through registers and on the stack.

             Ability to use and to develop interrupt service routines. Knowledge of hardware, software, and processor interrupts.

2.              Knowledge of the organization of a computer and its components. Ability to understand the design of the data path and the control unit of a simple CPU and the implementation of the execution control sequence of simple instructions.

             Knowledge of the various components of a computer system: CPU, memory, busses, and I/O devices.

             Knowledge of the alternative implementations of the data path inside the CPU.

             Ability to develop the fetching and execution control sequences of an instruction at the register transfer level.

             Understanding the design of the control unit and the generation of the control signals using hardwired and microprogrammed implementations.

 

Academic Honesty Policy

All submitted assignments must be done individually and must be your own work. This includes written and programming assignments. Copying assignments in whole or in parts, altering the work of others, or allowing other people to do your own work and submitting it for grading is a clear violation of academic honesty. Also, you must refrain from giving your work to other students, especially if they were your friends. Allowing your friends to copy your work will not help them, but will put you in trouble.  Detected copies are given zeros to all involved students including those who did the original work. A warning is also sent. If repeated cheating cases are detected on assignments then a failing grade will result in the course.

Sometimes you are stuck in an assignment at a given problem and you do not know how to solve it. You tried your best, but still cannot figure out the solution. How do you seek help to solve a problem? There are many ways. You may go first to your professor and seek help from him. Alternatively, you may seek help from a graduate assistant. You can even seek help from senior students, who have previously taken the course and are well acquainted with its subjects, as long as they outline to you the concepts and ideas, but do not provide you with a detailed solution. You can then develop your own detailed solution after having obtained a clear understanding of the problem and an idea about its solution.

Using unauthorized information or notes on an examination, peeking at others work, or altering a graded exam to claim more grades are severe violations of academic honesty. Remember that if you cheat, you are cheating no one but yourself. Detected situations will result in failing grades in the course, and depending on the severity of the situation, some cases may possibly end up in suspension from the university.


 
 

Week

Topic

11-15

FEB

Introduction to Computer Organization & Assembly Language

Assembly language versus high level language programming

Basic Components: processor, memory, bus, input and output devices

18-22

FEB

Review of Internal Data Representation

Unsigned & signed integer representation, Integer arithmetic, carry, and overflow, Character representation

25 FEB

1 MAR

Assembly Language Concepts

Statements, directives versus instructions, program structure, Variable and array declarations, constant definitions, I/O using interrupt 21H.

4-8

MAR

Assembly Language Concepts

Memory segmentation: logical and physical addresses, Intel x86 16-bit and 32-bit registers and architectures, Instruction formats, opcodes and operands, Addressing modes

11-15

MAR

Assembly Language Instructions

Data movement instructions, Arithmetic instructions and flags, Logical and bit manipulating operations,

18-22

MAR

Assembly Language Instructions

Logical and bit manipulating operations, Compare, jump, and loop instructions

23 MAR

Major Exam I 12:30pm    24-121

25 -29

MAR

Assembly Language Programming

Implementing conditional statements and loops in assembly language, Pentium Memory Addressing Modes

1-5

APR

Midterm brake

Assembly Language Programming Traversing and processing arrays, String processing

8-12

APR

Assembly Language Programming

Traversing and processing arrays, String processing

15-19

APR

Procedures and the Stack

Pentium implementation of the stack, Stack operations, calling and returning from a procedure

22-26

APR

Procedures and the Stack

Writing procedures, Parameter passing, Local variables, Macros

29 APR

3 MAY

Interrupts and I/O

Software, hardware, and processor interrupts, Interrupt processing

Peripheral support chips, Direct Memory Access (DMA)

4 MAY

Major Exam II 9:30am

6-10

MAY

Processor and Control Unit Design

Register transfer, Data-path design, 1-bus, 2-bus, and 3-bus organizations, performance considerations.

13-17

MAY

Processor and Control Unit Design

Fetch and execute control sequences at the register transfer level, Hardwired control unit design, Horizontal and vertical microprogramming

20-24

MAY

Processor and Control Unit Design Microprogrammed control unit design, Instructions sets and formats, examples of instruction set design

27-31 MAY

Processor and Control Unit Design

Final Exam

3-8

JUNE

Final Exam