Ciao....scusa non avevo capito che non avevi le variabili a 64 bit.
Di seguito ti scrivo il codice c che fà la sottrazione a l'addizione fra due numeri. La moltiplicazione e la divisione sono più complicate e le mettero eventualmente più avanti.
Per entrambe le funzioni i parametri l1 e h1 sono la parte bassa e alta del primo operendo (quello a sinistra del - o +), l2 e h2 sono le parti del secondo operando (quello a destra del - o +), l e h sono le parti del risultato.
void Sum(unsigned int l1, unsigned int h1, unsigned int l2, unsigned int h2, unsigned int *l, unsigned int *h){
if(l2<(0xFFFFFFFF-l1)){
*l=l1+l2;
*h=h1+h2;
}else{
*l=l2-(0xFFFFFFFF-l1)-1;
*h=h1+h2+1;
}
}
void Sub(unsigned int l1, unsigned int h1, unsigned int l2, unsigned int h2, unsigned int *l, unsigned int *h){
if(l2<l1){
l=l1-l2;
h=h1-h2;
}else{
l=0xFFFFFFFF-(l2-l1)+1;
h=h1-h2;
if(h>0)
h--;
else
h=0xFFFFFFFF;
}
}
Spero che ti vada bene.