Смысл последней строки в том, что если получится отрицательное число, то его можно просто сложить и за счеть арифметических свойств дополнительного кода получится правильный результат? Я хотел так сделать, но меня смутило, что будет если результат первого вычитания окажется меньше -32768. Не уверен, что тогда сложение будет корректно работать. Поэтому в итоге написал топорно, но зато вроде на 100 процентов надежно:
cmp r1, r2
bcc MOD55
sub r1, r1, r2
b RES
MOD55 ldr r3, =55581
sub r1, r2, r1
sub r1, r3, r1
RES ...
Попутно, кстати, по неопытности сначалав условном переходе поставил проверку флага N, а не C. В итоге где то с полчаса наблюдал замечательные глюки, пока не перечитал по 33ему разу документацию и не усвоил, в чем разница между этими флагами