It's not about small code, it's about how fast it is. Take a look here.
p.s if you don't care speed and want small code, you can also use PUSHAD and POPAD instead of PUSH EAX EBX ECX and POP ECX EBX EAX
NOP ;<-- bullshit.
MOV [EAX + ECX],BX
CMP ECX,-1 ;bullshit, DEC instruction is already affecting OF, SF, ZF, AF, PF. At this point, you need JNS @Loopzy (or you can add size 1 and JNZ @Loopzy, whatever.)
NOP ;another bullshit.