I'm a little confused with assembler language.

I need to write an assembly language subroutine Count according to different specifications
  1. Accepts a pointer to an array of signed words in register X.
  2. Accepts a word value in register Y, which indicates the number of array elements.
  3. Returns the number (i.e.) count) of nonzero array elements in register D.
  4. On return, preserves contents of all registers, other than the result return register.
If anyone can help i would appreciate it, thanks.