小菜请教调试问题

调试过程中在一个函数的开始都会有类似下图中的代码

单步调试过程中,pc指向+20时各寄存器的值如下图


如果我此时使用ni程序就会跳到系统函数中

而且很多寄存器的值都会发生改变(红色的都发生了变化)

但如果使用si程序就正常跳转到add的下一条汇编。请各位大佬解释一下是为什么?