新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)匯編語言詳解

單片機(jī)匯編語言詳解

作者: 時(shí)間:2011-09-20 來源:網(wǎng)絡(luò) 收藏

數(shù)制的概念  

  數(shù)制是人們利用符號進(jìn)行計(jì)數(shù)的科學(xué)方法。數(shù)制有很多種,在計(jì)算機(jī)中常用的數(shù)制有:十進(jìn)制,二進(jìn)制和十六進(jìn)制。

  數(shù)制也稱計(jì)數(shù)制,是指用一組固定的符號和統(tǒng)一的規(guī)則來表示數(shù)值的方法。計(jì)算機(jī)是信息處理的工具,任何信息必須轉(zhuǎn)換成二進(jìn)制形式數(shù)據(jù)后才能由計(jì)算機(jī)進(jìn)行處理,存儲和傳輸。

十進(jìn)制數(shù)(Decimal)

  人們通常使用的是十進(jìn)制。它的特點(diǎn)有兩個(gè):有0,1,2….9十個(gè)基本數(shù)字組成,十進(jìn)制數(shù)運(yùn)算是按“逢十進(jìn)一”的規(guī)則進(jìn)行的.
  在計(jì)算機(jī)中,除了十進(jìn)制數(shù)外,經(jīng)常使用的數(shù)制還有二進(jìn)制數(shù)和十六進(jìn)制數(shù).在運(yùn)算中它們分別遵循的是逢二進(jìn)一和逢十六進(jìn)一的法則.

二進(jìn)制數(shù)(Binary)

  二進(jìn)制數(shù)有兩個(gè)特點(diǎn):它由兩個(gè)基本數(shù)字0,1組成,二進(jìn)制數(shù)運(yùn)算規(guī)律是逢二進(jìn)一。
  為區(qū)別于其它進(jìn)制數(shù),二進(jìn)制數(shù)的書寫通常在數(shù)的右下方注上基數(shù)2,或加后面加B表示。
  例如:二進(jìn)制數(shù)10110011可以寫成(10110011)2,或?qū)懗?0110011B,對于十進(jìn)制數(shù)可以不加注.計(jì)算機(jī)中的數(shù)據(jù)均采用二進(jìn)制數(shù)表示,這是因?yàn)槎M(jìn)制數(shù)具有以下特點(diǎn):
  1) 二進(jìn)制數(shù)中只有兩個(gè)字符0和1,表示具有兩個(gè)不同穩(wěn)定狀態(tài)的元器件。例如,電路中有,無電流,有電流用1表示,無電流用0表示。類似的還比如電路中電壓的高,低,晶體管的導(dǎo)通和截止等。
  2) 二進(jìn)制數(shù)運(yùn)算簡單,大大簡化了計(jì)算中運(yùn)算部件的結(jié)構(gòu)。
  二進(jìn)制數(shù)的加法和乘法運(yùn)算如下:
  0+0=0 0+1=1+0=1 1+1=10
  0×0=0 0×1=1×0=0 1×1=1

八進(jìn)制數(shù)(Octal)

  由于二進(jìn)制數(shù)據(jù)的基R較小,所以二進(jìn)制數(shù)據(jù)的書寫和閱讀不方便,為此,在小型機(jī)中引入了八進(jìn)制。八進(jìn)制的基R=8=2^3,有數(shù)碼0、1、2、3、4、5、6、7,并且每個(gè)數(shù)碼正好對應(yīng)三位二進(jìn)制數(shù),所以八進(jìn)制能很好地反映二進(jìn)制。八進(jìn)制用下標(biāo)8或數(shù)據(jù)后面加Q表示 例如:二進(jìn)制數(shù)據(jù) ( 11 101 010 . 010 110 100 )2 對應(yīng) 八進(jìn)制數(shù)據(jù) ( 3 5 2 . 2 6 4 )8或352.264Q.

十六進(jìn)制數(shù)(Hex)

  由于二進(jìn)制數(shù)在使用中位數(shù)太長,不容易記憶,所以又提出了十六進(jìn)制數(shù)
  十六進(jìn)制數(shù)有兩個(gè)基本特點(diǎn):它由十六個(gè)字符0~9以及A,B,C,D,E,F(xiàn)組成(它們分別表示十進(jìn)制數(shù)10~15),十六進(jìn)制數(shù)運(yùn)算規(guī)律是逢十六進(jìn)一,即基R=16=2^4,通常在表示時(shí)用尾部標(biāo)志H或下標(biāo)16以示區(qū)別。
  例如:十六進(jìn)制數(shù)4AC8可寫成(4AC8)16,或?qū)懗?AC8H。

數(shù)的位權(quán)概念

  對于形式化的進(jìn)制表示,我們可以從0開始,對數(shù)字的各個(gè)數(shù)位進(jìn)行編號,即個(gè)位起往左依次為編號0,1,2,……;對稱的,從小數(shù)點(diǎn)后的數(shù)位則是-1,-2,……
  進(jìn)行進(jìn)制轉(zhuǎn)換時(shí),我們不妨設(shè)源進(jìn)制(轉(zhuǎn)換前所用進(jìn)制)的基為R1,目標(biāo)進(jìn)制(轉(zhuǎn)換后所用進(jìn)制)的基為R2,原數(shù)值的表示按數(shù)位為AnA(n-1)……A2A1A0.A-1A-2……,R1在R2中的表示為R,則有(AnA(n-1)……A2A1A0.A-1A-2……)R1=(An*R^n+A(n-1)*R^(n-1)+……+A2*R^2+A1*R^1+A0*R^0+A-1*R^(-1)+A-2*R^(-2))R2
  (由于此處不可選擇字體,說明如下:An,A2,A-1等符號中,n,2,-1等均應(yīng)改為下標(biāo),而上標(biāo)的冪次均用^作為前綴)
  舉例:
  一個(gè)十進(jìn)制數(shù)110,其中百位上的1表示1個(gè)10^2,既100,十位的1表示1個(gè)10^1,即10,個(gè)位的0表示0個(gè)100,即0。
  一個(gè)二進(jìn)制數(shù)110,其中高位的1表示1個(gè)2^2,即4,低位的1表示1個(gè)2^1,即2,最低位的0表示0個(gè)2^0,即0。
  一個(gè)十六進(jìn)制數(shù)110,其中高位的1表示1個(gè)16^2,即256,低位的1表示1個(gè)16^1,即16,最低位的0表示0個(gè)16^0,即0。
  可見,在數(shù)制中,各位數(shù)字所表示值的大小不僅與該數(shù)字本身的大小有關(guān),還與該數(shù)字所在的位置有關(guān),我們稱這關(guān)系為數(shù)的位權(quán)。
  十進(jìn)制數(shù)的位權(quán)是以10為底的冪,二進(jìn)制數(shù)的位權(quán)是以2為底的冪,十六進(jìn)制數(shù)的位權(quán)是以16為底的冪。數(shù)位由高向低,以降冪的方式排列。

進(jìn)數(shù)制之間的轉(zhuǎn)換

  1.二進(jìn)制數(shù)、十六進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)(按權(quán)求和)
  二進(jìn)制數(shù)、十六進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)的規(guī)律是相同的。把二進(jìn)制數(shù)(或十六進(jìn)制數(shù))按位權(quán)形式展開多項(xiàng)式和的形式,求其最后的和,就是其對應(yīng)的十進(jìn)制數(shù)——簡稱“按權(quán)求和”.
  例如:把(1001.01)2轉(zhuǎn)換為十進(jìn)制數(shù)。
  解:(1001.01)2
  =1*8+4*0+2*0+1*1+0*(1/2)+1*(1/4)
  =8+0+0+1+0+0.25
  =9.25
  把(38A.11)16轉(zhuǎn)換為十進(jìn)制數(shù)
  解:(38A.11)16
  =3×16的2次方+8×16的1次方+10×16的0次方+1×16的-1次方+1×16的-2次方
  =768+128+10+0.0625+0.0039
  =906.0664
  2.十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù),十六進(jìn)制數(shù)(除2/16取余法)
  整數(shù)轉(zhuǎn)換.一個(gè)十進(jìn)制整數(shù)轉(zhuǎn)換為二進(jìn)制整數(shù)通常采用除二取余法,即用2連續(xù)除十進(jìn)制數(shù),直到商為0,逆序排列余數(shù)即可得到――簡稱除二取余法.
  例:將25轉(zhuǎn)換為二進(jìn)制數(shù)
  解:25÷2=12 余數(shù)1
  12÷2=6 余數(shù)0
  6÷2=3 余數(shù)0
  3÷2=1 余數(shù)1
  1÷2=0 余數(shù)1
  所以25=(11001)2
  同理,把十進(jìn)制數(shù)轉(zhuǎn)換為十六進(jìn)制數(shù)時(shí),將基數(shù)2轉(zhuǎn)換成16就可以了.
  例:將25轉(zhuǎn)換為十六進(jìn)制數(shù)
  解:25÷16=1 余數(shù)9
  1÷16=0 余數(shù)1
  所以25=(19)16
  3.二進(jìn)制數(shù)與十六進(jìn)制數(shù)之間的轉(zhuǎn)換
  由于4位二進(jìn)制數(shù)恰好有16個(gè)組合狀態(tài),即1位十六進(jìn)制數(shù)與4位二進(jìn)制數(shù)是一一對應(yīng)的.所以,十六進(jìn)制數(shù)與二進(jìn)制數(shù)的轉(zhuǎn)換是十分簡單的.
  (1)十六進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù),只要將每一位十六進(jìn)制數(shù)用對應(yīng)的4位二進(jìn)制數(shù)替代即可――簡稱位分四位.
  例:將(4AF8B)16轉(zhuǎn)換為二進(jìn)制數(shù).
  解: 4 A F 8 B
  0100 1010 1111 1000 1011
  所以(4AF8B)16=(1001010111110001011)2
  (2)二進(jìn)制數(shù)轉(zhuǎn)換為十六進(jìn)制數(shù),分別向左,向右每四位一組,依次寫出每組4位二進(jìn)制數(shù)所對應(yīng)的十六進(jìn)制數(shù)――簡稱四位合一位.
  例:將二進(jìn)制數(shù)(000111010110)2轉(zhuǎn)換為十六進(jìn)制數(shù).
  解: 0001 1101 0110
  1 D 6
  所以(111010110)2=(1D6)16
  轉(zhuǎn)換時(shí)注意最后一組不足4位時(shí)必須加0補(bǔ)齊4位

數(shù)制轉(zhuǎn)換的一般化

  1)R進(jìn)制轉(zhuǎn)換成十進(jìn)制
  任意R進(jìn)制數(shù)據(jù)按權(quán)展開、相加即可得十進(jìn)制數(shù)據(jù)。 例如:N = 1101.0101B = 1*2^3+1*2^2+0*21+1*2^0+0*2^-1+1*2^-2+0*2^-3+1*2^-4 = 8+4+0+1+0+0.25+0+0.0625 = 13.3125
  N = 5A.8 H = 5*161+A*160+8*16-1 = 80+10+0.5 = 90.5
  2)十進(jìn)制轉(zhuǎn)換R 進(jìn)制
  十進(jìn)制數(shù)轉(zhuǎn)換成R 進(jìn)制數(shù),須將整數(shù)部分和小數(shù)部分分別轉(zhuǎn)換.
  1.整數(shù)轉(zhuǎn)換----除R 取余法 規(guī)則:(1)用R 去除給出的十進(jìn)制數(shù)的整數(shù)部分,取其余數(shù)作為轉(zhuǎn)換后的R 進(jìn)制數(shù)據(jù)的整數(shù)部分最低位數(shù)字; (2)再用2去除所得的商,取其余數(shù)作為轉(zhuǎn)換后的R 進(jìn)制數(shù)據(jù)的高一位數(shù)字; (3)重復(fù)執(zhí)行(2)操作,一直到商為0結(jié)束。 例如: 115 轉(zhuǎn)換成 Binary數(shù)據(jù)和Hexadecimal數(shù)據(jù) (圖2-4) 所以 115 = 1110011 B = 73 H
  2.小數(shù)轉(zhuǎn)換-----乘R 取整法 規(guī)則:(1)用R 去除給出的十進(jìn)制數(shù)的小數(shù)部分,取乘積的整數(shù)部分作為轉(zhuǎn)換后R 進(jìn)制小數(shù)點(diǎn)后第一位數(shù)字; (2)再用R 去乘上一步乘積的小數(shù)部分,然后取新乘積的整數(shù)部分作為轉(zhuǎn)換后R 進(jìn)制小數(shù)的低一位數(shù)字; (3)重復(fù)(2)操作,一直到乘積為0,或已得到要求精度數(shù)位為止。

單片機(jī)相關(guān)文章:單片機(jī)教程


單片機(jī)相關(guān)文章:單片機(jī)視頻教程


單片機(jī)相關(guān)文章:單片機(jī)工作原理




關(guān)鍵詞: 單片機(jī) 匯編語言

評論


相關(guān)推薦

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

關(guān)閉