1. 程式人生 > >在51系列中data,idata,xdata,pdata的區別

在51系列中data,idata,xdata,pdata的區別

         從資料儲存型別來說,8051系列有片內、片外程式儲存器,片內、片外資料儲存器,片內程式儲存器還分直接定址區和間接定址型別,分別對應code、data、xdata、idata以及根據51系列特點而設定的pdata型別,使用不同的儲存器,將使程式執行效率不同,在編寫C51程式時,最好指定變數的儲存型別,這樣將有利於提高程式執行效率(此問題將在後面專門講述)。與ANSI-C稍有不同,它只分SAMLL、COMPACT、LARGE模式,各種不同的模式對應不同的實際硬體系統,也將有不同的編譯結果。

       

        data:固定指前面0x00-0x7f的128個RAM,可以用acc直接讀寫的,速度最快,生成的程式碼也最小。

 

        idata:固定指前面0x00-0xff的256個RAM,其中前128和data的128完全相同,只是因為訪問的方式不同。idata是用類似C中的指標方式訪問的。

彙編中的語句為:mox ACC,@Rx.(不重要的補充:c中idata做指標式的訪問效果很好)。

       

        xdata:外部擴充套件RAM,一般指外部0x0000-0xffff空間,用DPTR訪問。

        pdata:外部擴充套件RAM的低256個位元組,地址出現在A0-A7的上時讀寫,用movx ACC,@Rx讀寫。這個比較特殊,而且C51好象有對此BUG,建議少用。但也有他的優點,具體用法屬於中級問題,這裡不提。