For a lot of instructions there is a particular spot in the opcode that indicates when using 8, 16 or 32 bit operands. NDISASM simply looks at these bits and even though redundant, as this particular set of instructions will only use an 8 bit value, byte is prepended. As an example
mov byte [ Next_Index], 41
is required, otherwise the assembler doesn't know what type of data Next_Index is pointing to. Whereas;
mov [ Next_Index], al
isn't, because assembler knows AL is 8 bits
MASM you'd have to use;
mov byte ptr [ Next_Index], 41