Estimado,
Las instrucciones que acceden a memoria pueden hacerlo en modos de 8 o 16 bits (1 o 2 bytes). El modo queda determinado si hay algún registro interviniendo en la operación. Por ejemplo, la instrucción:
mov AL, ES:[40]
Es de 8 bits porque se está moviendo desde a memoria a un registro de 8 bits. Ahora, la siguiente instrucción:
cmp [BX + 4], CX
Es de 16 bits, porque se está comparando memoria con un registro de 16 bits. Las directivas byte ptr y word ptr solo intervienen cuando hay ambigüedad, es decir, cuando no aparecen registros en la instrucción (porque un registro ya te define el modo), el único ejemplo que les aparece es cuando se trabaja con memoria vs inmediato, por ejemplo:
ADD ES:[SI], 4
Esa instrucción podría indicar tanto agregar 4 al byte apuntado por ES:[SI], o agregar 4 a la palabra de 16 bits que inicia en ES:[SI]. Para desambiguar, se debe usar byte ptr o word ptr.
ADD word ptr ES:[SI], 4 , por ejemplo.
En caso de que la instrucción sea de 16 bits, efectivamente funciona como vos decís, se trabaja con el byte apuntado por la instrucción (en el caso anterior ES;[SI]), y el byte siguiente (ES:[SI + 1]). Como x86 es little endian, el primero es el byte bajo de la palabra y el segundo el byte alto.
Avisame si algo no se entiende :)
Saludos,
Federico