What is a program in self-replicating programs? I'm trying to understand the workings of artificial life as exemplified by systems like Tierra or Avida. The idea behind these systems is that organisms are modeled as assembly-language programs that replicate themselves in the memory of a computer, possibly a virtual machine. But here there is already something I don't understand (I'm not a programmer by vocation or by nature).

My idea of a computer's memory is that it's basically just a list of instructions. By default control proceeds from a given instruction to the next one in the list, but the instruction itself can send control someplace else. My question is: which sublists of this list of instructions count as programs?

Presumably the memory can be partitioned (in the set-theoretic sense) into a bunch of programs (actually copies of programs, since distinct "organisms" are allowed to have the same "genome"), plus some empty space; how does one do this?
The computer's operating system keeps track of which pieces of memory make up which program. The partition into programs is entirely arbitrary, and the only reason a section of memory counts as program is because there is a specially designated piece of memory that keeps a list of all "programs" and their memory locations.