I can't actually run your code because I don't have the hardware. I have never used block memory before, so I can't comment on that.
Otherwise, it seems like your code should work. My only comments are that it seems like you are essentially working 1 iteration behind on everything. It might work just fine. But you are putting everything into a shift register and not working with that data until the next iteration, and thus looking at the data from 1 iteration ago compared to 2 iterations ago.
The two address shift registers seem like they would always contain the same value (unless your VI happens to start with different values in those controls. Otherwise, I think you could eliminate one of the shift registers and split the wire between the two Write Memory Blocks.
I'm not sure you even need controls for Numeric, Address 1, and Address 2. They seem to be more to just initialized the shift registers than for any user interaction. I would just turn them into controls unless there is some reason you need a user to interact with them before your FPGA starts.