What the old Nasm manual used to say about the ModR/M byte (and the SIB byte, if any) can be found here:
http://home.myfairpoint.net/fbkotler/nasmdocc.html#section-A.2.5I don't know how "clear" you'll find it. I find it rather confusing, myself. You might be better off with Intel/AMD manuals, or perhaps Wikipedia has something on it. I just let Nasm worry about it. If you do your own conversion from mnemonics to machine code, you put poor Nasm out of a job.
I'm not sure what you mean by "stacks", the way you use it. The registers you mention - CS, DS, SS (and ES, FS, and GS) are segment registers. SS is the stack segment, otherwise they don't have much to do with "stacks". They don't use quite the same instructions as "general purpose registers". In particular, we can't move an immediate value into a segment register, only a general purpose register or memory. That's why you'll see:
mov ax, data
mov ds, ax
; or
push cs
pop ds
; mov ds, 0 ; No!
They are interpreted differently in real mode and protected mode. In real mode, the value in the segreg is multiplied by 16 and added to an offset to form an address. In protected mode, the value in the segreg is a "selector" - essentially an index into an array of "descriptors" - structures containing "base", "limit", access rights and some other flags. The base is added to an offset to form an address. In most cases, the base is zero, so the address is just the offset. (FS is an exception - used for "thread local storage")
There's more to it, of course - too much to try to explain here. If you have a more specific question, we might be able to help you more (or maybe not...).
Best,
Frank