volatile MATRIX &vmat = mat;
として、
 asm volatile("ここで mat に書き込む" :: "r"(&mat));
以降では vmat を使うとどうなる?