Общее кол-во диагоналей = num = (n + m - 1)
Самая длинная диагональ = max = (n <= m) ? n : m;

Код AS3:
var num:uint = (n + m - 1);
var max:uint = (n <= m) ? n : m;
var diagArr:Array = [];
for(var k:uint = 0;k<num;k++)
{
var retArr:Array = [];
var x:uint = (k > m) ? (k - m - 1) : 0;
var y:uint = (k <= n) ? k : n;
var l:uint = (k < max) ? k : 2*max - k;
for(var i:uint = 0;i<l;i++)
{
retArr.push(sourceArr[x+i][y+i]);
}
diagArr.push(retArr);
}