Learning Assembly Language

Learning Assembly Language

In this course, instructor Malcolm Shore offers you a hands-on introduction to programming in both the 32 bit and 64 bit x86 assembler and shows how you can use it to access system functions through the Windows API. First, Malcolm shows you how to install and test the GoAsm assembler, the Easy Code IDE, and the x64 debugger. He explains how to build a complex data structure and how to manipulate constants, registers, and main memory. He shows you how to write and call subprograms and how to manipulate information as an array. Then Malcolm goes into the Windows API and how to use it. He describes how to run a system command from inside an assembler program, as well as how to code and use jump tables. Next, he steps you through how to use what you’ve learned to complete an enigmatic encryptor. After showing you how to resolve some security issues in the assembler, Malcolm concludes with several examples of how you can run assembly code from another language with assembler subprograms.


  • 英文名称:Learning Assembly Language
  • 时长:3小时4分
  • 字幕:英语


  1. Understanding low-level programming in assembler
  2. What you should know
  3. Introduction to assembly language
  4. Setting up your development environment
  5. Setting up GoAsm in the IDE
  6. Developing an Enigma-like file encryptor
  7. Setting up a program skeleton
  8. Understanding registers and memory
  9. Data types
  10. Using data structures
  11. The move and exchange instructions
  12. Extended move instructions
  13. Logical or bitwise operators
  14. Arithmetic operators
  15. Controlling the assembler flow
  16. Indirect addressing and pointers
  17. Console Input and output
  18. Challenge
  19. Solution
  20. Calling subprograms
  21. Working with floating point
  22. Managing arrays
  23. Adding plugs to the Enigmatic encryptor
  24. The Windows API
  25. More on the Windows API
  26. Calling the printf external function
  27. Executing system commands
  28. Jump tables
  29. Reading data files
  30. Adding a menu and jump table to the Enigmatic encryptor
  31. Reading and writing the Enigmatic configuration
  32. Ciphering the data
  33. Leveraging the x64 AES instructions
  34. Challenge: Decryption function
  35. Solution: Decryption function
  36. Writing a vulnerable assembler program
  37. Taking control flow
  38. Executing code from the data section
  39. Calling assembler from other languages
  40. Using NASM
  41. Calling assembler routines from C
  42. Executing assembler in Python
  43. What's next