El problema es que primero ejecutás una consulta vacía y después le das contenido...
Probá así
Código PHP:
$sql="INSERT INTO profesores (dni, nombre, asignatura) VALUES('$_POST[DNI]','$_POST[Nombre]','$_POST[Asignatura]'}";
$result=mysql_query($sql);
En caso de que no funcione, podés hacer
Código PHP:
$result=mysql_query($sql) or die("Error en consulta: ".mysql_error()); // y con esto podés ver el error mysql q se genera