We're offering 20% off September Live Online classes! See which courses are applicable.   |   Details

AccountIcon BigDataIcon BlogIcon default_resource_icon CartIcon checkmark_icon cloud_devops_icon computer_network_admin_icon cyber_security_icon gsa_schedule_icon human_resources_icon location_icon phone_icon plus_icon programming_software_icon project_management_icon redhat_linux_icon search_icon sonography_icon sql_database_icon webinar_icon

Search UMBC Training Centers


x86-64 Assembly Programming

Group Training + View more dates & times


This course is an introduction to assembly programming for the x86-64 architecture. Emphasis is placed on best, current practices and methods, including SIMD instructions. Students will write extensive code as part of the course to exercise their skills. Some work will be put toward basic reverse engineering.

Cumulative graded assessments available for group training.


40 hours

Who Should Take This Course


This course is suitable for developers or others with moderate experience in programming a compiled language, such as C, C++, Go, Rust, or Fortran. This course is not designed for students who are new to programming.


Students should have some previous compiled programming experience, such Rust or Fortran, or completing our Intermediate C Programming, C++ Programming, or Go Programming classes. They should be able to write conditionals, loops, and functions, do some basic debugging, and write a simple program that makes use of these skills.

Why You Should Take This Course

Upon completion of this class, students will be able to the following:
● Write x86-64 Assembly code: loops, conditionals, and functions.
● Build and run x86-64 Assembly programs
● Integrate with third-party libraries in other compiled languages
● Create and call functions using the SysV ABI
● Define and manipulate record types
● Debug the behavior of a running program without debugging symbols
● Profile and optimize x86-64 Assembly code
● Reverse-engineer simple functions and programs

Course Outline
  1. Introduction to x86
  • Why Learn Assembly?
  • Prerequisites
  • History
  • Terminology
  • Optimization & Intuition
  1. Executable Programs
  • End-to-end Process
  • Executable Formats
  • Sections
  1. Tools
  • hexdump or xxd
  • strings
  • nm
  • objdump
  • gdb
  • ltrace and strace
  • make
  • as
  • Almost Hello World
  • Hello World
  1. CPU
  • RISC Architecture
  • CISC Architecture
  • GPU
  • Pipelining
  • Modes
  1. Registers
  • Intel Architecture History
  • Register Descriptions
  • Callee-Saved Registers
  1. Memory and Latency
  • Structure
  • Memory Pages
  • Caches
  • Latency Numbers Every Programmer Should Know
  1. The Two Major Syntaxes
  • Intel
  • Arguments
  • AT&T
  • Comments
  • Directives
  • Macros
  1. Assignment
  • Indirect Addressing
  • Load Effective Address
  • Segment Offsets
  • RIP-Relative Addressing
  • Sign Extension
  1. Arithmetic
  • No Operation
  • Basic Operations
  • Bitwise Operators
  1. Floats
  • ST Use
  • XMM Use
  1. Conditionals
  • Condition Flags
  • Condition Codes
  • Jumps
  • Conditional Moves
  • Jump Tables
  1. Loops
  • Jump and Loop Optimizations
  • Loop instructions
  1. Functions
  • Stack Space
  • Base Pointer and Stack Pointer
  • Caller- and Callee-Saved Registers
  • x64 ABI
  • IA-32 ABI
  • Return Types
  • System Calls
  1. Strings
  • cld, std
  • lods, stos
  • scas
  • movs
  • cmps
  • rep, repz, repnz
  1. Signal and Interrupts
  • Interrupts
  • Signals
  • Exceptions
  1. SIMD
  • Concept
  • Packed Data
  • Instruction Set
Is there a discount available for current students?

UMBC students and alumni, as well as students who have previously taken a public training course with UMBC Training Centers are eligible for a 10% discount, capped at $250. Please provide a copy of your UMBC student ID or an unofficial transcript or the name of the UMBC Training Centers course you have completed. Asynchronous courses are excluded from this offer.

What is the cancellation and refund policy?

Student will receive a refund of paid registration fees only if UMBC Training Centers receives a notice of cancellation at least 10 business days prior to the class start date for classes or the exam date for exams.

Contact Us