The key is to give Mathematica clues about the constants. For example, if m>0 then a^(-m/2) has an asymptote at a=0. You can give Mathematica information about the constants using the Assumptions option. For example, if 0 < a0 < af, then Mathematica does not have to worry about a possible asymptote at a=0:
Integrate[a^(-m/2), {a, a0, af}, Assumptions -> 0 < a0 < af]
This quickly returns the value:
(2 (a0^(1 - m/2) - af^(1 - m/2)))/(-2 + m)