<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 第2章 一些數(shù)據(jù)單位(X86匯編教程)

          第2章 一些數(shù)據(jù)單位(X86匯編教程)

          作者: 時間:2016-12-01 來源:網(wǎng)絡(luò) 收藏
          選中你要打開的文件.你將看到如下內(nèi)容:


          我用WinHEX打開了一個PNG圖片文件.

          最上邊灰色那里,是顯示你打開的文件的文件名.已經(jīng)打開了一個PNG文件.

          白色區(qū)的offset豎排(也就是那些8個16進(jìn)制數(shù)字排列在一起的那一框)為當(dāng)前行第一個字節(jié)的偏移地址呢?偏移地址,是一個字節(jié)的距離第一個字節(jié)的長度 (以字節(jié)為單位).順帶一提,在電腦里有些東西的統(tǒng)計是以0開始的,我們生活中數(shù)數(shù)是1...2...3但是在電腦中有時是從0開始的,0...1...2...3學(xué)過高級語言的可能已經(jīng)習(xí)慣了,高手的代碼里經(jīng)常出現(xiàn)把某某數(shù)字加1或者減1就是為了這樣.

          這樣,我們的第一個字節(jié)的偏移為0.偏移豎排表示了第一個字節(jié)的偏移,偏移橫排則可以確定每個字節(jié)的偏移.

          算法:

          當(dāng)前行的偏移豎排處的數(shù)值+你要計算的那個字節(jié)在偏移橫排對應(yīng)的值=你要計算的那個字節(jié)的偏移


          比如:第3行第7個字節(jié).

          第3行偏移豎排處的值為00000020偏移橫排值為6(為什么第7個數(shù)字的橫排值會是6?沒搞錯喲,記得前面說的從0開始嗎?從0開始計算,第7個字節(jié)為6喲!以后會經(jīng)常出現(xiàn)這樣的情況,匯編學(xué)久了就習(xí)慣了)

          加起來就是26H(注意:16進(jìn)制的喲!)

          最右邊就是ASCII解碼了,什么是ASCII呢?那是一種只有英文字母,數(shù)字,標(biāo)點符號的文本編碼(文本編碼:用數(shù)字表示字符.)正常的ASCII只有一個字節(jié),最右邊就是對ASCII進(jìn)行解析的區(qū)域,它能解析出這個字節(jié)和哪個字符的ASCII碼相同,并顯示出那個字符,如果那個字節(jié)沒有對應(yīng)的字符則顯示小數(shù)點.


          好了,關(guān)于WinHEX的講解就到這里了.繼續(xù)講數(shù)據(jù)單位.
          之前說到,從某種意義上來說字節(jié)才是最小的單位.接著說說比字節(jié)大的單位.
          字 (WORD),1個字型數(shù)據(jù)有2個字節(jié),在文本編碼中,word才是表示一個字符的最佳單位.因為字節(jié)(byte)只能表示0-255之間的數(shù)字(用計算器把2進(jìn)制的8個1轉(zhuǎn)換成10進(jìn)制看看)而就拿中文來說吧.幾千個中文,最大才255的字節(jié)型怎么夠呢?所以,用字形(WORD)有16位2進(jìn)制=65536(最大值65535,但是,從0開始啊!別把0丟了)種可能幾千個中文完全夠用了.所以中文編碼正常的是用2個字節(jié)(也就是"字"表示一個文字),可以做一個實驗:用記事本輸入一個中文,然后保存下來,用WinHEX打開看看.

          然后就是雙字(DWORD)了,顧名思義,就是2個字形數(shù)據(jù)合一起,有32比特,可能有人已經(jīng)想到了,32位系統(tǒng)能一次性計算一個雙字?jǐn)?shù)據(jù),但是不要想成雙字是 32位系統(tǒng)獨有的呀,曾經(jīng)的16位MS-DOS系統(tǒng)也是能有雙字型數(shù)據(jù)的喲!所謂字和雙字只是邏輯上的.完全能把字形數(shù)據(jù)當(dāng)作2個排列在一起的字節(jié)看待, 雙字也是,可以當(dāng)作是4個字節(jié)看待.

          .這些都是小單位.說說大點的單位吧.

          KB,在某些地方是1000字節(jié)的意思,但大多數(shù)時候是指1024個字節(jié)
          MB,代表1000KB或1024KB(大多數(shù)代表1024KB)
          GB,1000MB或1024MB
          TB,1000GB或1024GB(TB可是寫這教程的最近幾年才開始使用的...似乎很多人都還不知道有這個單位呢,,)

          在大家買手機記憶卡的時候是不是有出現(xiàn)過明明買的2G的卡,打開一看只有1.8G呢?實際上這是算法不同造成的.看到這里,大家都知道從KB開始,數(shù)據(jù)有 1000和1024這2種進(jìn)制.廠家用的就是1000進(jìn)制而我們用的就是1024進(jìn)制,所以,我們看到的記憶卡容量通常比卡上表示的小.按照以上方法,計算一下,你會發(fā)現(xiàn),你買的卡的空間不但沒有小于卡上面寫的,反而還大了一點呢!

          上一頁 1 2 下一頁

          關(guān)鍵詞: 數(shù)據(jù)單位X86匯編教

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();