




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
C51編譯器的數(shù)據(jù)存儲(chǔ)格式及編程技巧分享DataStorageFormats數(shù)據(jù)存儲(chǔ)格式這一部說明可用的數(shù)據(jù)類型的存儲(chǔ)格式。Cx51提供了幾種數(shù)據(jù)存儲(chǔ)格式如下:DataTypeBitsBytesValueRangebit1—0to1signedchar81-128to+127unsignedchar810to255enum8/161or2-128to+127or-32768to+32767signedshort162-32768to+32767unsignedshort1620to65535signedint162-32768to+32767unsignedint1620to65535signedlong324-2147483648to2147483647unsignedlong3240to4294967295float324±1.175494E-38to±3.402823E+38data*,idata*,pdata*810x00to0xFFcode*,xdata*1620x0000to0xFFFFgenericpointer243Memorytype(1byte);Offset(2bytes)0to0xFFFF其他數(shù)據(jù)類型如結(jié)構(gòu)體和聯(lián)合,可以包含上表中類型。所有的元素都按順序分配,并且按8051家簇的8bit字節(jié)對(duì)齊。BitVariables位變量Bit類型的數(shù)量以使用單個(gè)位存放。位指針和位數(shù)組是不允許使用的。Bit對(duì)象總是放在8051CPU內(nèi)部數(shù)據(jù)存儲(chǔ)器的位可尋址區(qū)。如果可能的話,BL51連接器/定位器會(huì)覆蓋位對(duì)象SignedandUnsignedCharacters,Pointerstodata,idata,andpdataChar類型的變量存入在一個(gè)字節(jié)內(nèi)部。特定存儲(chǔ)區(qū)域的指針(指向data,idata,pdata)也存放在一個(gè)字節(jié)內(nèi)部。如果枚舉類型可以用一個(gè)8bit的值代替,枚舉類型也放在一個(gè)字節(jié)內(nèi)部。SignedandUnsignedIntegers,Enumerations,PointerstoxdataandcodeInt類型,short類型enum類型和特定存儲(chǔ)區(qū)域指針(指向xdata和code)使用2個(gè)字節(jié)(16bits)。高位字節(jié)放在前面,低位字節(jié)在后面。如:整型的0x1234在存儲(chǔ)器的存放方式為:Address+0+1Contents0x120x34SignedandUnsignedLongIntegersLong類型占用4個(gè)字節(jié)。字節(jié)的存放也是從高位字節(jié)到低位字節(jié)。如0x12345678在存儲(chǔ)器的存放方式為:Address+0+1+2+3Contents0x120x340x560x78GenericandFarPointers一般指針沒的明確聲明的類型,它可以指向8051的任一存儲(chǔ)區(qū)域。這些指針的存入使用3個(gè)字節(jié)。第一字節(jié)存放一個(gè)表明存儲(chǔ)器區(qū)域或存儲(chǔ)器類型的值。其他的兩個(gè)字節(jié)存放地址的偏移量,偏移量的高位在前,低位在后。格式如下:Address+0+1+2ContentsMemoryTypeOffset;High-OrderByteOffset;Low-OrderByte根據(jù)編譯器的版本,存儲(chǔ)器類型有以下值:MemoryTypeidata/data/bdataxdatapdatacodeC51Compiler(8051devices)0x000x010xFE0xFFCX51Compiler(Philips80C51MX)0x7F0x000x000x80Philips80C51MX構(gòu)架支持新的工作在通用指針上的CPU指令。通用指針等同于Cx51的通用指針一般指針的格式與far針的格式相同。因此,任何其他類型的存儲(chǔ)器類型值都可以用作尋址far存儲(chǔ)器空間以下是一般指針的存儲(chǔ)格式,地址為0x1234Address+0+1+2Contents0x010x120x34Floating-pointNumbersFloat類型的存放使用4個(gè)字節(jié)。格式的存放符合IEEE-754標(biāo)準(zhǔn)一個(gè)浮點(diǎn)數(shù)由兩部分組成:尾數(shù)和指數(shù)。尾數(shù)存放數(shù)據(jù)值的實(shí)際的小數(shù)點(diǎn)。指數(shù)存放尾數(shù)的權(quán)值。指數(shù)是一個(gè)8bit的0-255的值,相對(duì)于127存放。實(shí)際的值是存放的值減去127。值域的范圍為+128到-127。尾數(shù)是一個(gè)24bit的數(shù),它的最高位總是1。因此不存儲(chǔ)。還有一符號(hào)位用以表明此浮點(diǎn)數(shù)是正數(shù)還是負(fù)數(shù)。浮點(diǎn)數(shù)用以下方式存儲(chǔ)在8051存儲(chǔ)器中:Address+0+1+2+3ContentsSEEEEEEEEMMMMMMMMMMMMMMMMMMMMMMMS:符號(hào)位,0代表正,1代表負(fù)E:指數(shù),2的補(bǔ)碼,偏移量為127M:23位尾數(shù),最高位總是為1,因此不存儲(chǔ)使用上述格式,浮點(diǎn)數(shù)-12.5就應(yīng)該存放為0xc1480000。在存儲(chǔ)器以下方式出現(xiàn):Address+0+1+2+3Contents0xC10x480x000x00從浮點(diǎn)數(shù)到它的十六進(jìn)制表示相當(dāng)容易。以下示例其過程:浮點(diǎn)數(shù)的存放不是一個(gè)直接的格式。要轉(zhuǎn)換必須把浮點(diǎn)數(shù)據(jù)的幾部分分開,如:Address+0+1+2+3FormatSEEEEEEEEMMMMMMMMMMMMMMMMMMMMMMMBinary11000001010010000000000000000000HexC1480000從而可以分離以下信息:符號(hào)位為1,說明是一個(gè)負(fù)數(shù)。指數(shù)10000010B或130DEC,減去127等于3,尾數(shù)的二進(jìn)制表示為:10010000000000000000000加上前面總是一個(gè)1,尾數(shù)為:1.10010000000000000000000現(xiàn)在,根據(jù)指數(shù)據(jù)調(diào)整尾數(shù):左移3位,即:1100.10000000000000000000這就是這個(gè)浮點(diǎn)數(shù):轉(zhuǎn)換為十進(jìn)制數(shù)為1*2^+1*2^2+0*2^1+0*2^0+1*2^(-1)=12.5Floating-pointErrors8051沒有獲取浮點(diǎn)錯(cuò)誤的中斷向量。因此,用戶程序必須正確處理這些錯(cuò)誤狀態(tài)。浮點(diǎn)數(shù)可能包含錯(cuò)誤的二進(jìn)制值。這個(gè)值被表示為IEEE標(biāo)準(zhǔn)的一部分,并且用來表示浮點(diǎn)處理出現(xiàn)錯(cuò)誤。用戶代碼應(yīng)該在每一個(gè)浮點(diǎn)運(yùn)算過后檢查可能存在的算述運(yùn)算錯(cuò)誤。名字值意義NaN0xFFFFFFF不是一個(gè)數(shù)+INF0x7F80000正向溢出-INF0xFF80000負(fù)向溢出注:在Cx51中可以使用_chkfloat_可以快速地檢查浮點(diǎn)數(shù)標(biāo)志可以使用以下聯(lián)合方式存儲(chǔ)浮點(diǎn)數(shù):unionf{floatf;/*Floating-pointvalue*/unsignedlongul;/*Unsignedlongvalue*/};這個(gè)聯(lián)合包括一個(gè)浮點(diǎn)數(shù)和一個(gè)無符號(hào)整形來進(jìn)行浮點(diǎn)數(shù)學(xué)運(yùn)算和響應(yīng)IEEE錯(cuò)誤狀態(tài)。例如:#defineNaN0xFFFFFFFF/*Notanumber(error)*/#defineplusINF0x7F800000/*Positiveoverflow*/#defineminusINF0xFF800000/*Negativeoverflow*/unionf{floatf;/*Floating-pointvalue*/unsignedlongul;/*Unsignedlongvalue*/};voidmain(void){float
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 光伏安裝項(xiàng)目合同共
- 股權(quán)轉(zhuǎn)讓協(xié)議的樣本
- 畜牧飼養(yǎng)管理與畜牧產(chǎn)品購(gòu)銷合同
- 離婚財(cái)產(chǎn)子女撫養(yǎng)協(xié)議書
- 電器產(chǎn)品購(gòu)銷協(xié)議書
- 生物醫(yī)藥研發(fā)技術(shù)轉(zhuǎn)讓及合作框架協(xié)議
- 油品供應(yīng)居間合同協(xié)議書
- 圖書館資源共享協(xié)議
- 房地產(chǎn)土地使用權(quán)轉(zhuǎn)讓協(xié)議書
- 體育賽事策劃與組織服務(wù)合同
- 進(jìn)化醫(yī)療-跨物種腫瘤基因治療的開拓者
- 統(tǒng)編版(2024新版)七年級(jí)下冊(cè)道德與法治期末復(fù)習(xí)背誦知識(shí)點(diǎn)提綱
- 《田野調(diào)查方法》課件
- 火電工程達(dá)標(biāo)投產(chǎn)考核標(biāo)準(zhǔn)(2024版)
- 《信號(hào)工程施工》課件全套 穆中華 項(xiàng)目1-3 信號(hào)圖紙識(shí)讀、施工技能訓(xùn)練、信號(hào)聯(lián)鎖試驗(yàn)
- 全新網(wǎng)絡(luò)安全教案:應(yīng)對(duì)2024年網(wǎng)絡(luò)威脅
- 2024年新疆區(qū)公務(wù)員錄用考試《行測(cè)》真題及解析
- 【2×600MW火電廠電氣部分設(shè)計(jì)(論文)16000字】
- 醫(yī)學(xué)教程 常見動(dòng)物咬蟄傷應(yīng)急救護(hù)課件
- 組合型浮式防波堤水動(dòng)力響應(yīng)與消浪性能研究
- 商業(yè)綜合體應(yīng)急預(yù)案編制與演練效果評(píng)估考核試卷
評(píng)論
0/150
提交評(píng)論