Class Central is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

Exercism

x86-64 Assembly

via Exercism

Overview

Google, IBM & Meta Certificates – 40% Off a Year
One Coursera Plus subscription covers most Professional Certificates on Coursera. 40% off a full year through Dec 2.
Unlock All Certificates

x86-64 assembly is the programming language for the 64-bit version of the x86 instruction set. It is based on the original 8086 instruction set from 1978.

Assembly language is different from high-level languages like C# and Java. There are no variables, objects, or loops. Instead, you'll have to deal with registers, memory addresses, and jumps.

Learning assembly can be intimidating at first, but it will give you a better understanding in how your computer works. It might even improve your programming skills in higher level languages.

Syllabus

  • Hello World
    • Exercism's classic introductory exercise. Just say "Hello, World!".
  • Lasagna
    • Learn about the basics of x86-64 assembly by following a lasagna recipe.
  • Inventory Management
    • Learn about integers by managing transport of products for a local store.
  • Black Jack
    • Learn about comparisons by implementing some Black Jack judging rules.
  • Color Palette
    • Learn about declaring, accessing and modifying initialized data by mixing colors.
  • Bird Watcher
    • Save and update counts for birds in your garden using arrays.
  • Secrets
    • Learn about bit manipulation by writing the software for an encryption device.
  • Mixed Juices
    • Help your friend Li Mei run her juice bar with your knowledge of loops.
  • Poetry Club Door Policy
    • Learn about strings using poems to get into the poetry club.
  • Freelancer Rates
    • Learn about floating-point numbers by helping a freelancer communicate with a project manager about billing.
  • Lost and Found
    • Learn about the call stack by organizing items for a lost-and-found office.
  • Currency Exchange
    • Learn how to interface with C types by solving Chandler's currency exchange conundrums.
  • Need For Speed
    • Learn about how to interface with C structs in x86-64 assembly code by racing remote controlled cars.
  • Piper's Pie
    • Learn about recursion in x86-64 assembly.
  • Bookkeeping
    • Learn about thunks in x86-64 assembly.
  • Pocket Console
    • Learn about branchless code in x86-64 assembly.
  • Production Line
    • Learn about SIMD instructions in x86-64 assembly.
  • Mixing Console
    • Learn about SIMD operations with packed integers in x86-64 assembly.
  • Seismograph
    • Learn about bitwise and shift ops on packed values in x86-64 assembly.
  • Grade Sheet
    • Learn about SIMD comparisons and masks in x86-64 assembly.
  • Channel Swizzle
    • Learn about SIMD cross-lane operations in x86-64 assembly.
  • Magazine Layout
    • Learn about macros in the NASM assembler.
  • Opening Night
    • Learn about atomic operations in x86-64 assembly.
  • Collatz Conjecture
    • Calculate the number of steps to reach 1 using the Collatz conjecture.
  • Darts
    • Calculate the points scored in a single toss of a Darts game.
  • Difference of Squares
    • Find the difference between the square of the sum and the sum of the squares of the first N natural numbers.
  • Leap
    • Determine whether a given year is a leap year.
  • Reverse String
    • Reverse a given string.
  • RNA Transcription
    • Given a DNA strand, return its RNA complement.
  • Space Age
    • Given an age in seconds, calculate how old someone is in terms of a given planet's solar years.
  • Square Root
    • Given a natural radicand, return its square root.
  • Triangle
    • Determine if a triangle is equilateral, isosceles, or scalene.
  • Two-Fer
    • Create a sentence of the form "One for X, one for me.".
  • Grains
    • Calculate the number of grains of wheat on a chessboard given that the number on each square doubles.
  • Hamming
    • Calculate the Hamming distance between two DNA strands.
  • High Scores
    • Manage a player's High Score list.
  • Line Up
    • Help lining up customers at YaÊ»qÅ«b's Deli.
  • Pangram
    • Determine whether a phrase uses every letter in the Latin alphabet.
  • Queen Attack
    • Given the position of two queens on a chess board, indicate whether or not they are positioned so that they can attack each other.
  • Allergies
    • Given a person's allergy score, determine whether or not they're allergic to a given item, and their full list of allergies.
  • Binary Search
    • Implement a binary search algorithm.
  • Bob
    • Bob is a lackadaisical teenager. In conversation, his responses are very limited.
  • Clock
    • Implement a clock that handles times without dates.
  • Eliud's Eggs
    • Help Eliud count the number of eggs in her chicken coop by counting the number of 1 bits in a binary representation.
  • ETL
    • Change the data format for scoring a game to more easily add other languages.
  • Isogram
    • Determine whether a phrase is an isogram, a word with no repeated letters.
  • Micro Blog
    • Given an input string, truncate it to 5 characters.
  • Nucleotide Count
    • Given a DNA string, compute how many times each nucleotide occurs in the string.
  • Resistor Color
    • Convert a resistor band's color to its numeric representation.
  • Resistor Color Duo
    • Convert color codes, as used on resistors, to a numeric value.
  • Resistor Color Trio
    • Convert color codes, as used on resistors, to a human-readable label.
  • Scrabble Score
    • Given a word, compute the Scrabble score for that word.
  • Secret Handshake
    • Given a decimal number, convert it to the appropriate sequence of events for a secret handshake.
  • Series
    • Given a string of digits, output all the contiguous substrings of length `n` in that string.
  • Sublist
    • Determine if a list is a sublist of another list.
  • Acronym
    • Convert a long phrase to its acronym.
  • Anagram
    • Find the words that use the same letters as another word.
  • Armstrong Numbers
    • Determine if a number is an Armstrong number.
  • Bottle Song
    • Produce the lyrics to the popular children's repetitive song: Ten Green Bottles.
  • Crypto Square
    • Implement the classic method for composing secret messages called a square code.
  • Diamond
    • Given a letter, print a diamond starting with 'A' with the supplied letter at the widest point.
  • ISBN Verifier
    • Check if a given string is a valid ISBN-10 number.
  • Kindergarten Garden
    • Given a diagram, determine which plants each child in the kindergarten class is responsible for.
  • Linked List
    • Implement a doubly linked list.
  • Matrix
    • Given a string representing a matrix of numbers, return the rows and columns of that matrix.
  • Phone Number
    • Clean up user-entered phone numbers so that they can be sent SMS messages.
  • Prime Factors
    • Compute the prime factors of a given natural number.
  • Protein Translation
    • Translate RNA sequences into proteins.
  • Proverb
    • For want of a horseshoe nail, a kingdom was lost, or so the saying goes. Output the full text of this proverbial rhyme.
  • Rail Fence Cipher
    • Implement encoding and decoding for the rail fence cipher.
  • Robot Name
    • Manage robot factory settings.
  • Robot Simulator
    • Write a robot simulator.
  • Roman Numerals
    • Convert modern Arabic numbers into Roman numerals.
  • Rotational Cipher
    • Create an implementation of the rotational cipher, also sometimes called the Caesar cipher.
  • Saddle Points
    • Detect saddle points in a matrix.
  • Simple Linked List
    • Write a simple linked list implementation that uses Elements and a List.
  • Sum of Multiples
    • Given a number, find the sum of all the multiples of particular numbers up to but not including that number.
  • Strain
    • Implement the `keep` and `discard` operation on collections.
  • Twelve Days
    • Output the lyrics to 'The Twelve Days of Christmas'.
  • Word Count
    • Given a phrase, count the occurrences of each word in that phrase.
  • Atbash Cipher
    • Create an implementation of the Atbash cipher, an ancient encryption system created in the Middle East.
  • Binary Search Tree
    • Insert and search for numbers in a binary tree.
  • Circular Buffer
    • A data structure that uses a single, fixed-size buffer as if it were connected end-to-end.
  • Custom Set
    • Create a custom set type.
  • D&D Character
    • Randomly generate Dungeons & Dragons characters.
  • Flatten Array
    • Take a nested list and return a single list with all values except nil/null.
  • Gigasecond
    • Given a moment, determine the moment that would be after a gigasecond has passed.
  • House
    • Output the nursery rhyme 'This is the House that Jack Built'.
  • Largest Series Product
    • Given a string of digits, calculate the largest product for a contiguous substring of digits of length n.
  • List Ops
    • Implement basic list operations.
  • Matching Brackets
    • Make sure the brackets and braces all match.
  • Nth Prime
    • Given a number n, determine what the nth prime is.
  • Perfect Numbers
    • Determine if a number is perfect, abundant, or deficient based on Nicomachus' (60 - 120 CE) classification scheme for positive integers.
  • Raindrops
    • Convert a number into its corresponding raindrop sounds - Pling, Plang and Plong.
  • Rational Numbers
    • Implement rational numbers.
  • Run-Length Encoding
    • Implement run-length encoding and decoding.
  • Save the Cow
    • Implement a word-guessing game.
  • Sieve
    • Use the Sieve of Eratosthenes to find all the primes from 2 up to a given number.
  • Spiral Matrix
    • Given the size, return a square matrix of numbers in spiral order.
  • Split-Second Stopwatch
    • Keep track of time through a digital stopwatch.
  • Yacht
    • Score a single throw of dice in the game Yacht.
  • Camicia
    • Simulate the card game and determine whether the match ends or enters an infinite loop.
  • Food Chain
    • Generate the lyrics of the song 'I Know an Old Lady Who Swallowed a Fly'.
  • Intergalactic Transmission
    • Add parity bits to a message for transmission
  • Killer Sudoku Helper
    • Write a tool that makes it easier to solve Killer Sudokus
  • Luhn
    • Given a number determine whether or not it is valid per the Luhn formula.
  • OCR Numbers
    • Given a 3 x 4 grid of pipes, underscores, and spaces, determine which number is represented, or whether it is garbled.
  • Palindrome Products
    • Detect palindrome products in a given range.
  • Pascal's Triangle
    • Compute Pascal's triangle up to a given number of rows.
  • Pig Latin
    • Implement a program that translates from English to Pig Latin.
  • Pythagorean Triplet
    • Given an integer N, find all Pythagorean triplets for which a + b + c = N.
  • Variable Length Quantity
    • Implement variable length quantity encoding and decoding.
  • Affine Cipher
    • Create an implementation of the Affine cipher, an ancient encryption algorithm from the Middle East.
  • Baffling Birthdays
    • Estimate the birthday paradox's probabilities.
  • Complex Numbers
    • Implement complex numbers.
  • Flower Field
    • Mark all the flowers in a garden.
  • Prism
    • Calculate the path of a laser through refractive prisms.
  • Say
    • Given a number from 0 to 999,999,999,999, spell out that number in English.
  • State of Tic-Tac-Toe
    • Determine the game state of a match of Tic-Tac-Toe.
  • Tournament
    • Tally the results of a small football competition.
  • Transpose
    • Take input text and output it transposed.
  • Wordy
    • Parse and evaluate simple math word problems returning the answer as an integer.
  • All Your Base
    • Convert a number, represented as a sequence of digits in one base, to any other base.
  • Book Store
    • To try and encourage more sales of different books from a popular 5 book series, a bookshop has decided to offer discounts of multiple-book purchases.
  • Change
    • Correctly determine change to be given using the least number of coins.
  • Dominoes
    • Make a chain of dominoes.
  • Conway's Game of Life
    • Implement Conway's Game of Life.
  • Two Bucket
    • Given two buckets of different size, demonstrate how to measure an exact number of liters.
  • Knapsack
    • Given a knapsack that can only carry a certain weight, determine which items to put in the knapsack in order to maximize their combined value.
  • Meetup
    • Calculate the date of meetups.

Reviews

Start your review of x86-64 Assembly

Never Stop Learning.

Get personalized course recommendations, track subjects and courses with reminders, and more.

Someone learning on their laptop while sitting on the floor.