I'm not able to duplicate this problem. With a comma after the "at ..." line - if it's on two lines - and no comma in "at ..., dd 0" - on one line - both fail. But exactly as you show it, it assembles fine for me (warns about uninitialized garbage in section code16 in "-f bin" mode, silent in "-f obj" mode).
The only thing I can suggest is fool with comma/no comma and one line/two lines - watching where the errors occur, and see if you can figure out what Nasm doesn't like. For me, it seems to work "just like in the book", and your code is fine...
Sorry I can't be more help.
Best,
Frank