This document presents a comprehensive solution to Assignment 2 for ITC544, covering MARIE and ISA architecture. The solution addresses several key areas, including calculating the number of bits required for opcodes and addresses, determining the maximum memory size, and identifying the largest unsigned binary number that can be accommodated in memory. The assignment explores different addressing modes like immediate, direct, indirect, and indexed, calculating the effective addresses in each case. It also provides assembly code solutions for arithmetic expressions, demonstrating efficient memory access optimization. Furthermore, the solution offers a detailed explanation of MARIE instructions, including their hexadecimal codes, descriptions, and functionalities, such as load, store, add, subtract, input, output, and conditional skips. The final part of the solution includes the hexadecimal code, memory locations, and assembly instructions for a sample program, along with the value stored in the accumulator upon program termination.