add two int numbers, check whether overflowed
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <iostream>
using namespace std;
int ifo_add( int a, int b)
{
__asm{
mov eax,a
add eax,b
jo overflow
xor eax,eax
jmp no_overflow
overflow:
mov eax,1
no_overflow:
}
}
int main() {
int a,b;
a= 1;b= 2;printf("%11d+(%2d) %d\n",a,b,ifo_add(a,b));
a= -1;b=-2;printf("%11d+(%2d) %d\n",a,b,ifo_add(a,b));
a= 2147483647;b= 1;printf("%11d+(%2d) %d\n",a,b,ifo_add(a,b));
a=-2147483647;b=-1;printf("%11d+(%2d) %d\n",a,b,ifo_add(a,b));
a=-2147483647;b=-2;printf("%11d+(%2d) %d\n",a,b,ifo_add(a,b));
system("pause");
return 0;
}
#include <stdlib.h>
#include <malloc.h>
#include <iostream>
using namespace std;
int ifo_add( int a, int b)
{
__asm{
mov eax,a
add eax,b
jo overflow
xor eax,eax
jmp no_overflow
overflow:
mov eax,1
no_overflow:
}
}
int main() {
int a,b;
a= 1;b= 2;printf("%11d+(%2d) %d\n",a,b,ifo_add(a,b));
a= -1;b=-2;printf("%11d+(%2d) %d\n",a,b,ifo_add(a,b));
a= 2147483647;b= 1;printf("%11d+(%2d) %d\n",a,b,ifo_add(a,b));
a=-2147483647;b=-1;printf("%11d+(%2d) %d\n",a,b,ifo_add(a,b));
a=-2147483647;b=-2;printf("%11d+(%2d) %d\n",a,b,ifo_add(a,b));
system("pause");
return 0;
}