2byteのshort型データどうしの引き算で
オーバーフローとアンダーフローを検出するロジックを教えてください

例えばこのような演算はアンダーフローになります
short a,b,c;
a = -32768, b = 100;
c = a - b; //アンダーフロー

以下のような関数を使って事前に判定したいのです。
(Cの機能を使わずに関数で判断したい)
この関数の中身を教えてください。

//引き算のオーバーフローとアンダーフローを検出する関数
int chk_sub_overf_underf(short a, shortb);
戻り値が0なら正常、1ならオーバーフロー、-1ならアンダーフロー