Computer Architecture and Assembly Languages

Syllabus and Detailed Description


Topics Covered in the Course

  1. Introduction
    1. Block diagram of a generic computer
    2. Execution of a program
    3. Basic data representation: bits, bytes, words
  2. Basic CPU organization
    1. CPU block diagram
    2. Registers and accumulators
    3. ALU, FPU, and special functions
    4. Control and data paths, bus interface
    5. Instruction sequencing and execution speed issues
  3. Machine and assembly languages (generic)
    1. Instruction sets, operation types, and instruction formats
    2. Operands and addressing modes (memory, registers, stacks)
    3. Data transfer operations
    4. Data formats: binary, BCD, ASCII, two's complement
    5. Arithmetic and logical operations
    6. Bit-field and flag operations
    7. Program flow control operations (branch, subroutine call)
    8. Input-output operations
    9. Machine control operations and interrupts
    10. Pseudo-operations and the process of assembly and linking
    11. Monitors and debuggers: debugging assembly language programs
  4. Case study 1: 80X86
    1. Intel 80X86 series organization and architecture
    2. Intel 80X86 assembly language *
    3. Operating system interface: traps and interrupts *
    4. Access to IO devices: display, keyboard, real-time clocks, DMA *
  5. Special assembly language programming issues
    1. Parameter passing: assembly language and "external"
    2. Return addresses and co-routines
    3. Traps and interrupts: mechanism and handling
  6. Case study 2: a RISC architecture (MIPS)
    1. MIPS organization and architecture
    2. MIPS assembly language*
    3. The arithmetical and logical operations unit (ALU)
    4. The control unit and the datapath
    5. Processor bus interface
  7. (Introduction to) issues in modern architectures
    1. Advanced data formats: floating point standards
    2. Microprogramming
    3. RISC vs. CISC
    4. Associative memory and caches
    5. Address mapping (paging, segmentation, virtual memory)
    6. Pipelining
    7. Co-processor and multiprocessor systems
  8. Special miscellaneous topics
    1. Communications (serial and parallel), simple error detection and correction codes (parity, Hamming), handshakes.
    2. Macro processing: defining and using macros
Note: items marked with an asterisk (*) will be covered in exercise sessions.

Course Requirements

  1. Prerequisites: Digital Systems (361-13591) - prior or concurrent
  2. Credits: 5 (for 4 lecture hours, 2 exercise sessions)
  3. Grading (approximate): 0%-10% mid-term exam, 60%-70% final exam, 30% homework assignments. In the event we do not hold a mid-term exam, 70% of the grade will be determined by the final exam.

    No cheating! You are required to get a non-zero grade on all assignments in order to pass the course. An unsubmitted assignment gets 1/100. An assignment too similar to someone else's assignment (i.e. cheating) gets you 0/100 and no credit in the course.

    Special notice: In the event of a serious disruption of the semester, due to a possible teaching strike by the faculty, TAs, or the administration, requirements and course grading may change - we reserve the right to do so, if that becomes necessary.

Sourcebooks and Written Material

  1. Advanced Microprocessors, Daniel Tabak, McGraw-Hill Inc., 1991.
  2. IBM PC Assembly Language Programming, Peter Abel, Prentice Hall (second edition 1991)
  3. D. A. Patterson and J. L. Hennessey, Computer Organization & Design: The Hardware Software Interface, Morgan Kauffman, second edition 1998.

Back to BGU CS HomePage