You may have separate groups of data in named sections text or data that you want to end up near to each other in the object file, even though they are not contiguous in the assembler source. Within each section, there can be numbered subsections with values from 0 to 8192. Objects assembled into the same subsection go into the object file together with other objects in the same subsection. For example, a compiler might want to store constants in the text section, but might not want to have them interspersed with the program being assembled.
Subsections are optional.
If you do not use subsections, everything goes in subsection number zero. Each subsection is zero-padded up to a multiple of four bytes. Subsections appear in your object file in numeric order, lowest numbered to highest. They just see all your text subsections as a text section, and all your data subsections as a data section. Expression should be an absolute expression.