@Override
    public Word getMemoryCell(DCPU dcpu, OperandMode mode) {
        dcpu.getPc().inc();
        final Word totalValue = dcpu.getRam(dcpu.getPc()).clone();        
        Register register;
        switch (this.value) {
            case 0x10:
                register = Register.A;
                break;
            case 0x11:
                register = Register.B;
                break;
            case 0x12:
                register = Register.C;
                break;
            case 0x13:
                register = Register.X;
                break;
            case 0x14:
                register = Register.Y;
                break;
            case 0x15:
                register = Register.Z;
                break;
            case 0x16:
                register = Register.I;
                break;
            case 0x17:
                register = Register.J;
                break;
            default:
                throw new IllegalArgumentException("value is not in range");
        }
        
        totalValue.addLocal(dcpu.getRegister(register));
        return dcpu.getRam(totalValue);
    }