assembly - Intro_to_ASM - Part I
KSATs: K0201, K0202, K0207, K0209, K0210, K0213, K0214, K0215, K0216, K0217, K0219, K0221, K0222, K0223, K0224, K0225, K0226, K0308, K0315, K0763, K0767, K0769, K0771, S0114, S0125, S0130, S0134, S0143
Measurement: Written, Performance
Lecture Time: 1 Hour 30 Minutes
Demo/Performance Time: 1 Hour
Instructional Methods: Informal Lecture & Demonstration/Performance
Multiple Instructor Requirements: 1:8 for Labs
Classification: UNCLASSIFIED
Lesson Objectives:
-
LO 1 Review computer fundamentals necessary to contextualize Assembly. (Proficiency Level: B)
- MSB 1.1 Describe the specifics of x86 architecture. (Proficiency Level: B)
- MSB 1.2 Describe the specifics of x86_64 architecture. (Proficiency Level: B)
- MSB 1.3 Differentiate data sizes and their prefixes in computer soft- and hard-ware (Proficiency Level: B)
-
LO 2 Understand underlying structure and methodology for working with Assembly. (Proficiency Level: B)
- MSB 2.1 Identify an operand as part of an instruction in Assembly (Proficiency Level: B)
- MSB 2.2 Understand the purpose of an assembler (Proficiency Level: B)
- MSB 2.3 Understand the implications of the term 'endianness' to data (Proficiency Level: B)
- MSB 2.4 Identify and describe 64 bit registers (Proficiency Level: B)
- MSB 2.5 Identify and describe 32 bit registers (Proficiency Level: B)
- MSB 2.6 Identify and describe the lower 16 bit registers (Proficiency Level: B)
- MSB 2.7 Identify and describe the 'high' 8-bit registers (Proficiency Level: B)
- MSB 2.8 Identify and describe the 'low' 8-bit registers (Proficiency Level: B)
- MSB 2.9 With required resources, describe the purpose and use of the NASM assembler (Proficiency Level: B)
- MSB 2.10 Understand the implementation of opcodes in Assembly (Proficiency Level: B)
- MSB 2.11 Understand how the assembler works (Proficiency Level: B)
- MSB 2.12 Identify differences across assemblers (Proficiency Level: B)
-
LO 3 Differentiate data types and registers in Assembly. (Proficiency Level: B)
- MSB 3.1 Identify the purpose of movzx in Assembly. (Proficiency Level: B)
- MSB 3.2 Identify the purpose of xchg in Assembly. (Proficiency Level: B)
- MSB 3.3 Identify unique characteristics of registers in Assembly. (Proficiency Level: B)
- MSB 3.4 Identify different data types in Assembly. (Proficiency Level: B)
-
LO 4 Describe Advanced Data Type use in Assembly (Proficiency Level: B)
- MSB 4.1 Understand the purpose of 'structure' in Assembly' (Proficiency Level: B)
- MSB 4.2 Understand iteration of consecutive memory addresses in Assembly, i.e, how to iterate through an array (Proficiency Level: B)
Performance Objectives (Proficiency Level: 3c)
-
Conditions: Given access to (references, tools, etc.):
- Access to specified remote virtual environment
- Student Guide and Lab Guide
- Student Notes
-
Performance/Behavior Tasks:
- Write programs to move, replace, and swap values in registers using Assembly.
- Write programs partially copying data - leveraging and adapting across registers of different sizes.
- Identify and access different registers appropriately in Assembly.
-
Standard(s)
- Criteria: Demonstration: Correctable to 100% in class
- Evaluation: Students will have 4 hours to complete the timed evaluation consisting of both cognitive and performance components.
- Minimum passing score is 80%
References
- http://www.c-jump.com/CIS77/ASM/DataTypes/lecture.html
- https://courses.cs.washington.edu/courses/cse351/13su/lectures/12-structs.pdf
- https://en.wikibooks.org/wiki/X86_Assembly/X86_Architecture
- https://stackoverflow.com/questions/43562980/swapping-two-int-pointers-in-assembly-x86
- https://unix.stackexchange.com/questions/297982/how-to-step-into-step-over-and-step-out-with-gdb
- https://www.csee.umbc.edu/courses/undergraduate/313/spring05/burt_katz/lectures/Lect10/structuresInAsm.html
- https://www.geeksforgeeks.org/assembly-language-program-find-largest-number-array/
- https://www.gnu-pascal.de/gpc/Endianness.html
- https://www.tutorialspoint.com/assembly_programming/assembly_registers.htm
- https://www.tutorialspoint.com/assembly_programming/assembly_variables.htm