本帖最后由 DianGongN 于 2011-12-23 23:02 编辑
看了lz在4L的发言,才知道楼主没有完全理解保护现场的含义。
这个现场指的是子程序或中断服务程序中,哪些被修改了数值的共用资源,通常就是PSW Acc B DPTR,R0 R1 R2.....R7,这些资源是各种程序都要用的。
你如果在中断服务程序中改变了psw acc 和R0的值,那就一定要保护psw acc 和R0,返回之前恢复。B PSW R1 R2.....R7的值你没有改变,当然就不需要保护。这个是一目了然的。
那为什么子程序很多时候不需要保护呢?
假设你写了个子程序,求n个单元中单字节数据的累加和。在子程序中,你改变了进位C即psw,还改变了acc和R0,但你不一定要保护它们,只要在子程序的说明部分写明你改变了psw acc R0就行了。
主程序调用的时候自然知道psw acc R0要不要保护。一般情况下,psw acc R0在调用子程序后,并不需要保持原来的值不变,所以主程序和子程序都不需要保护。
|