1. Knowledge of the basic structure of microcomputers - registers, memory, addressing I/O devices, etc.
2. Knowledge of most non-privileged hardware instructions for the architecture being studied.
3. Ability to write small programs in assembly language
4. Knowledge of computer representations of data, and how to do simple arithmetic in binary & hexadecimal, including conversions
5. Knowledge of procedure calling conventions and interfacing with high-level languages.