⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 os_cpu_a.lst

📁 本人于2005年初开始准备将&micro C/OS-II嵌入式实时操作系统移植到8051单片机上
💻 LST
字号:
A51 MACRO ASSEMBLER  OS_CPU_A                                                             09/04/2007 10:27:39 PAGE     1


MACRO ASSEMBLER A51 V7.09
OBJECT MODULE PLACED IN OS_CPU_A.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE OS_CPU_A.ASM SET(LARGE) DEBUG EP

LOC  OBJ            LINE     SOURCE

                       1     ;/*
                       2     ;******************************************************************************************
                             ***************
                       3     ;*                                               uC/OS-II
                       4     ;*                                               实时内核
                       5     ;*
                       6     ;*                                               版权所有
                       7     ;*
                       8     ;* 文件名 : OS_CPU_A.ASM
                       9     ;* 作者   : Jean J. Labrosse
                      10     ;* 改编   : 陈是知 北京中软 2005。1。27
                      11     ;******************************************************************************************
                             ***************
                      12     ;*/
                      13     
                      14     ;伪指令详细用法请查A51.PDF文件
                      15     ;程序结构详见《uC/OS-II》193-198页
                      16     
                      17     ;不用此语句!!! $CASE    ;标号和变量名区分大小写
                      18     
                      19     $nomod51 
  00AF                20     EA      BIT     0A8H.7
  0081                21     SP      DATA    081H
  00F0                22     B       DATA    0F0H
  00E0                23     ACC     DATA    0E0H
  0083                24     DPH     DATA    083H
  0082                25     DPL     DATA    082H
  00D0                26     PSW     DATA    0D0H
  008C                27     TR0     BIT     088H.4
  008C                28     TH0     DATA    08CH
  008A                29     TL0     DATA    08AH
  00D8                30     P4      DATA    0D8H
                      31     
                      32             NAME OS_CPU_A    ;模块名
                      33             
                      34     ;定义重定位段
                      35     ?PR?OSStartHighRdy?OS_CPU_A    SEGMENT CODE
                      36     ?PR?OSCtxSw?OS_CPU_A           SEGMENT CODE
                      37     ?PR?OSIntCtxSw?OS_CPU_A        SEGMENT CODE
                      38     ?PR?OSTickISR?OS_CPU_A         SEGMENT CODE
                      39     
                      40     ?PR?_?serial?OS_CPU_A          SEGMENT CODE
                      41             
                      42     ;声明引用全局变量和外部子程序
                      43             EXTRN DATA  (?C_XBP)     ;仿真堆栈指针用于重入局部变量保存
                      44     
                      45             EXTRN IDATA (OSTCBCur)
                      46             EXTRN IDATA (OSTCBHighRdy)
                      47             EXTRN IDATA (OSRunning)
                      48             EXTRN IDATA (OSPrioCur)
                      49             EXTRN IDATA (OSPrioHighRdy)
                      50         
                      51             EXTRN CODE  (_?OSTaskSwHook)
                      52             EXTRN CODE  (_?serial)
                      53             EXTRN CODE  (_?OSIntEnter)
                      54             EXTRN CODE  (_?OSIntExit)
                      55             EXTRN CODE  (_?OSTimeTick)        
                      56                 
A51 MACRO ASSEMBLER  OS_CPU_A                                                             09/04/2007 10:27:39 PAGE     2

                      57     ;对外声明4个不可重入函数
                      58             PUBLIC OSStartHighRdy
                      59             PUBLIC OSCtxSw
                      60             PUBLIC OSIntCtxSw
                      61             PUBLIC OSTickISR
                      62             
                      63             ;PUBLIC SerialISR        
                      64         
                      65     ;分配堆栈空间。只关心大小,堆栈起点由keil决定,通过标号可以获得keil分配的SP起点。
                      66     ?STACK SEGMENT IDATA
----                  67             RSEG ?STACK
0000                  68     OSStack:
0000                  69             DS 40H
  FFFF                70     OSStkStart IDATA OSStack-1
                      71     
                      72     ;定义压栈出栈宏
                      73     PUSHALL    MACRO
                      74             PUSH PSW
                      75             PUSH ACC
                      76             PUSH B
                      77             PUSH DPL
                      78             PUSH DPH
                      79             MOV  A,R0   ;R0-R7入栈
                      80             PUSH ACC
                      81             MOV  A,R1
                      82             PUSH ACC
                      83             MOV  A,R2
                      84             PUSH ACC
                      85             MOV  A,R3
                      86             PUSH ACC
                      87             MOV  A,R4
                      88             PUSH ACC
                      89             MOV  A,R5
                      90             PUSH ACC
                      91             MOV  A,R6
                      92             PUSH ACC
                      93             MOV  A,R7
                      94             PUSH ACC
                      95             ;PUSH SP    ;不必保存SP,任务切换时由相应程序调整
                      96             ENDM
                      97         
                      98     POPALL    MACRO
                      99             ;POP  ACC   ;不必保存SP,任务切换时由相应程序调整
                     100             POP  ACC    ;R0-R7出栈
                     101             MOV  R7,A
                     102             POP  ACC
                     103             MOV  R6,A
                     104             POP  ACC
                     105             MOV  R5,A
                     106             POP  ACC
                     107             MOV  R4,A
                     108             POP  ACC
                     109             MOV  R3,A
                     110             POP  ACC
                     111             MOV  R2,A
                     112             POP  ACC
                     113             MOV  R1,A
                     114             POP  ACC
                     115             MOV  R0,A
                     116             POP  DPH
                     117             POP  DPL
                     118             POP  B
                     119             POP  ACC
                     120             POP  PSW
                     121             ENDM
                     122         
A51 MACRO ASSEMBLER  OS_CPU_A                                                             09/04/2007 10:27:39 PAGE     3

                     123     ;子程序
                     124     ;-------------------------------------------------------------------------
----                 125             RSEG ?PR?OSStartHighRdy?OS_CPU_A
0000                 126     OSStartHighRdy:
                     127             USING 0    ;上电后51自动关中断,此处不必用CLR EA指令,因为到此处还未开中断,本程序

⌨️ 快捷键说明

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