RoTaTech's masked move example will not work with your counter reset example. The masked move will only work on a continuous group of bits. Counter resets are not a continuous string of bits.
A masked move is useful if you are only concerned about a specific group of bits in a word and you only want to work with their status. It is also useful in building up a word out of two bytes or separating a word into it's two byte values. For example, to conserve space some devices will pack two unrelated byte values together into a single word and transfer that to and from the plc. An easy way to get these bytes back apart on the plc side is to use two masked moves, one with a mask of FF00h and the other with a mask of 00FFh. However, this same result could be achieved with a word AND.
Just as importantly you can put two bytes together into a single word with a masked move. When using the masked move, bits in the destination aligned with a 0 in the mask are left unchanged. So you can MOV in the low byte, multiply the high byte by 256 and then MVM the result through a mask of FF00h into the word already containing the low byte without affecting the low byte bit pattern.
I used bytes in my example but the concept applies to any number of bits in a word. And the mask bit patterns does not need to be continuous.
As for your counter case I don't know of a real sexy way to do that. Your best bet is probably to just use the direct approach with branches.
Keith