DPTH data 030h DPTL data 031h org 0000h ljmp XXXXH org 0003h int0_isr: reti ;......................... XXXXH: lcall _getPC; ;等效为: ;PUSH low YYYYH ;先压入低8位地址,SP+1 ;PUSH high YYYYH ;后压入高8位地址,SP+1 ;JMP _getPC;跳入_getPC后遇到RET返回YYYYH YYYYH: ;................
sjmp $
_getPC: pop DPTH ;先弹出高8位地址,SP-1;欲取PC+3高8位地址 pop DPTL ;后弹出低8位地址,SP-1;欲取PC+3低8位地址 ;................................... ; 假设此处立即响应某中断 ;................................... lcall int0_isr;模拟跳入中断INT0 ;等效为: ;PUSH low ZZZZH ;先压入低8位地址,SP+1 ;PUSH high ZZZZH ;后压入高8位地址,SP+1 ;JMP int0_isr;跳入int0_isr后遇到RETI返回ZZZZH ZZZZH: INC SP ;恢复低8位地址low YYYYH(已被中断破坏为ZZZZH); INC SP ;恢复高8位地址high YYYYH(已被中断破坏为ZZZZH); ;................................... ; 计算PC值等运算 ;................................... RET ;返回YYYYH(已被中断破坏为ZZZZH);中断后死循环LJMP ZZZZH end ;程序结束
|
|
文章评论(0条评论)
登录后参与讨论