Скомилировал компилятором GCC 2.95.3, все нормально
void wr_16 (int addr, int val)
{
64: e50b0010 str r0, [fp, -#16]
68: e50b1014 str r1, [fp, -#20]
*(short*) (addr) = (short) val;
6c: e51b3010 ldr r3, [fp, -#16]
70: e15b21b4 ldrh r2, [fp, -#20]
74: e1c320b0 strh r2, [r3]
}
78: e91ba800 ldmdb fp, {fp, sp, pc}