匯編語(yǔ)言采用了助記符號(hào)編寫(xiě)程序,通過(guò)編譯器轉(zhuǎn)換成能夠被計(jì)算機(jī)識(shí)別和處理的二進(jìn)制代碼程序。
一、編程語(yǔ)言介紹
機(jī)器語(yǔ)言是用二進(jìn)制代碼表示的,能被計(jì)算機(jī)直接識(shí)別和執(zhí)行的一種機(jī)器指令的集合。直觀性和通用性都很差
匯編語(yǔ)言采用了助記符號(hào)編寫(xiě)程序,通過(guò)編譯器轉(zhuǎn)換成能夠被計(jì)算機(jī)識(shí)別和處理的二進(jìn)制代碼程序。匯編語(yǔ)言仍然是面向機(jī)器的語(yǔ)言,編程煩瑣費(fèi)時(shí),通用性也差。
高級(jí)語(yǔ)言用與自然語(yǔ)言接近的代碼編寫(xiě)程序,通過(guò)編譯器轉(zhuǎn)換成二進(jìn)制代碼程序。高級(jí)語(yǔ)言易學(xué)易用,通用性好。C語(yǔ)言是一種結(jié)構(gòu)化的高級(jí)編程語(yǔ)言,在單片機(jī)系統(tǒng)開(kāi)發(fā)中得到了廣泛應(yīng)用。
1.數(shù)制的基與權(quán)
基 :各計(jì)數(shù)制中每個(gè)數(shù)位上可用字符的個(gè)數(shù)。
權(quán) :數(shù)字“1”在數(shù)字不同的數(shù)位所代表的數(shù)值。
二進(jìn)制基數(shù)為2( 0和1),權(quán)為以2為底的冪。二進(jìn)制數(shù)字后面用B表示
十進(jìn)制基數(shù)為10(0-9),權(quán)是以10為底的冪。十進(jìn)制用D(或不加標(biāo)志)表示十進(jìn)制數(shù)
十六進(jìn)制基數(shù)為16(0-9以及A-F),權(quán)是以16為底的冪。十六進(jìn)制用H表示十六進(jìn)制數(shù)。
進(jìn)制轉(zhuǎn)換此處略,往上方法有很多,大家根據(jù)自己情況選個(gè)適合自己的即可
例5 將十進(jìn)制數(shù)500.03125轉(zhuǎn)換為十六進(jìn)制數(shù)
解:
因此可得:500.03125=1F4.08H
十六進(jìn)制數(shù)與二進(jìn)制數(shù)之間的轉(zhuǎn)換
整數(shù)部分由小數(shù)點(diǎn)向左每4位一組,若整數(shù)最高位的一組不足4位,則在其左邊加0補(bǔ)足4位;
小數(shù)部分由小數(shù)點(diǎn)向右每4位一組,若小數(shù)最低位的一組不足4位,則在其右邊加0補(bǔ)足4位;
用與每組二進(jìn)制數(shù)所對(duì)應(yīng)的十六進(jìn)制數(shù)取代每組的4位二進(jìn)制數(shù)即可轉(zhuǎn)換為十六進(jìn)制。
將十六進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)時(shí),過(guò)程相反。
例6:將十六進(jìn)制數(shù)9F4.1H轉(zhuǎn)換為二進(jìn)制數(shù)
解:將每位十六進(jìn)制數(shù)寫(xiě)為二進(jìn)制數(shù)
可得: 9F4.1H = 100111110100.0001B
二、編碼
編碼是計(jì)算機(jī)為輸入處理字母、數(shù)字和符號(hào)等組成的信息,依靠輸入設(shè)備先把要輸入的字符按一定格式編成的二進(jìn)制代碼。
目前國(guó)際上使用的字符編碼是ASCII碼(Americanstandard coded for information interchange,美國(guó)信息交換標(biāo)準(zhǔn)碼)。
ASCII碼用一個(gè)字節(jié)來(lái)表示一個(gè)字符,采用7位二進(jìn)制代碼來(lái)對(duì)字符進(jìn)行編碼,最高位一般用做校驗(yàn)位,因此共128個(gè),包括32個(gè)通用控制符號(hào)、10個(gè)阿拉伯?dāng)?shù)字、52個(gè)英文大寫(xiě)和小寫(xiě)字母及34個(gè)專用符號(hào)。
三、變量與運(yùn)算符
數(shù)字0-9的ASCII碼為30H-39H,英文大寫(xiě)字母A-Z的ASCII碼為41H-5AH
數(shù)據(jù)可分為常量和變量。常量是數(shù)值和字符等不能改變的量,可以不經(jīng)說(shuō)明和定義直接使用,而變量是在程序運(yùn)行過(guò)程中可以根據(jù)需要改變的量,在引用之前必須定義類型。
C51 定義一個(gè)變量的格式如下:
數(shù)據(jù)類型 [存儲(chǔ)類型] 變量名表
其中“數(shù)據(jù)類型”和“存儲(chǔ)類型”的先后次序可以互換。
表4-1Cx51支持的數(shù)據(jù)類型
四、變量類型
bit 、sfr、 sfr16 和sbit是 Keil C51中新增的變量類型。
(1**)bit**用來(lái)定義位變量,值只能是0或1。位變量位于8051單片機(jī)內(nèi)部RAM位尋址區(qū)(20H~2FH),共為16字節(jié),最多可定義128個(gè)位變量。
(2**)sfr**用于定義特殊功能寄存器變量。該變量存儲(chǔ)在片內(nèi)的特殊功能寄存器存儲(chǔ)區(qū)中,用來(lái)對(duì)特殊功能寄存器進(jìn)行讀寫(xiě)操作。
例如:51頭文件中有定義sfr P0=0x90,這一語(yǔ)句定義了P0端口在片內(nèi)的寄存器,在程序中可以使用P0對(duì)該端口寄存器進(jìn)行操作。
(3)sfr16也用于定義特殊功能寄存器,所不同的是它用于操作占兩個(gè)字節(jié)的特殊功能寄存器。
例如:sfr16DPTR=0x82語(yǔ)句定義了片內(nèi)16位數(shù)據(jù)指針寄存器DPTR,其低8位字節(jié)地址為82H,高8位字節(jié)地址為83H,在程序中可以對(duì)DPTR進(jìn)行操作。
(4)sbit用于定義特殊功能寄存器位變量,用來(lái)對(duì)特殊功能寄存器的可位尋址位進(jìn)行讀寫(xiě)操作。
例如sbit P0_0=P0^0 定義了特殊功能寄存器P0的第0位,后面對(duì)該位的操作可用P0_0代替。符號(hào)^后面的數(shù)字定義特殊功能寄存器可尋址位在寄存器中的位置,取值必須是0-7。
五、儲(chǔ)存類型
Cx51存儲(chǔ)類型
1.片內(nèi)存儲(chǔ)區(qū)
(1)data將變量存儲(chǔ)在片內(nèi)可直接尋址的數(shù)據(jù)存儲(chǔ)器DATA區(qū)中。DATA區(qū)位于片內(nèi)RAM的低128字節(jié)(0X00~0X7F)。
使用data存儲(chǔ)模式,目標(biāo)代碼中對(duì)變量的訪問(wèn)速度最快,把經(jīng)常使用的變量放在DATA區(qū)可提高程序運(yùn)行速度。
若定義i為存儲(chǔ)類型為data的無(wú)符號(hào)字符型數(shù)據(jù),可聲明為:unsigned char data i
(2) bdata用于將變量定義在數(shù)據(jù)存儲(chǔ)器可位尋址的BDATA區(qū),允許位與字節(jié)混合訪問(wèn)。uBDATA區(qū)位于單片機(jī)內(nèi)部RAM字節(jié)地址0x20~0x2F的16個(gè)字節(jié)中,每個(gè)字節(jié)8位,共計(jì)16x8=128個(gè)可尋址位。u例如如下聲明后可用位變量value0訪問(wèn)字節(jié)value的0位:
unsigned char bdata value;
bit value0=value^0;
若value的原值為0x00,欲將value的第0位置為1,可采用按字節(jié)訪問(wèn)方式“value=0x01”實(shí)現(xiàn),也可以按位尋址方式“value0=1”實(shí)現(xiàn)。
(3)idata將變量存儲(chǔ)在片內(nèi)間接尋址的數(shù)據(jù)存儲(chǔ)區(qū)IDATA區(qū)中。IDATA區(qū)使用指針來(lái)進(jìn)行尋址和訪問(wèn)。
51內(nèi)核單片機(jī)RAM僅有128個(gè)字節(jié),因此無(wú)間接尋址數(shù)據(jù)存儲(chǔ)器區(qū),idata與data無(wú)區(qū)別。52內(nèi)核單片機(jī)RAM有256個(gè)字節(jié),當(dāng)片內(nèi)128字節(jié)的直接尋址數(shù)據(jù)存儲(chǔ)區(qū)不夠用時(shí),可以使用128字節(jié)間接尋址數(shù)據(jù)存儲(chǔ)區(qū),訪問(wèn)速度較data慢一些。
2.片外存儲(chǔ)區(qū)
xdata將變量存儲(chǔ)在片外數(shù)據(jù)存儲(chǔ)器中,采用16位地址,可以訪問(wèn)外部數(shù)據(jù)存儲(chǔ)區(qū)64KB內(nèi)的任何地址。
pdata將變量存儲(chǔ)在片外數(shù)據(jù)存儲(chǔ)器中的第一頁(yè)(地址00H~FFH)中,存儲(chǔ)空間為256字節(jié)。對(duì)PDATA區(qū)尋址,只需要裝入8位地址,而對(duì)XDATA區(qū)尋址要裝入16位地址,因此對(duì)PDATA區(qū)的尋址要比對(duì)XDATA區(qū)尋址快。
pdata和xdata存儲(chǔ)類型的變量由于需要訪問(wèn)外存,訪問(wèn)速度最慢,應(yīng)盡量減少對(duì)變量的訪問(wèn)次數(shù)。這兩種類型適合保存原始數(shù)據(jù)或最終結(jié)果,需要頻繁訪問(wèn)的中間結(jié)果應(yīng)盡量不用或少用。
3.程序存儲(chǔ)器ROM
code將變量存儲(chǔ)在程序存儲(chǔ)器中,變量只能讀不能寫(xiě),因此適合存儲(chǔ)常量或查表類的數(shù)組數(shù)據(jù),不能用于存儲(chǔ)程序運(yùn)行過(guò)程中需要修改的變量。如果想改變變量值,只能在程序中修改后重新將程序燒寫(xiě)進(jìn)ROM中。
-
計(jì)算機(jī)
+關(guān)注
關(guān)注
19文章
7647瀏覽量
90488 -
匯編語(yǔ)言
+關(guān)注
關(guān)注
14文章
412瀏覽量
36727 -
編譯器
+關(guān)注
關(guān)注
1文章
1659瀏覽量
50064
發(fā)布評(píng)論請(qǐng)先 登錄
匯編語(yǔ)言程序設(shè)計(jì)pdf

匯編語(yǔ)言程序設(shè)計(jì)下載

評(píng)論