assembly - ASM_basic_ops - Part I

KSATs: K0203, K0211, K0220, K0230, K0235, K0778, K0779, K0780, K0781, K0782, K0783, K0784, K0785, K0786, K0787, K0788, K0789, K0790, K0791, K0798, K0809, K0817, S0115, S0123, S0126, S0139, S0157

Measurement: Written, Performance

Lecture Time: 1 Hour

Demo/Performance Time: 1 Hour

Instructional Methods: Informal Lecture & Demonstration/Performance

Multiple Instructor Requirements: 1:8 for Labs

Classification: UNCLASSIFIED

Lesson Objectives:

  • LO 1 Recognize methods in Assembly for using the stack (Proficiency Level: B)

    • MSB 1.1 Understand how to use the stack (Proficiency Level: B)
    • MSB 1.2 push and pop to the stack in Assembly (Proficiency Level: B)
  • LO 2 Identify, differentiate, and leverage arithmetic functions in Assembly. (Proficiency Level: B)

    • MSB 2.1 Identify how to add and subtract in Assembly. (Proficiency Level: B)
    • MSB 2.2 Articulate the procedures and registers for multiplication and division in Assembly. (Proficiency Level: B)
    • MSB 2.3 Identify how to increment and decrement registers in Assembly. (Proficiency Level: B)
  • LO 3 Differentiate methods and purposes for bitwise shifts in Assembly. (Proficiency Level: B)

    • MSB 3.1 Understand the purpose of the scas instruction. (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:

    • Apply knowledge of the stack through commands 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.cs.tau.ac.il/~maon/teaching/2014-2015/seminar/seminar1415a-lec6-runtime.pdf
  2. https://blog.holbertonschool.com/hack-virtual-memory-stack-registers-assembly-code/
  3. https://c9x.me/x86/html/file_module_x86_id_72.html
  4. https://eli.thegreenplace.net/2011/09/06/stack-frame-layout-on-x86-64/
  5. https://learn.adacore.com/labs/bug-free-coding/chapters/stack.html
  6. https://stackoverflow.com/questions/46790666/how-is-stack-memory-allocated-when-using-push-or-sub-x86-instructions
  7. https://www.amd.com/system/files/TechDocs/24594.pdf
  8. https://www.cs.uaf.edu/2012/fall/cs301/lecture/09_21_stack.html
  9. https://www.felixcloutier.com/x86/div
  10. https://www.tutorialspoint.com/assembly_programming/assembly_arithmetic_instructions.htm
  11. https://www.tutorialspoint.com/operating_system/os_processes.htm