The purpose of this course is to introduce students to computing systems below that of a high-level programming language. The material covered can be broadly separated into the categories of assembly language programming and Computer Organization. Under the heading of assembly language programming students will be introduced to the i386 instruction set, low-level programming, the Linux memory model, as well as the internal workings of compilers, assemblers and linkers. Topics under computer organization include digital logic design (combinational circuits, sequential circuits, finite state machines) and basic computer architecture (system bus, memory hierarchy and input/output devices).
Learning Objectives
Upon completion of this course, students will be able to:
- Compile C code to x86 Assembly
- Write simple functions in x86 Assembly
- Link together programs written in both C and x86 Assembly
- Explain the differences between IA-32 and x86-64 architecture
- Call library functions from x86 Assembly
- Reverse-engineer simple functions
- Debug x86 Assembly code
- Optimize a short function for instruction space
Framework Connections
The materials within this course focus on the NICE Framework Task, Knowledge, and Skill statements identified within the indicated NICE Framework component(s):
Feedback
If you would like to provide feedback on this course, please e-mail the NICCS team at NICCS@mail.cisa.dhs.gov. Please keep in mind that NICCS does not own this course or accept payment for course entry. If you have questions related to the details of this course, such as cost, prerequisites, how to register, etc., please contact the course training provider directly. You can find course training provider contact information by following the link that says “Visit course page for more information...” on this page.