Readings in the text
Handouts
- Demos 1-7
- PC hardware handout
Topics
- General
- Binary data representation
- Hexadecimal data representation
- Converting between binary/hex/decimal
- Logical operations (AND, OR, XOR, NOT)
- Two's complement; representing negative numbers
- The purpose and usage of ASCII
- PC hardware
- CPU internals (ALU, control, registers, etc.)
- Individual registers and their purpose
- Flags and their meaning
- Buses (address, data, control)
- Other hardware (memory, disk, etc.)
- Life-cycle of the CPU (fetch, decode, execute)
- Assembly Language
- Advantages and disadvantages
- When is assembly useful?
- Assembly vs. high-level languages
- Compilation / assembly process
- Directives, instructions, identifiers, labels, mnemonics, operands
- Special role of the stack
- Declaring various kinds of data (bytes, words, double-words, arrays)
- Assembly Instructions
- Assignment (mov, movsx, movzx) and its restrictions
- Artithmetic (add, sub, mul, div, dec, inc)
- Logical (and, or, xor, not, neg)
- Control transfer (call, ret, jmp, loop)
- Conditionals (cmp and various conditional jumps)
- Stack Operations (push, pop)
- Memory access (when to use brackets and when not to)
- Input and Output
- read() and write() system calls
- Converting between ASCII / binary
- Other system calls
- exit()
- Time-related (time() and gettimeofday())
- Other topics
- Big-endian vs. little-endian notation
- Data layout in memory
- Purpose of sections in an assembly file
- Purpose of Makefiles and how to write/use them
- Accessing command-line arguments
Alex Fedosov
2002-10-16