I'll show you what mine does and hope it helps.
I wrote it in C, and it compiles to an executable called 'hack'.
When I run 'hack' with no arguments it shows usage information:
~/workspace/nand2tetris/projects/HackC: ./hack
usage: ./hack
An assembler for the Hack platform.
When I run 'hack' with an assembly file it produces Hack machine code.
~/workspace/nand2tetris/projects/HackC: ./hack ../06/add/Add.asm
0000000000000010
... etc
(As the previous poster suggested you should probably write it to a .hack file. I just piped its output to a text file instead.)
Then you can take those .hack files and compare them with what the visual assembler (Assembler.sh or .bat) generates for the same assembly file.
As the book suggests, it's easiest to start with a assembler which doesn't support labels and symbols, and add that in later once the non-label version works.