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

  1. http://www.c-jump.com/CIS77/ASM/DataTypes/lecture.html
  2. https://courses.cs.washington.edu/courses/cse351/13su/lectures/12-structs.pdf
  3. https://en.wikibooks.org/wiki/X86_Assembly/X86_Architecture
  4. https://stackoverflow.com/questions/43562980/swapping-two-int-pointers-in-assembly-x86
  5. https://unix.stackexchange.com/questions/297982/how-to-step-into-step-over-and-step-out-with-gdb
  6. https://www.csee.umbc.edu/courses/undergraduate/313/spring05/burt_katz/lectures/Lect10/structuresInAsm.html
  7. https://www.geeksforgeeks.org/assembly-language-program-find-largest-number-array/
  8. https://www.gnu-pascal.de/gpc/Endianness.html
  9. https://www.tutorialspoint.com/assembly_programming/assembly_registers.htm
  10. https://www.tutorialspoint.com/assembly_programming/assembly_variables.htm