First think that you want to do if you havent already done so is write the VM source as comments in your ASM output. This will let you have the ASM file open in a text editor at the same that you are stepping in the CPUEmulator and will save you from getting lost in the ASM code.
A=M
M=D
// label LOOP_START
(BasicLoop$$LOOP_START)
// pop argument 0 // counter--
@SP
...
M=D
// push argument 0
@ARG
...
M=D
// if-goto LOOP_START // If counter != 0, goto LOOP_START
@SP
RAM[0] is the stack pointer. The test initializes it to 256 and at the end of the test everything that was pushed onto the stack should have been popped or consumed by an operator like 'add'. As the final command, the sum is pushed onto the stack so the final SP value should be 257.
Your test is ending with a large value in SP so it looks like you have an operator that is not properly consuming its operands. The new operator in this test is 'if-goto' so look closely at its generated ASM and step through it to see that it's doing what you think it is. You might want to step through BasicLoop.vm using BasicLoopVME.tst to confirm that you understand how "if-goto" is supposed to work.
--Mark