[Your second post just came in as I'm typing this; I'll post it anyway, for the benefit of future readers.]
Mux16(a=x, b=false, sel=zx, out=postzx);
And now it "compiles" fine (meaning the simulator will open it without errors) but I get an error when running the test script when zx is set to value 1, meaning when it's supposed to actually zero the values. Is there another way to zero all the values that I'm missing?
This is a correct way to select between 'x' and zero. The error is somewhere else in your circuit.
The ALU can be hard to debug because the computation and status flag outputs all need to be correct, and errors in the status circuitry can make it hard to concentrate on getting the computation correct. See this post
for an ALU test that ignores the status flags an lets you get the computation working. Once that test passes, you can run the ALU.tst script and debug your status flags.