Hi John,
The subtlety you may be missing is "linker".. You wouldn't expect a linkable object file to know where the linker's going to put things. In the case of "-f bin", Nasm serves as its own (rudimentary) linker. But this doesn't happen until the output driver. At the time the "list" file is generated, Nasm hasn't yet added in the "org".
Between you and me, I consider a "list" file almost completely useless. Some people swear by 'em, but it seems to me that it's mostly telling me something I already knew. Okay to show how the macros expand, if you didn't know, I guess.
I like to disassemble the mess to see what really happened.
"ndisasm -o 0x100 test.com > test.dis"
00000100 0401 add al,0x1
00000102 0000 add [bx+si],al
As you can see, ndisasm attempts to disassemble everything, whether it's an instruction or not, but if you look in the second column you can see what the bytes are.
Another option you might like - in the source code, not on the command line - is "[map]"...
[map all test.map]
org 0x100
dd lbl
lbl:
- NASM Map file ---------------------------------------------------------------
Source file: test.asm
Output file: test.com
-- Program origin -------------------------------------------------------------
00000100
-- Sections (summary) ---------------------------------------------------------
Vstart Start Stop Length Class Name
100 100 104 00000004 progbits .text
-- Sections (detailed) --------------------------------------------------------
---- Section .text ------------------------------------------------------------
class: progbits
length: 4
start: 100
align: not defined
follows: not defined
vstart: 100
valign: not defined
vfollows: not defined
-- Symbols --------------------------------------------------------------------
---- Section .text ------------------------------------------------------------
Real Virtual Name
104 104 lbl
Something more like a "map" file you'd get from a linker.
Nasm isn't really ignoring your "org", it just doesn't show in the "list" file...
Best,
Frank