51单片机进行整数运算的时候如果发生中断会怎样?

51单片机进行整数运算的时候如果发生中断会怎样?
51单片机处理16位或32位整数,即使是简单的赋值,也需要拆成多个指令的。假如正在执行赋值操作进行到一半的时候,发生了中断,而中断里又会用到这个整形变量,在中断里读到的值是否就是一个中间状态?对这种情况要不要做防范?

应该不会读到中间过程值;
打给比方:
a = b + c;
此时程序正在计算b+c,还未完成,进入中断里,使用的a还是之前的a的数值;
不会是b+c的数值还没有赋值给a;

提示:如果要避免你担心的情况,
可以在程序这样写:计算前关闭中断,计算后再打开中断;
像这样:
// 禁止中断的代码;
a = b + c;
// 允许中断的代码;

确实需要防范,
一种情况: 主循环正在写入一个多字节(例如long)变量时,如果还没完全将新数据完全写入时发生了中断,并且这个中断读取了这个变量,那毫无疑问,中断读取到的数据是半新半旧的,得到的很可能是一个很怪的数。
实际上你也可以写个程序来判断51实际上会不会出现这种情况。在主循环和中断都对同一个多字节变量修改,中断可以用定时器的中断,频率设置得高一些。
一个例子:主循环轮流写入0xFF00和0x00FF到某个2字节变量 ,然后中断读取这个变量,看看会不会读取到除了0xFF00和0x00FF以外的值

这种情况是存在的,你可以去了解一下RTOS

如果不希望发生,就进行保护,比如运算前关中断,然后运算完成再开中断