Juan,
Lo que pasa que el formato para acceder a memoria es poniendo el operando de desplazamiento entre paréntesis rectos.
Fijate que si la comparación fuese de tamaño de 16 bits y no hubieses puesto el modificador "ptr" la comparación se haría contra el contenido del registro, y no la memoria.
Por ejemplo, no es lo mismo
CMP bx,ax
que
CMP [bx],ax
Y en ese ejemplo el modificador "ptr" no va porque no hay ambigüedad.
Saludos,
Gustavo