|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
指針的存儲(chǔ)位置和指向的關(guān)系 |
| 作者:hopeasy 欄目:嵌入式系統(tǒng) |
我在C51中遇到 指針的存儲(chǔ)位置和指向的關(guān)系 ,我弄不很明白,請(qǐng)指點(diǎn)。 data CHAR xdata *str; 和 CHAR xdata * data num; 我自己認(rèn)為他們是一 樣的。 以下是我自己設(shè)計(jì)的測(cè)試代碼,您看正確不。 對(duì)于CHAR xdata * data num; /**********************************************/ #include "reg52.h" #include "absacc.h" xdata CHAR i _at_ 0x30; CHAR xdata * data num; main() { xdata CHAR j; XBYTE[0x0006]=0xaa; i=XBYTE[0x0006]; j=*num; while(1); } //它所對(duì)應(yīng)的匯編為: 6: main() 7: { 8: xdata CHAR j; 9: XBYTE[0x0006]=0xaa; C:0x0003 900006 MOV DPTR,#0x0006 C:0x0006 74AA MOV A,#0xAA C:0x0008 F0 MOVX @DPTR,A 10: i=XBYTE[0x0006]; C:0x0009 E0 MOVX A,@DPTR C:0x000A 900030 MOV DPTR,#i(0x0030) C:0x000D F0 MOVX @DPTR,A 11: j=*num; C:0x000E 850982 MOV DPL(0x82),0x09 C:0x0011 850883 MOV DPH(0x83),num(0x08) C:0x0014 E0 MOVX A,@DPTR C:0x0015 900000 MOV DPTR,#C_STARTUP(0x0000) C:0x0018 F0 MOVX @DPTR,A 12: while(1); C:0x0019 80FE SJMP C:0019 /******************************************************/ 對(duì)于 data CHAR xdata *str _at_ 0x0030; /*****************************************************/ data CHAR xdata *str _at_ 0x0030; CHAR m; main() { str=0x0006; *str=0x11; *(CHAR xdata *)0x0006=0xaa; m=*str; while(1); } //它所對(duì)應(yīng)的匯編為: 17: main() 18: { 19: str=0x0006; C:0x0003 753000 MOV str(0x30),#0x00 C:0x0006 753106 MOV 0x31,#0x06 20: *str=0x11; C:0x0009 853182 MOV DPL(0x82),0x31 C:0x000C 853083 MOV DPH(0x83),str(0x30) C:0x000F 7411 MOV A,#0x11 C:0x0011 F0 MOVX @DPTR,A 21: *(CHAR xdata *)0x0006=0xaa; C:0x0012 900006 MOV DPTR,#0x0006 C:0x0015 74AA MOV A,#0xAA C:0x0017 F0 MOVX @DPTR,A 22: m=*str; C:0x0018 853182 MOV DPL(0x82),0x31 C:0x001B 853083 MOV DPH(0x83),str(0x30) C:0x001E E0 MOVX A,@DPTR C:0x001F F508 MOV m(0x08),A 23: while(1); C:0x0021 80FE SJMP C:0021 /**********************************************/ 調(diào)試的結(jié)果都是,如果指針存放在data區(qū),指向xdata區(qū),則指針占兩個(gè)字節(jié),指向data, idata,bdata區(qū)占一個(gè)字節(jié) |
|
|
| 免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 udpf.com.cn 浙ICP證030469號(hào) |