public void ComputeEffectiveAddress() {
         
      String memoryAddr;
      
        
        if (getXF().get().equals("00") & getI().get().equals("0")) {
            
            getMAR().set(getADDR().get());
            pause(MIDDLE);
            getMBR().set(getMEMORY().get(getMAR().get()));
            pause(MIDDLE);
           
           
        }
       
        else if ((getXF().get().equals("01")||getXF().get().equals("10")||getXF().get().equals("11")) & getI().get().equals("0") )  {  
            
            getALU().OP1.set(getADDR().get());
            getALU().OP2.set(SelectIndexRegister().get());
            getALU().add(); 
            getMAR().set(getALU().RES.get());
            pause(MIDDLE);
            getMBR().set(getMEMORY().get(getMAR().get()));
            pause(MIDDLE);

        }
        
        else if (getXF().get().equals("00") & getI().get().equals("1")) {
            getMAR().set(getADDR().get());
            pause(MIDDLE);
            memoryAddr = getMAR().get();
            getMBR().set(getMEMORY().get(memoryAddr));
            pause(MIDDLE);
            getMAR().set(getMBR().get());
            pause(MIDDLE);
            getMBR().set(getMEMORY().get(getMAR().get()));
            pause(MIDDLE);
     
        }
        
        else {
            getALU().OP1.set(getADDR().get());
            getALU().OP2.set(SelectIndexRegister().get());
            getALU().add();
            getMAR().set(getMEMORY().get(getALU().RES.get()));
            pause(MIDDLE);
            getMBR().set(getMEMORY().get(getMAR().get()));
            pause(MIDDLE);

        }
   
   }