This is my first code written in assembly for an Atmega328p(AVR architecture). It prints "Hello World!" on a 16 x 2 LCD. This repository marks my first experience in assembly programming. For future experiences I'm currently switching to STM32 microcontroller while studying FPGA as a 1B student at University of Waterloo as of May 2025.
Attached in this repository is the Source Code and Logic Analyzer File.
Here is a screenshot of the logic analyzer's output:
For the circuit, this is the schematic:
The demo image of my LCD:
Message to future engineers:
Low level programming is a must for deeply understanding computer architecture, especially for chip design and control system design.
It may be intimidating at first but trust me, it will come handy in your Engineering career.
To start this journey, I suggest practicing with Port Registers First and slowly easing into assembly where you can practice writing code for
Interrupt Service Routine(ISR), manipulating Stack, and performing simple I/O operations using Registers.


