COREWAR

/
Step 11: Copying an Entire Box with "MOV"
🎯Copy B-value 99 into Cell 0003(0/99)

MISSIONS (30 STEPS)

CH.1: UI & MEMORY BASICS (1-6)
BASIC★☆☆
Step 1: The "STEP" Button That Advances Time
🔒
BASIC★☆☆
Step 2: Process Termination and Restoring with "RESET"
🔒
BASIC★☆☆
Step 3: "Edit Mode" vs. "Running Mode"EDIT
🔒
BASIC★☆☆
Step 4: The Three Rooms of a Memory Box (Changing B)EDIT
🔒
BASIC★☆☆
Step 5: Modifying Both the Left Room (A) and Right Room (B)EDIT
🔒
BASIC★☆☆
Step 6: Literal Numbers (#) vs. Relative Addresses ($)EDIT
CH.2: CORE INSTRUCTIONS (7-13)
🔒
ARITHMETIC★☆☆
Step 7: Observing the "ADD" Instruction
🔒
ARITHMETIC★☆☆
Step 8: Changing the Number to Add (A-Field)EDIT
🔒
ARITHMETIC★☆☆
Step 9: Changing the Target Address (B-Field)EDIT
🔒
ARITHMETIC★☆☆
Step 10: Using the Subtraction Instruction "SUB"EDIT
🔒
BASIC★☆☆
Step 11: Copying an Entire Box with "MOV"EDIT
🔒
CONTROL★☆☆
Step 12: Looping Back in Time with "JMP"EDIT
🔒
CONTROL★☆☆
Step 13: Build Your First Program (Automatic Counter)EDIT
CH.3: VON NEUMANN & DIGITAL LIFE (14-18)
🔒
BASIC★☆☆
Step 14: Why Does "DAT" Become a Bomb?EDIT
🔒
BASIC★☆☆
Step 15: Copying Your Own Instruction (Code = Data)EDIT
🔒
BASIC★☆☆
Step 16: Observation: Stepping Through "Imp", the Oldest Digital Organism
🔒
BASIC★☆☆
Step 17: Modifying the Imp (Copy Destination Experiment)EDIT
🔒
ARITHMETIC★★☆
Step 18: Understanding Indirect Addressing (@ Pointers)EDIT
CH.4: CLASSIC ARCHETYPES (19-24)
🔒
STRATEGY★★☆
Step 19: Observation: Dissecting the "Dwarf" Bomber Step-by-Step
🔒
STRATEGY★★☆
Step 20: Modifying Dwarf (Changing the Bombing Interval)EDIT
🔒
STRATEGY★★☆
Step 21: First Combat: Tune Your Bomb Interval to Destroy the TargetEDIT
🔒
CONTROL★★☆
Step 22: Observation: The "SPL" Split Instruction and Mitosis
🔒
CONTROL★★☆
Step 23: Finding Enemies with Conditional Skip "SEQ / CMP"EDIT
🔒
STRATEGY★★☆
Step 24: Stopping an Imp with a Pre-Decrement "Imp-Gate"EDIT
CH.5: BATTLE EVOLUTION (25-30)
🔒
STRATEGY★★☆
Step 25: [Stone] High-Speed Bomber and Step Size TuningEDIT
🔒
STRATEGY★★☆
Step 26: [Paper] Observing the Self-Replicating Swarm "Mice"
🔒
STRATEGY★★★
Step 27: [Modifying Paper] Tune Clone Dispersal Distance to Overwhelm StoneEDIT
🔒
STRATEGY★★☆
Step 28: [Scissors] Tuning Scanner Stride to Shred PaperEDIT
🔒
STRATEGY★★★
Step 29: [Trap] Abducting Enemy Processes with "Vampire"EDIT
🔒
STRATEGY★★★
Step 30: Graduation Exam: Tune Your Warrior and Win the Final BattleEDIT
🟢 EDIT MODE (Click cells to modify)
[Addr][Opcode][A (Left)][B (Right)]
📦 DATA / BOMB (DAT)
0000
▼MOV
#
$
👈 EDIT
0001
▼MOV
<
<
0002
↺JMN
$
$
0003
❖SPL
@
#
0004
+ADD
#
$
0005
↺JMP
$
$
0006
■DAT
$0
$0
++ ADD ROW
0007
■DAT
$0
$0
0008
■DAT
$0
$0
0009
■DAT
$0
$0
0010
■DAT
$0
$0
0011
■DAT
$0
$0
0012
■DAT
$0
$0
0013
■DAT
$0
$0
0014
■DAT
$0
$0
0015
■DAT
$0
$0
0016
■DAT
$0
$0
0017
■DAT
$0
$0
0018
■DAT
$0
$0
0019
■DAT
$0
$0
0020
■DAT
$0
$0
0021
■DAT
$0
$0
0022
■DAT
$0
$0
0023
■DAT
$0
$0
0024
■DAT
$0
$0
0025
■DAT
$0
$0
0026
■DAT
$0
$0
0027
■DAT
$0
$0
🏟️ARENA (20 ROWS)SCOPE: 0000 - 0019
[CORE MEMORY 800 CELLS (20 ROWS × 40 COLS)]1:1 Row Synced with Editor
TASKS: 0
CYC: 0
📖 LECTURE NOTE // STEP 11 OF 30Chapter 2: Core Instructions & Autonomous Loops⏱ 5 min read
📖 Lecture Note: Computer Science & Artificial Life Principles Behind This Experiment

The True Nature of "MOV": Not Movement, But Replication and Overwrite

Why the source cell remains intact during a MOV, and how whole-instruction copying (.I) powers both attacks and life

#MOV (Move / Copy)#Non-Destructive Read#Destructive Write#Instruction Modifier (.I)#Memory Transcription
🔬Step 11: Copying an Entire Box with "MOV"

MOV (Move / Copy) is the most important instruction in CoreWar! - A (Left Address): Source box to copy from - B (Right Address): Destination box to copy to

Cell 0001 (1 row down) holds the treasure data DAT #0, #99. Currently, 0000 says MOV.I $1, $2 (copy 1 row down into 2 rows down).

🎯 Your Task Change the B (Right Address) of 0000 from $2 to $3 (3 rows down = Cell 0003) and press [STEP] to copy the treasure (99) into Cell 0003!

1. Assembly's Greatest Misnomer: "MOV" Copies, It Does Not Move!

In Step 11, you used the single most important instruction in CoreWar—"MOV"—to transfer the treasure data ("DAT #0, #99") from Address 0001 into Address 0003.

Look closely at both Address 0001 (the source) and Address 0003 (the destination) after pressing [STEP]. While the value 99 now sits inside Address 0003, the original 99 at Address 0001 is still sitting there completely intact!

Because "MOV" is short for "Move", almost every newcomer to assembly language initially assumes that the data is removed from the source box and relocated to the destination. In reality, across all assembly languages (x86, ARM, and Redcode), "MOV" is a historical misnomer: hardware MOV never deletes the source. It performs a COPY operation, duplicating the source cell's contents and overwriting the destination cell. If a CPU actually had to zero out the source cell every time it copied a value, every single data transfer would require two memory write cycles instead of one, cutting memory bandwidth in half!

Before [STEP]:
  [0000] MOV.I $1, $3
  [0001] DAT.F #0, #99  ──(Non-Destructive Read)──┐
  [0003] DAT.F #0, #0   ◄──(Destructive Overwrite)─┘

After [STEP]:
  [0001] DAT.F #0, #99  (Original remains intact!)
  [0003] DAT.F #0, #99  (Exact clone created at destination!)

2. The Law of Non-Destructive Read and Destructive Write

Computer memory obeys two fundamental physical laws during any data transfer:

First is NON-DESTRUCTIVE READ: Reading the state of a memory cell never consumes or erases that cell. Because reading is non-destructive, a warrior can keep a single master template (such as a DAT bomb or its own genetic code) in one cell and stamp out thousands of copies from it without ever exhausting the original.

Second is DESTRUCTIVE WRITE (Overwrite): Writing data into a memory cell completely obliterates whatever instruction or number previously occupied that box. There is no "undo" buffer in raw RAM.

Every offensive and reproductive strategy in CoreWar emerges directly from the combination of these two laws. If you copy a passive DAT cell onto an enemy warrior's code, the destructive write erases their vital instructions and replaces them with a lethal data bomb. Conversely, if you copy your own executable instructions into empty memory, you create a living clone of yourself. Notice how this mirrors biological genetics: when RNA polymerase reads a strand of DNA, the original DNA template is read non-destructively so it can be transcribed again and again, while the destination region in the cell is actively populated with new molecular structures.

3. The Power of the ".I" (Whole Instruction) Modifier

Notice the ".I" modifier attached to "MOV.I $1, $3". Earlier, we saw ".AB", which only transfers a single number from the left room to the right room. The ".I" modifier stands for Instruction, and it unlocks the full power of MOV: in a single clock cycle, "MOV.I" copies the ENTIRE memory cell—its Opcode, its Modifier, its A-mode and A-value, and its B-mode and B-value—as one complete unit!

In other words, "MOV.I" does not merely copy a number; it clones an entire cellular structure from one memory address to another. Keep this capability in mind—in Chapter 3, this exact instruction will give birth to self-replicating digital life. In modern computer architecture, bulk data transfer operations (such as "rep movsq" on x86 or Direct Memory Access / DMA controllers) are heavily optimized because moving structured blocks of memory is the most frequent task performed by operating systems—whether copying network buffers, rendering video frames, or duplicating process memory pages during a fork. In CoreWar, "MOV.I" is your universal tool for both creation and destruction: it can copy a lethal DAT bomb onto an enemy's head, or transcribe your own living instructions into new territory.

🔒

🔒 MISSION CLEAR Unlocks the Full Lecture Note

Complete the experiment in the simulator above to automatically unlock the full deep-dive article—or click below to read the full text immediately.