When you jump to an FWORD PTR, what you're doing is a "far jump" -- that is, the address memory being pointed at consists of contains a 16-bit "selector" (which refers to a segment entry in either the GDT or LDT), and a 32-bit offset from the beginning of the segment the selector refers to. The segment descriptor contains data about the segment, of course...including where in memory it starts.
During the jump, the CPU does some privilege checks to make sure the selector is valid and permitted (there's privilege levels and segment types and such involved), then it effectively loads the first 16 bits into CS, and the rest into EIP. From then on, code addresses effectively get the CS segment's base address added to them to turn them into virtual addresses.