(2015+3+11)-(1900+1+1) gives 127
as that field is declared as a smalldatetime, it becomes the 126th day of the year 1900 (0th day is 1900-01-01)
this is confirmed by running select @ which returns 1900-05-08 00:00:00
the ASCII function takes a varchar so the smalldatetime is implicitly converted to varchar first
if we explicitly convert it using select cast(@ as varchar (20) ) I get May 8 1900 12:00AM
the ASCII function takes the first character from the varchar, which is the letter M so returns 77 which is its ASCII code
so I agree with Rune Bivrin, in that it is a stupid question as it relies on regional settings, and why would you ever what the ASCII value of the first character from the date?