save.asm

来自「微芯公司的PIC子程序库及运算平台」· 汇编 代码 · 共 25 行

ASM
25
字号
;********************SAVE********************
;本程序实现中断服务程序执行或子程序调用之前对W,STATRS,FSR三个寄存器的保护。
;入口参数:W,STATUS,FSR
;出口参数:相关数据已保存在SAVEW,SAVES,SAVEF中
;占用资源:020H,021H,022H,02FH
;说明    : 1.对于SAVEW,每个块中都必须保留一个寄存器,且其地址码都必须为20H;
;          2.若用16F870/1/2/6/7,也可将SAVEW定义为070H-07FH之间的其中一个寄
;            存器,这样只用BANK0中的一个寄存器即可.  

           IFNDEF       SAVE1
            #DEFINE     SAVE1
SAVEW       EQU         02CH
SAVEST      EQU         02DH
SAVEFSR     EQU         02EH
SAVEPH      EQU         02FH
                                                                                    
SAVE        MOVWF       SAVEW       ;复制W到它的临时备份寄存器W_TEMP中 
            SWAPF       STATUS,W    ;将STATUS寄存器高低半字节交换后放入W 
            CLRF        STATUS      ;不管当前处在哪个体,都设置体0作当前体 
            MOVWF       SAVEST      ;保存STATUS到体0上的临时寄存器STATUS_TEMP 
            MOVF        FSR,W
            MOVWF       SAVEFSR     ;保存FSR
            MOVF        PCLATH,W    ;把寄存器PCLATH内容复制到W中
            MOVWF       SAVEPH      ;经W将PCLATH内容转到临时寄存器PCLATH_TEMP
            RETURN                                                                ENDIF

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?