id: 2
title: Data Mover
subtitle: Copying between registers
description: Learn how to copy data between registers

tutorial:
  - title: Register-to-register copy
    text: >
      MOV can also **copy** the value of one register into another (no # needed):
    code: |
      MOV R1, R0    ; copy R0 into R1
  - title: It's a copy, not a move!
    text: >
      Despite being called "MOV" (move), it's actually a **copy**. After it runs
      R0 still holds its value, and R1 now matches it.

goal: R0 already holds **7** — copy it into both **R1** and **R2**

initialState:
  registers:
    R0: 7

testCases:
  - init: {}
    expected:
      registers:
        R0: 7
        R1: 7
        R2: 7

hints:
  - "MOV register, register — copies right into left"
  - "MOV R1, R0 copies R0 into R1"
  - "Answer: MOV R1, R0 / MOV R2, R0 / XHLT"

starThresholds: [3, 4, 6]

starterCode: |
  ; R0 = 7
  ; Copy R0 into R1 and R2


  XHLT

showMemory: false
