Main memory stores data and programs that the CPU can access directly. RAM is volatile memory that temporarily stores data and programs, while ROM is non-volatile and stores data permanently. Machine code consists of binary instructions that the CPU understands, while assembly language uses symbolic codes to represent machine code instructions more readably for programmers. The fetch-execute cycle describes how the CPU fetches instructions from memory one by one, decodes and executes them, then fetches the next instruction in a repeated loop. It involves the program counter keeping track of the next instruction address, and registers for temporarily storing the fetched instruction and results.