Ehm, no, once you are in assembly, you do whatever you want to do. There is no compiler to mess things up for you. (Although, it's leaving that to you hehe... :-)
I think the compiler still needs to know that the value might be modified from the outside. Otherwise it might optimize the read operation away from the codepath.
Yes, that is part of creating inline assembly in C or C++ code: