Is there a software that can simulate a CPU with RAM?
CPU Sim would appear to fit the bill.
CPU Sim is a Java application that allows users to design simple computer CPUs at the microcode level and to run machine-language or assembly-language programs on those CPUs through simulation. It can be used to simulate a variety of architectures, including accumulator-based, RISC-like, or stack-based (such as the JVM) architectures. It is a useful tool for instructors who want their students to get hands-on exposure to a variety of architectures and to get a chance to design and implement their own architectures and write programs in machine language and assembly language for their architectures.
The CPU Sim application is a fully-integrated development environment
that includes the following features.
Tools for designing a CPU at the register-transfer level:
Dialogs for specifying the number and width of registers, register arrays, and RAMs.
Dialogs for specifying the microinstructions (e.g., bit transfers between registers)
that are used to implement the machine instructions
A dialog for specifying the machine instructions, including:
the number of bits in each instruction
the opcode value and the number of bits the opcode occupies
the number of the operands and the properties of each operand
the semantics of each instruction
(as specified by a sequence of microinstructions)
A text editor with syntax highlighting for writing assembly language programs
An assembler for converting assembly programs into machine code for the user's CPU.
A debugger for stepping forward and backward through the execution of such programs,
inspecting and optionally changing the machine state after each step.

It's written in Java and requires a JRE so presumably it will run on Linux, and it is freeware.