No se puede hacer lo que planteas. La directiva byte por y word ptr lo que hacen es desambiguar una instrucción que por sus parámetros no se sabe si debe operar con bytes o words.
En tus ejemplos no había ambigüedad porque DI y SI son registros de 16 bits por lo que la instrucción va a operar con palabras.
El caso de uso de byte ptr y word ptr es por ejemplo cuando la instrucción tiene un operando a memoria y otro que es un inmediato. Si hay 2 variantes de la instrucción, una que opera a nivel de byte y otra a nivel de palabra entonces debés desambiguar indicando si es byte ptr o word ptr.
Otro ejemplo sería por ejemplo INC con operando a memoria.
En tu ejemplo si queres trabajar a nivel de byte tenes que copiar el registro SI o DI a AX o BX o CX o DX y luego operar con la parte baja del registro utilizado(por ejemplo AL)
Saludos,
Gustavo