單片機(jī)匯編語(yǔ)言詳解
數(shù)制的概念
數(shù)制是人們利用符號(hào)進(jìn)行計(jì)數(shù)的科學(xué)方法。數(shù)制有很多種,在計(jì)算機(jī)中常用的數(shù)制有:十進(jìn)制,二進(jìn)制和十六進(jìn)制。
數(shù)制也稱計(jì)數(shù)制,是指用一組固定的符號(hào)和統(tǒng)一的規(guī)則來(lái)表示數(shù)值的方法。計(jì)算機(jī)是信息處理的工具,任何信息必須轉(zhuǎn)換成二進(jìn)制形式數(shù)據(jù)后才能由計(jì)算機(jī)進(jìn)行處理,存儲(chǔ)和傳輸。十進(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,對(duì)于十進(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)的元器件。例如,電路中有,無(wú)電流,有電流用1表示,無(wú)電流用0表示。類似的還比如電路中電壓的高,低,晶體管的導(dǎo)通和截止等。 2) 二進(jìn)制數(shù)運(yùn)算簡(jiǎn)單,大大簡(jiǎ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ù)碼正好對(duì)應(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 對(duì)應(yīng) 八進(jìn)制數(shù)據(jù) ( 3 5 2 . 2 6 4 )8或352.264Q.十六進(jìn)制數(shù)(Hex)
由于二進(jìn)制數(shù)在使用中位數(shù)太長(zhǎng),不容易記憶,所以又提出了十六進(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)概念
對(duì)于形式化的進(jìn)制表示,我們可以從0開始,對(duì)數(shù)字的各個(gè)數(shù)位進(jìn)行編號(hào),即個(gè)位起往左依次為編號(hào)0,1,2,……;對(duì)稱的,從小數(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 ?。ㄓ捎诖颂幉豢蛇x擇字體,說(shuō)明如下:An,A2,A-1等符號(hào)中,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)式和的形式,求其最后的和,就是其對(duì)應(yīng)的十進(jìn)制數(shù)——簡(jiǎn)稱“按權(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ù)即可得到――簡(jiǎn)稱除二取余法. 例:將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ù)是一一對(duì)應(yīng)的.所以,十六進(jìn)制數(shù)與二進(jìn)制數(shù)的轉(zhuǎn)換是十分簡(jiǎn)單的. (1)十六進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù),只要將每一位十六進(jìn)制數(shù)用對(duì)應(yīng)的4位二進(jìn)制數(shù)替代即可――簡(jiǎn)稱位分四位. 例:將(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ù)所對(duì)應(yīng)的十六進(jìn)制數(shù)――簡(jiǎn)稱四位合一位. 例:將二進(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ī)工作原理
評(píng)論