Skip to content

strathmore-uni/Assembly_Programming

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Assembly Programming Course

Welcome to the Assembly Programming Course! This course will introduce you to the fundamentals of assembly language using the NASM assembler. By the end of this course, you will have a solid understanding of how low-level programming works, and you will be able to write, debug, and optimize assembly programs.


Course Overview

This course is designed to teach you assembly language programming from the ground up. Over 13 weeks, we will cover topics such as:

  • CPU architecture and registers
  • Data representation and memory manipulation
  • Control flow (loops, conditionals, and jumps)
  • Functions and the call stack
  • System calls and file handling
  • Debugging and optimization

Each week will consist of a theoretical lecture and a practical session where you will write assembly programs.


Repository Structure

  • syllabus/: A detailed course syllabus and schedule.
  • setup/: Instructions on how to install and configure NASM on different operating systems (Windows, Linux, macOS) and tools for debugging.
  • lectures/: Weekly lecture materials, including theoretical notes and sample code.
  • examples/: Additional example programs that demonstrate key concepts in assembly programming.
  • assignments/: Weekly assignments for you to complete.
  • solutions/: Solutions to assignments will be added here after the due dates.
  • final_project/: Guidelines and examples for the final project.
  • resources/: Extra resources like books, websites, and cheat sheets.

Setup Instructions

Before you begin, you need to install NASM and set up your development environment.

Step 1: Install NASM

Step 2: Install GDB (Optional but recommended)

For debugging your assembly code, you can use the GNU Debugger (GDB). Follow the instructions in debugging.md to set up GDB.

Step 3: Test Your Setup

Once NASM is installed, test your environment by compiling and running the sample Hello, World! program in week01_intro. The instructions for compiling and running are provided in that folder.


Course Objectives

By the end of this course, you should be able to:

  1. Understand how a CPU executes low-level instructions.
  2. Write assembly programs that perform arithmetic, control flow, and file operations.
  3. Work with CPU registers, memory, and the stack.
  4. Debug and optimize assembly code.
  5. Integrate assembly code with higher-level languages (e.g., C).

How to Use This Repository

  1. Follow the Syllabus: Start with the syllabus.md to see the course outline.
  2. Set Up Your Environment: Go through the setup instructions for your operating system.
  3. Attend Lectures: Each week, review the notes and code examples in the lectures/ folder.
  4. Complete Assignments: Assignments are in the assignments/ folder. Submit your solutions according to the course deadlines.
  5. Review Solutions: After the assignment deadline, you can check the solutions/ folder to compare your work.
  6. Work on the Final Project: The final project guidelines are in the final_project/ folder.

Support and Resources

If you need help, please refer to the resources folder for additional reading materials, links to tutorials, and debugging tips. Feel free to ask questions during practical sessions or via the course communication channels.


Happy Coding!

This course will challenge you to think in new ways and will give you a deeper understanding of how computers work at the most fundamental level. Let's get started!


About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published