Salem is probly the person to ask, but Ill tell you what I know about them.
TSR stands for terminate and stay resident, meaning that the program terminates (returning to the shell), yet keeps the memory, so like nothing will over-write it. This can be usefull for a number of reason, hers an example of what I did once (just playing around):
Theres this old dos game called duke nukem 3d, that im pretty sure runs in 320x200x8, so I wrote a program that hooked something to the keyboard handler so that whenever I pressed F12 it would randomly change all of the palette entrys that the game would look all funky. After the handler was hooked, I terminated the program but stayed resident so that nothing could .......... up my interrupt service routine (or whatever its called). In order to terminate and stay resident there is probably a function in dos.h that will do it, if there isnt you can always use the dos int 21, function 31 thingy.
I havent coded in assembly for a while so this might not be correct, and Im not sure how big a paragraph is, Im thinking its 16 bytes but I donno.
mov ah, 31h
mov al 0
mov dx (Paragraphs to reserve)
Somebody please correct me if any of this is wrong