We may earn an affiliate commission when you visit our partners.
x-BIT Development

Hello, welcome to ARM 64-bit Assembly Language from x-BIT Development.

Read more

Hello, welcome to ARM 64-bit Assembly Language from x-BIT Development.

This course is intended to teach you ARM 64-bit assembly programming with Raspberry Pi. It covers basics about computer architecture, data representation and low-level programming. If you want to build your own operating system or write bare-metal programs on Raspberry Pi, you will need assembly language to communicate directly with a CPU and hardware. In this course, we will take you through the step-by-step tutorials and teach you how to write assembly programs for ARM processors. We also have a course for building an operating system on Raspberry Pi 3 and Raspberry Pi 4. If you are a beginner and want to build an operating system on Raspberry Pi, you can take the os course once you learned ARM 64-bit assembly language.

In ARM 64-bit Assembly Language course, each section contains:

   engaging videos.

   downloadable resources.

   quizzes to test what you learned.

  • In this course you will learn:

ARM assembly language from scratch.

The general computer architecture.

Data representation(unsigned and signed integers, characters) and counting systems.

Basic boolean logic.

The fundamentals of the assembly language.

AArch64 core instructions.

How to write procedures using calling convention.

How to write assembly language programs on ARM64 architecture.

How to debug programs at the machine level.

Enroll now

What's inside

Learning objectives

  • The general computer architecture
  • Understand how computer works
  • Data representation including unsigned and signed numbers, characters.
  • Master the aarch64 core instructions
  • How to write assembly programs
  • How to debug programs

Syllabus

Introduction
Computer Architecture
Introduction to Computer Architecture
Introduction to Processor Mode
Read more
Data Representation
Number Systems
Representing Integers
ASCII Strings
Rotate Instruction
Installation and Setup
Set up the building environment in Raspberry Pi
Assembly Language Basics
Assembling and Linking Basics
The First Program
Debugging
Defining Variables
Constants
Load and Store Instructions
Ldr Instruction
Str Instruction
Ldr and Str
Data Movement and Shift Instructions
Shfit Left
Shift Right
Shift instructions
Mov Instruction
Operand2 and Basic Arithmetic Instructions
Operand2
Overflow Flag
Neg Instruction
Add and Sub Instructions
Add and Sub Instructions Example
Flags
Flags Register
Carry Flag
Zero Flag
Negative Flag
Bitwise Instructions
And Instruction
Orr Instruction
And and Orr Instructions Example
Bic Instruction
Eor Instruction
Not Instruction
Branch Instructions
Introduction to Branching
B Instruction
Test Instruction
Conditional Branching Part 1
Conditional Branching Part 2
Conditional Branching Part 3
Conditional Branching
Conditional Branching Example 1
Conditional Branching Example 2
Array and Addressing Modes
Introduction to Array
Addressing Modes
PC-Relative Addressing
Immediate Addressing
Register Addressing
Endianness
Data Alignment
Multiplication and Division Instructions
Multiply Instructions
Divide Instructions
Mul and Div Instruction Example
Stack and Procedures
Introduction to Procedures
Stack
Ldp and Stp Instructions
Procedures
Nested Procedures Calls
Passing Parameters Part 1
Passing Parameters Part 2
Local Variables
Calling Convention
Calling Convention Example
Macros
Bare Metal Programming on Raspberry Pi
Intro
How to Connect Raspberry Pi to the Computer
Installation and Setup on Windows 10
Installation and Setup on Linux (ubuntu)
Installation and Setup on MacOS

Save this course

Save ARM 64-bit Assembly Language with Raspberry Pi to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in ARM 64-bit Assembly Language with Raspberry Pi with these activities:
Review Number Systems and Data Representation
Reinforce your understanding of number systems and data representation. This will provide a solid foundation for understanding how data is manipulated at the assembly level.
Browse courses on Data Representation
Show steps
  • Review different number systems (binary, decimal, hexadecimal).
  • Practice converting between number systems.
  • Study how integers and characters are represented in memory.
Create a Cheat Sheet of AArch64 Instructions
Consolidate your knowledge of AArch64 instructions by creating a cheat sheet. This will serve as a quick reference guide for future projects.
Show steps
  • List all the AArch64 instructions covered in the course.
  • For each instruction, write a brief description of its function and syntax.
  • Organize the cheat sheet for easy reference.
Read 'Programming with 64-Bit ARM Assembly Language'
Supplement the course material with a dedicated textbook on ARM64 assembly. This will provide additional examples and explanations.
Show steps
  • Obtain a copy of 'Programming with 64-Bit ARM Assembly Language'.
  • Read the chapters relevant to the current course topics.
  • Work through the examples and exercises in the book.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Assembly Code Practice: Implement Basic Algorithms
Solidify your understanding of assembly instructions by implementing basic algorithms. This will improve your ability to translate high-level logic into assembly code.
Show steps
  • Choose a few basic algorithms (e.g., factorial, Fibonacci sequence, array sorting).
  • Write assembly code to implement each algorithm.
  • Debug and test your code thoroughly.
Explore 'Operating System Design and Implementation'
Expand your knowledge of operating systems to better understand the context of bare-metal programming. This will provide a deeper appreciation for the role of assembly language.
View Melania on Amazon
Show steps
  • Obtain a copy of 'Operating System Design and Implementation'.
  • Read the chapters on memory management, process management, and system calls.
  • Relate the concepts to the ARM architecture.
Project: Simple Calculator in Assembly
Apply your knowledge of assembly language to build a simple calculator. This project will challenge you to integrate various concepts learned in the course.
Show steps
  • Design the calculator's functionality (addition, subtraction, multiplication, division).
  • Write assembly code to implement each operation.
  • Implement input and output routines.
  • Test the calculator thoroughly.
Contribute to an Open Source ARM Project
Gain practical experience by contributing to an open-source project that uses ARM assembly. This will expose you to real-world code and collaborative development practices.
Show steps
  • Find an open-source project that uses ARM assembly (e.g., a bare-metal OS or embedded system).
  • Explore the project's codebase and identify areas where you can contribute.
  • Submit a bug fix or feature enhancement.

Career center

Learners who complete ARM 64-bit Assembly Language with Raspberry Pi will develop knowledge and skills that may be useful to these careers:
Embedded Systems Engineer
An Embedded Systems Engineer designs, develops, and tests software and hardware for embedded systems. The work often involves low-level programming. This course on ARM 64-bit Assembly Language with Raspberry Pi provides a foundation for understanding how to interact directly with hardware, a crucial skill. The course’s coverage of computer architecture, AArch64 core instructions, and debugging at the machine level can help equip engineers with the knowledge to optimize embedded systems for performance and efficiency on platforms like Raspberry Pi. The section on bare metal programming is especially salient. Taking this course can aid someone who wishes to customize or fine-tune an operating system.
Operating Systems Developer
An Operating Systems Developer creates and maintains the software that manages computer hardware and resources. The work involves writing low-level code to interact with hardware. This course focusing on ARM 64-bit Assembly Language with Raspberry Pi offers a deep dive into the fundamentals necessary for this role. Learning about computer architecture, data representation, and assembly programming can help one understand how operating systems function at their core and how to optimize them for specific hardware platforms. This course, especially the section on bare metal programming on Raspberry Pi, may be useful for those interested in customizing operating systems.
Firmware Engineer
A Firmware Engineer develops the low-level software that controls hardware devices. The work requires a strong understanding of assembly language and hardware interaction. This course in ARM 64-bit Assembly Language with Raspberry Pi offers practical knowledge in these areas. The course's focus on AArch64 core instructions, assembly programming techniques, and debugging at the machine level may help someone to write and troubleshoot firmware for ARM-based systems. The section on writing assembly programs on ARM64 architecture can be useful for those aiming to become a firmware engineer.
Reverse Engineer
A Reverse Engineer analyzes software and hardware systems to understand their functionality and identify vulnerabilities. The work involves disassembling code, debugging, and understanding low-level operations. This course on ARM 64-bit Assembly Language with Raspberry Pi offers valuable skills for this role. The course's coverage of assembly language, debugging techniques, and computer architecture helps one to dissect and analyze compiled code. Learning how to debug programs at the machine level can prepare one to reverse engineer software and hardware. The lessons on assembly and linking basics may be particularly relevant.
Security Researcher
A Security Researcher investigates software and hardware systems to discover security vulnerabilities and develop exploits. The work often involves analyzing assembly code and understanding low-level system behavior. This course on ARM 64-bit Assembly Language with Raspberry Pi offers skills relevant to security research. The course's focus on assembly programming, debugging, and computer architecture helps one to identify and exploit vulnerabilities in software and hardware. The training on debugging programs at the machine level may be useful for discovering security flaws.
Systems Programmer
A Systems Programmer develops and maintains the core software components of a computer system. The work requires proficiency in assembly language and a deep understanding of computer architecture. This course covering ARM 64-bit Assembly Language with Raspberry Pi provides a strong foundation. By learning about data representation, AArch64 core instructions, and assembly programming techniques, one can better understand how to optimize system software for performance and efficiency. This course is helpful for anyone wanting to work in a low-level programming environment.
Kernel Developer
A Kernel Developer contributes to the development and maintenance of the operating system kernel. The work demands expertise in low-level programming, memory management, and hardware interaction. This course on ARM 64-bit Assembly Language with Raspberry Pi may be helpful for this role by providing fundamental knowledge of assembly language and computer architecture. The course's coverage extending to AArch64 core instructions and debugging at the machine level can aid in understanding and modifying kernel code. The section on bare metal programming provides valuable knowledge about how to work directly with hardware.
Compiler Writer
A Compiler Writer designs and implements compilers, which translate high-level programming languages into machine code. This task requires understanding assembly language, computer architecture, and code generation techniques. This course on ARM 64-bit Assembly Language with Raspberry Pi may be useful for gaining insight into these areas. The course’s exploration of data representation, AArch64 core instructions, and assembly programming equips one with the knowledge needed to create efficient and effective compilers. The modules on assembling and linking provide salient background.
Robotics Engineer
A Robotics Engineer designs, builds, and programs robots for various applications. The work often involves programming microcontrollers and embedded systems using assembly language. This course on ARM 64-bit Assembly Language with Raspberry Pi offers a solid foundation for this task. Learning about AArch64 core instructions, assembly programming, and debugging techniques helps one to control robotic hardware and optimize performance. The section on Bare Metal Programming on Raspberry Pi may be particularly practical toward robotics engineering.
Game Developer
A Game Developer creates video games for various platforms. While most game development relies on high-level languages, understanding assembly language can be beneficial for optimizing game performance and creating special effects. This course on ARM 64-bit Assembly Language with Raspberry Pi may be useful for this purpose. Learning about data representation, AArch64 core instructions, and assembly programming can allow one to fine-tune game code for specific hardware. The modules on debugging may also be useful.
Cryptographer
A Cryptographer designs and analyzes encryption algorithms to secure data. The work often requires a deep understanding of computer architecture and assembly language for optimizing cryptographic implementations. This course on ARM 64-bit Assembly Language with Raspberry Pi may be useful for understanding the low-level details of cryptographic algorithms. One learns about data representation, AArch64 core instructions, and assembly programming, which allows them to fine-tune and analyze security protocols. Note that a master's degree in mathematics or computer science is typically required.
Performance Engineer
A Performance Engineer analyzes and optimizes software systems to improve their speed, efficiency, and scalability. This often involves low-level analysis and tuning. This course on ARM 64-bit Assembly Language with Raspberry Pi provides a foundation that may be useful. By learning about computer architecture, AArch64 core instructions, debugging, and assembly programming, one gains insight into how software interacts with hardware and how to identify and resolve performance bottlenecks. The sections relating to debugging may be especially pertinent.
Electrical Engineer
An Electrical Engineer designs, develops, and tests electrical equipment and systems. While their primary focus is on hardware, understanding assembly language can be beneficial when working with microcontrollers and embedded systems. This course on ARM 64-bit Assembly Language with Raspberry Pi offers a basis that may be useful. The coverage of computer architecture, AArch64 core instructions, and low-level programming can help electrical engineers to interface with and program embedded systems. The section on bare metal programming is especially salient to understanding hardware interfaces.
Technical Writer
A Technical Writer creates documentation for software and hardware products, including user manuals, API references, and tutorials. While this role doesn't directly involve assembly programming, understanding the underlying technology improves the quality and accuracy of the documentation. This course on ARM 64-bit Assembly Language with Raspberry Pi may be helpful for gaining a better understanding of embedded systems and low-level programming concepts. One can leverage this knowledge to create more informative and effective technical documentation.
IT Support Specialist
An IT Support Specialist provides technical assistance to computer users, troubleshoot hardware and software problems, and maintain computer systems. While this role doesn't typically require assembly language skills, understanding computer architecture and low-level programming concepts can be helpful for diagnosing and resolving complex technical issues. This course on ARM 64-bit Assembly Language with Raspberry Pi may be useful for gaining a deeper understanding of how computers work at a fundamental level. This may provide insight into resolving challenging technical problems.

Reading list

We've selected two books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in ARM 64-bit Assembly Language with Raspberry Pi.
Provides a comprehensive guide to 64-bit ARM assembly language programming. It covers the AArch64 instruction set in detail, along with practical examples and exercises. It valuable resource for anyone looking to master ARM assembly language and build low-level applications. This book will add depth to the course material.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser