Thursday, November20082008 from 7:00 PM to 9:00 PM in BEN 207

Computer Architecture

Exam #2

Thursday, November20 2008 in

BEN 207 (From 7-9 PM)

Study Guide

Here is a list of topics that you should be conversant with when preparing for Exam 2. Note that for a large part of Exam 2 you should not be simply reading but reworking solutions for various in-class exercises and homework. Ensure you review all of the following materials:
Review materials:
  1. Slides and presentations from class
  2. Documents in the handouts folder off Blackboard
  3. In-class exercise
  4. Homework exercises
  5. Pertinent sections for each instruction from x86 manual(s).
No discussions or reference material will be permitted in the Exam. You may use your calculator if you find it necessary. No other electronic devices or reference materials will be permitted during the exam.

Concepts related to Generic Data path:

  1. Number representation & conversions (primarily for encoding instructions)
  2. Representation of signed and unsigned numbers
  3. Unsigned binary
  4. 2’s complement
  5. Other unsigned representations
  6. Octal
  7. Decimal
  8. Hexadecimal
  9. Converting one representation to another.
  1. Data path design elements
  2. Components in a data path
  3. Designing logic circuits that constitute the data path.
  4. Tracing the operation of a complex data path to perform a specific instruction.
  1. Memory
  2. Organization of data path to include memory
  3. Bus
  4. Buses associated with memory unit
  5. Address bus
  6. Data bus
  7. Issues with selecting multiple bytes from memory for instruction and data
  8. Branching
  9. Concepts related to branching.
  10. Instruction pointer / Program counter
  11. Strategy for achieving branching in a data path
  12. Unconditional branches
  13. Conditional branches
  14. Logic circuit for generating various flags (ZF, CF, PF, SF, etc.) in a data path
  15. Von Newmann Architecture

X86 Assembly

  1. Assembly basics
  2. Use of mnemonics, their advantages and disadvantages
  3. Symbol table
  4. Organization
  5. Usage
  6. Instruction encoding
  7. Converting mnemonics to instruction bytes using x86 manual
  8. Converting instruction bytes to mnemonics using x86 manual
  9. Encoding instructions in memory
  10. Assembler. Steps involved in using an assembler and linker
  11. ROM
  12. RAM vs. ROM basic differences
  13. BIOS
  1. Modern architectural concepts
  2. CISC vs. RISC
  3. Memory storage format
  4. Little endian versus
  5. Big endian
  6. Microprogramming
  7. Vertical
  8. Horizontal
  9. Registers
  10. General purpose
  11. Names
  12. Parts of registers
  13. Typical usage.
  14. Special registers (Se
  15. Names
  16. Instruction Pointer (EIP)
  17. Flags
  18. ZF, CF, PF, SF etc.
  19. Manual interpretation
  20. Manual representation to assembly instruction conversions

  1. x86 Assembly programming
  2. Variables and data types
  3. Defining variables in assembly.
  4. Arithmetic instructions
  5. Bitwise operators (and, or, not, xor)
  6. Comparison and branching instructions
  7. Conditional jumps (je, jne, jge, jle, jg, jl etc.)
  8. Unconditional jumps (jmp)
  9. Memory addressing modes
  10. Register direct mode
  11. Immediate mode
  12. Direct mode
  13. Register direct mode
  14. Base displacement mode
  15. Base-index scaled mode
  16. Basic assembly language programming
  17. Developing assembly programs
  18. Tracing operation and working of assembly language programs.
  19. Converting Java to assembly
  20. Defining and operating using variables
  21. Converting arithmetic expressions to assembly
  22. Converting Boolean expressions to assembly
  23. Converting if statements to assembly
  24. Converting while loops to assembly.
  25. Numerical operations in assembly
  26. Various operations involving numbers and operations on numbers
  27. String operations in assembly
  28. String representations in assembly
  29. Performing various string operations in assembly.

Page 1 of 3