This is some code from my ZTSS SDK v 3.2 B current release is 2.0 A. Why do I say "Getting away with coding murder" ? This particular procedure has no local variables, checks for and flags six different errors, contains a loop, calls two different procedures (which both require two parameters) and only uses four registers directly. (if you count eax.)
If you are interested in learning these high level addressing techniques
download the ZTSS SDK from the projects source code section here @ WinASM.net

If we are going to share source code, we should all write "better" code. No?
P.S. the code pointed to by EDI is a MASM STRUCT. ZTSLICEFLAG is an ENUM.