You're not using R2 to index the array so you are comparing the first value with zero ten times. I'm no ARM expert but, if you want to do that then you will have to use the equivalent syntax of LDR R3, [R0+R2].
In fact, why bother? Just add the 4 to the pointer (R0) instead of R2 and it always looks at the right place.
A couple of points:
BEQ MOVE1
B CNT
A conditional branch followed by an unconditional one means you've got the comparison wrong. (unless you have a massive block of code and need to go from relative to absolute addressing).
Don't count up, count down.
MOV R1, #10
...
SUB R1, #1
BNE LOP ; Branches unless R1 is now zero
You might also find that LDR sets the zero flag (I've only ever come across one assembler that didn't but try it or look it up) and so there's no need to actually compare it to zero.
When you're working with assembler, you have to learn to think flexibly. A more compact version of your code might be:
ENTRY
LDR R0,=ARR
MOV R1, #10 ; Loop Iterator
MOV R7, #0 ; Number Of Zeros In The Array
LOP LDR R3, [R0], #4 ; Get current number, adds 4 to R0 afterwards - points to next number
CMP R3, #0 ; Might not be necessary, see if it works without this
BNE CNT ; Next loop if not zero
ADD R7, R7, #1 ; Add 1 to count then drop down
CNT SUBS R1, R1, #1 ; S suffix sets z flag (New one on me).
BNE LOP
ARR DCD 3,-5,-1,0,10,0,4,-8,7,6
EXT