?? task.lst
字號:
00000022 F7FF BL prints?T ; T=0x0001 (1)
00000024 FFED BL prints?T ; T=0x0001 (2)
101: prints(" Start..........................",1);
00000026 4800 LDR R0,=??S_2 ; ??S_2
00000028 2101 MOV R1,#0x1
0000002A F7FF BL prints?T ; T=0x0001 (1)
0000002C FFE9 BL prints?T ; T=0x0001 (2)
102: OSFreeDevice(PrinterDeviceAddr); //釋放打印機
0000002E 1C20 MOV R0,R4 ; PrinterDeviceAddr
00000030 F7FF BL OSFreeDevice?T ; T=0x0001 (1)
00000032 FFE6 BL OSFreeDevice?T ; T=0x0001 (2)
104: EN_LED2();
00000034 4800 LDR R1,=0x80000
00000036 4800 LDR R0,=0xE0028018
00000038 6802 LDR R2,[R0,#0x0]
0000003A 430A ORR R2,R1
0000003C 6002 STR R2,[R0,#0x0]
0000003E 4800 LDR R0,=0xE0028014
00000040 6001 STR R1,[R0,#0x0]
105: while(1)
00000042 L_12:
107: OSTaskDelay(100); //延時等待消息的到來
00000042 2064 MOV R0,#0x64
00000044 F7FF BL OSTaskDelay?T ; T=0x0001 (1)
00000046 FFDC BL OSTaskDelay?T ; T=0x0001 (2)
108: if(OSCurrentPcb->Msg) //如果收到了消息
00000048 4800 LDR R0,=OSCurrentPcb ; OSCurrentPcb
0000004A 6800 LDR R0,[R0,#0x0] ; OSCurrentPcb
0000004C 6B00 LDR R0,[R0,#0x30]
0000004E 2800 CMP R0,#0x0
00000050 D069 BEQ L_14 ; T=0x00000126
110: OSRequestDevice(PrinterDeviceAddr,0); //申請使用打印機
00000052 1C20 MOV R0,R4 ; PrinterDeviceAddr
00000054 2100 MOV R1,#0x0
00000056 F7FF BL OSRequestDevice?T ; T=0x0001 (1)
00000058 FFD3 BL OSRequestDevice?T ; T=0x0001 (2)
111: prints("",1);
0000005A 4800 LDR R0,=??S_1 ; ??S_1
0000005C 2101 MOV R1,#0x1
0000005E F7FF BL prints?T ; T=0x0001 (1)
00000060 FFCF BL prints?T ; T=0x0001 (2)
112: prints("",1);
00000062 4800 LDR R0,=??S_1 ; ??S_1
00000064 2101 MOV R1,#0x1
00000066 F7FF BL prints?T ; T=0x0001 (1)
00000068 FFCB BL prints?T ; T=0x0001 (2)
113: prints(OSCurrentPcb->Title,0); //顯示任務的標題
0000006A 4800 LDR R0,=OSCurrentPcb ; OSCurrentPcb
0000006C 6800 LDR R0,[R0,#0x0] ; OSCurrentPcb
0000006E 3034 ADD R0,#0x34
00000070 2100 MOV R1,#0x0
00000072 F7FF BL prints?T ; T=0x0001 (1)
00000074 FFC5 BL prints?T ; T=0x0001 (2)
114: prints(":",1);
00000076 4800 LDR R0,=??S_3 ; ??S_3
00000078 2101 MOV R1,#0x1
ARM COMPILER V2.50a, Task 28/08/06 09:18:55 PAGE 10
0000007A F7FF BL prints?T ; T=0x0001 (1)
0000007C FFC1 BL prints?T ; T=0x0001 (2)
115: prints("Haha,I have got a message from: ",0);
0000007E 4800 LDR R0,=??S_4 ; ??S_4
00000080 2100 MOV R1,#0x0
00000082 F7FF BL prints?T ; T=0x0001 (1)
00000084 FFBD BL prints?T ; T=0x0001 (2)
116: prints(OSCurrentPcb->Msg->Sender->Title,1); //顯示消息發送者的標題
00000086 4800 LDR R0,=OSCurrentPcb ; OSCurrentPcb
00000088 6800 LDR R0,[R0,#0x0] ; OSCurrentPcb
0000008A 6B00 LDR R0,[R0,#0x30]
0000008C 6880 LDR R0,[R0,#0x8]
0000008E 3034 ADD R0,#0x34
00000090 2101 MOV R1,#0x1
00000092 F7FF BL prints?T ; T=0x0001 (1)
00000094 FFB5 BL prints?T ; T=0x0001 (2)
117: prints("The sender's PID is: ",0);
00000096 4800 LDR R0,=??S_5 ; ??S_5
00000098 2100 MOV R1,#0x0
0000009A F7FF BL prints?T ; T=0x0001 (1)
0000009C FFB1 BL prints?T ; T=0x0001 (2)
118: print_uint32(OSCurrentPcb->Msg->Sender->PID-0x40000000); //顯示消息發送者的PID
0000009E 4800 LDR R0,=OSCurrentPcb ; OSCurrentPcb
000000A0 6800 LDR R0,[R0,#0x0] ; OSCurrentPcb
000000A2 6B00 LDR R0,[R0,#0x30]
000000A4 6880 LDR R0,[R0,#0x8]
000000A6 6880 LDR R0,[R0,#0x8]
000000A8 4800 LDR R1,=0x40000000
000000AA 1A40 SUB R0,R1
000000AC F7FF BL print_uint32?T ; T=0x0001 (1)
000000AE FFA8 BL print_uint32?T ; T=0x0001 (2)
119: prints("",1);
000000B0 4800 LDR R0,=??S_1 ; ??S_1
000000B2 2101 MOV R1,#0x1
000000B4 F7FF BL prints?T ; T=0x0001 (1)
000000B6 FFA4 BL prints?T ; T=0x0001 (2)
120: prints("The message type is:",0);
000000B8 4800 LDR R0,=??S_6 ; ??S_6
000000BA 2100 MOV R1,#0x0
000000BC F7FF BL prints?T ; T=0x0001 (1)
000000BE FFA0 BL prints?T ; T=0x0001 (2)
121: print_uint32(OSCurrentPcb->Msg->MsgType); //顯示消息的類型
000000C0 4800 LDR R0,=OSCurrentPcb ; OSCurrentPcb
000000C2 6800 LDR R0,[R0,#0x0] ; OSCurrentPcb
000000C4 6B00 LDR R0,[R0,#0x30]
000000C6 6800 LDR R0,[R0,#0x0]
000000C8 F7FF BL print_uint32?T ; T=0x0001 (1)
000000CA FF9A BL print_uint32?T ; T=0x0001 (2)
122: prints("",1);
000000CC 4800 LDR R0,=??S_1 ; ??S_1
000000CE 2101 MOV R1,#0x1
000000D0 F7FF BL prints?T ; T=0x0001 (1)
000000D2 FF96 BL prints?T ; T=0x0001 (2)
123: prints("The message value is",0);
000000D4 4800 LDR R0,=??S_7 ; ??S_7
000000D6 2100 MOV R1,#0x0
000000D8 F7FF BL prints?T ; T=0x0001 (1)
000000DA FF92 BL prints?T ; T=0x0001 (2)
124: print_uint32(*(OSCurrentPcb->Msg->pMsg)); //顯示消息
000000DC 4800 LDR R0,=OSCurrentPcb ; OSCurrentPcb
000000DE 6800 LDR R0,[R0,#0x0] ; OSCurrentPcb
000000E0 6B00 LDR R0,[R0,#0x30]
000000E2 68C0 LDR R0,[R0,#0xC]
000000E4 6800 LDR R0,[R0,#0x0]
000000E6 F7FF BL print_uint32?T ; T=0x0001 (1)
000000E8 FF8B BL print_uint32?T ; T=0x0001 (2)
ARM COMPILER V2.50a, Task 28/08/06 09:18:55 PAGE 11
125: prints("",1);
000000EA 4800 LDR R0,=??S_1 ; ??S_1
000000EC 2101 MOV R1,#0x1
000000EE F7FF BL prints?T ; T=0x0001 (1)
000000F0 FF87 BL prints?T ; T=0x0001 (2)
126: prints("",1);
000000F2 4800 LDR R0,=??S_1 ; ??S_1
000000F4 2101 MOV R1,#0x1
000000F6 F7FF BL prints?T ; T=0x0001 (1)
000000F8 FF83 BL prints?T ; T=0x0001 (2)
127: OSFreeDevice(PrinterDeviceAddr); //釋放打印機
000000FA 1C20 MOV R0,R4 ; PrinterDeviceAddr
000000FC F7FF BL OSFreeDevice?T ; T=0x0001 (1)
000000FE FF80 BL OSFreeDevice?T ; T=0x0001 (2)
128: switch(*(OSCurrentPcb->Msg->pMsg)) //鍵值散轉
00000100 4800 LDR R0,=OSCurrentPcb ; OSCurrentPcb
00000102 6801 LDR R1,[R0,#0x0] ; OSCurrentPcb
00000104 6B08 LDR R0,[R1,#0x30]
00000106 68C0 LDR R0,[R0,#0xC]
00000108 6800 LDR R0,[R0,#0x0]
0000010A 2804 CMP R0,#0x4
0000010C D005 BEQ L_18 ; T=0x0000011A
0000010E 2803 CMP R0,#0x3
00000110 D106 BNE L_15 ; T=0x00000120
130: case KEY3: ON_LED2();break; //如果是按鍵3按下,則點亮LED2
00000112 L_16:
00000112 4800 LDR R2,=0x80000
00000114 4800 LDR R0,=0xE002801C
00000116 6002 STR R2,[R0,#0x0]
00000118 E002 B L_15 ; T=0x00000120
131: case KEY4: OFF_LED2();break; //如果是按鍵4按下,則熄滅LED2
0000011A L_18:
0000011A 4800 LDR R2,=0x80000
0000011C 4800 LDR R0,=0xE0028014
0000011E 6002 STR R2,[R0,#0x0]
133: }
00000120 L_15:
134: OSCurrentPcb->Msg=0; //消息處理完畢
00000120 2000 MOV R0,#0x0
00000122 6308 STR R0,[R1,#0x30]
135: }
00000124 E78D B L_12 ; T=0x00000042
00000126 L_14:
138: OSRequestDevice(PrinterDeviceAddr,0); //申請使用打印機
00000126 1C20 MOV R0,R4 ; PrinterDeviceAddr
00000128 2100 MOV R1,#0x0
0000012A F7FF BL OSRequestDevice?T ; T=0x0001 (1)
0000012C FF69 BL OSRequestDevice?T ; T=0x0001 (2)
139: prints("",1);
0000012E 4800 LDR R0,=??S_1 ; ??S_1
00000130 2101 MOV R1,#0x1
00000132 F7FF BL prints?T ; T=0x0001 (1)
00000134 FF65 BL prints?T ; T=0x0001 (2)
140: prints("",1);
00000136 4800 LDR R0,=??S_1 ; ??S_1
00000138 2101 MOV R1,#0x1
0000013A F7FF BL prints?T ; T=0x0001 (1)
0000013C FF61 BL prints?T ; T=0x0001 (2)
141: prints(OSCurrentPcb->Title,0); //顯示任務的標題
0000013E 4800 LDR R0,=OSCurrentPcb ; OSCurrentPcb
00000140 6800 LDR R0,[R0,#0x0] ; OSCurrentPcb
00000142 3034 ADD R0,#0x34
00000144 2100 MOV R1,#0x0
00000146 F7FF BL prints?T ; T=0x0001 (1)
00000148 FF5B BL prints?T ; T=0x0001 (2)
142: prints(":",1);
ARM COMPILER V2.50a, Task 28/08/06 09:18:55 PAGE 12
0000014A 4800 LDR R0,=??S_3 ; ??S_3
0000014C 2101 MOV R1,#0x1
0000014E F7FF BL prints?T ; T=0x0001 (1)
00000150 FF57 BL prints?T ; T=0x0001 (2)
143: prints("I have not got a message in 1 second!",1); //顯示未收到消息
00000152 4800 LDR R0,=??S_8 ; ??S_8
00000154 2101 MOV R1,#0x1
00000156 F7FF BL prints?T ; T=0x0001 (1)
00000158 FF53 BL prints?T ; T=0x0001 (2)
144: prints("Time out!",1); //超時
0000015A 4800 LDR R0,=??S_9 ; ??S_9
0000015C 2101 MOV R1,#0x1
0000015E F7FF BL prints?T ; T=0x0001 (1)
00000160 FF4F BL prints?T ; T=0x0001 (2)
145: prints("",1);
00000162 4800 LDR R0,=??S_1 ; ??S_1
00000164 2101 MOV R1,#0x1
00000166 F7FF BL prints?T ; T=0x0001 (1)
00000168 FF4B BL prints?T ; T=0x0001 (2)
146: OSFreeDevice(PrinterDeviceAddr); //釋放打印機
0000016A 1C20 MOV R0,R4 ; PrinterDeviceAddr
0000016C F7FF BL OSFreeDevice?T ; T=0x0001 (1)
0000016E FF48 BL OSFreeDevice?T ; T=0x0001 (2)
148: }
00000170 E767 B L_12 ; T=0x00000042
00000172 ; SCOPE-END
149: }
00000172 BC10 POP {R4}
00000174 BC08 POP {R3}
00000176 4718 BX R3
00000178 ENDP ; 'Task2?T'
*** CODE SEGMENT '?PR?Task3?T?Task':
156: void Task3(void)
00000000 B510 PUSH {R4,LR}
157: {
00000002 ; SCOPE-START
160: PrinterDeviceAddr=OSGetDeviceAddr(OS_PRINTER_DEVICE_ID); //獲取打印機設備地址
00000002 2001 MOV R0,#0x1
00000004 F7FF BL OSGetDeviceAddr?T ; T=0x0001 (1)
00000006 FFFC BL OSGetDeviceAddr?T ; T=0x0001 (2)
00000008 1C04 MOV R4,R0 ; PrinterDeviceAddr
0000000A ---- Variable 'PrinterDeviceAddr' assigned to Register 'R4' ----
161: OSRequestDevice(PrinterDeviceAddr,0); //申請使用打印機
0000000A 1C20 MOV R0,R4 ; PrinterDeviceAddr
0000000C 2100 MOV R1,#0x0
0000000E F7FF BL OSRequestDevice?T ; T=0x0001 (1)
00000010 FFF7 BL OSRequestDevice?T ; T=0x0001 (2)
163: prints("",1);
00000012 4800 LDR R0,=??S_1 ; ??S_1
00000014 2101 MOV R1,#0x1
00000016 F7FF BL prints?T ; T=0x0001 (1)
00000018 FFF3 BL prints?T ; T=0x0001 (2)
164: prints(OSCurrentPcb->Title,0); //顯示任務啟動
0000001A 4800 LDR R0,=OSCurrentPcb ; OSCurrentPcb
0000001C 6800 LDR R0,[R0,#0x0] ; OSCurrentPcb
0000001E 3034 ADD R0,#0x34
00000020 2100 MOV R1,#0x0
00000022 F7FF BL prints?T ; T=0x0001 (1)
00000024 FFED BL prints?T ; T=0x0001 (2)
165: prints(" Start..........................",1);
00000026 4800 LDR R0,=??S_2 ; ??S_2
00000028 2101 MOV R1,#0x1
0000002A F7FF BL prints?T ; T=0x0001 (1)
0000002C FFE9 BL prints?T ; T=0x0001 (2)
166: OSFreeDevice(PrinterDeviceAddr); //釋放打印機
0000002E 1C20 MOV R0,R4 ; PrinterDeviceAddr
ARM COMPILER V2.50a, Task 28/08/06 09:18:55 PAGE 13
00000030 F7FF BL OSFreeDevice?T ; T=0x0001 (1)
00000032 FFE6 BL OSFreeDevice?T ; T=0x0001 (2)
168: EN_LED3();
00000034 4800 LDR R1,=0x100000
00000036 4800 LDR R0,=0xE0028018
00000038 6802 LDR R2,[R0,#0x0]
0000003A 430A ORR R2,R1
0000003C 6002 STR R2,[R0,#0x0]
0000003E 4800 LDR R0,=0xE0028014
00000040 6001 STR R1,[R0,#0x0]
169: while(1)
00000042 L_22:
171: OSRequestDevice(PrinterDeviceAddr,0); //申請使用打印機
00000042 1C20 MOV R0,R4 ; PrinterDeviceAddr
00000044 2100 MOV R1,#0x0
00000046 F7FF BL OSRequestDevice?T ; T=0x0001 (1)
00000048 FFDB BL OSRequestDevice?T ; T=0x0001 (2)
172: prints("HaHa,Running in Task3! ",1); //顯示信息
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -