I suspect the "reason" is that Bochs is messin' with ya. I suspect that if you look closely at the opcodes, there's no "ds" prefix (0x3e) there - Bochs is just thowing it into the disassembly. If there is a prefix there, it is redundant - it would default to ds anyway.
On x86, an address is always segment:offset. The default for eip is cs, for %esp and %ebp it's ss, otherwise it's ds. In any modern OS, the segment registers - selectors - reference a descriptor with base of zero and a limit of 4G-1, so segment:offset resolves to just offset.
There's an exception to that. Your first code, where you reference an IDT, I'm not too sure about, but the pointer structure to a GDT or LDT has a 16-bit size and a 32-bit address - this address is a linear address, not segment:offset.
obviously, this offset is beyond segment limit.
Well... maybe. What have you set the segment limit to? If you haven't, it's probably 4G-1. The address, 0x804d2c0 looks like a perfectly plausible address for a Linux data section to me. What have you got located there? It "better" be a 32-bit address to go in %esp followed by a 16-bit selector that points to a valid stack descriptor that you've set up in a global or local descriptor table or you're gonna crash when you execute lss.
I said that 0x805d2c0 sounded like a Linux address, but I have a feeling we're "not in Kansas anymore". Where are we? What are you trying to do?
I can see that your code is in AT&T syntax. Not really on-topic here, but we can try to help you anyway. Some of us know a little AT&T although we might not like it (I don't!). But "code is code" I always say - rather optimistically.
Best,
Frank