資源描述:
《pic單片機(jī)指令系統(tǒng)和匯編語言程序設(shè)計(jì)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
1、第二章PIC單片機(jī)指令系統(tǒng)和匯編語言程序設(shè)計(jì)2.1指令系統(tǒng)概述2.1.1指令的表示方法1.機(jī)器指令的表示方法:指令用于規(guī)定計(jì)算機(jī)的基本操作。一臺(tái)計(jì)算機(jī)所能執(zhí)行的指令集合就是它的指令系統(tǒng)。指令共有兩種表示方法,分別是機(jī)器語言表示方法和匯編語言表示方法。不同種類的單片機(jī)有不同的一套命令(即所謂“指令系統(tǒng)”)。2.匯編語言的表示方法:匯編語言是對(duì)機(jī)器語言的改進(jìn),它采用便于人們記憶的一些符號(hào)(例如簡化的英文單詞)來表示操作碼、操作數(shù)和地址碼等。通常把表示指令的符號(hào)稱之為助記符。3.PIC16F87X單片機(jī)指令:PIC16F87X單片機(jī)采用精簡指令集(RISC)結(jié)構(gòu),指令效率高,功
2、能強(qiáng)。它的指令為單字的寬字位(14)指令,由此生成的程序代碼短。指令條數(shù)少,僅有35條。(1)面向字節(jié)操作類(2)面向位操作類(3)常數(shù)操作和控制類操作。2.1.2PIC單片機(jī)指令的尋址方式1.寄存器間接尋址:所謂寄存器間接尋址指的是通過寄存器F0、F4來實(shí)現(xiàn)。實(shí)際的寄存器地址放在F4的低5位中,通過F0來進(jìn)行間接尋址。INDF不是物理上實(shí)際存在的寄存器,而任何尋址INDF的指令都是以FSR寄存器內(nèi)容為地址的RAM單元中存放著參加運(yùn)算或操作的數(shù)據(jù)。2.立即數(shù)尋址:所謂立即尋址就是操作數(shù)在指令中直接給出。通常把出現(xiàn)在指令中的操作數(shù)稱之為立即數(shù),因此就把這種尋址方式稱之為立即
3、尋址。3.直接尋址:指令中操作數(shù)以其所在存儲(chǔ)單元地址的形式給出,就稱之為直接尋址。這種方式是對(duì)任何一寄存器直接尋址訪問。4.位尋址:這種尋址方式是對(duì)寄存器中的任一位(bit)進(jìn)行操作。2.1.3指令符號(hào)的意義說明1.PIC匯編語言指令格式PIC系列微控制器匯編語言指令與MCS-51系列單片機(jī)匯編語言一樣,每條匯編語言指令由4個(gè)部分組成,其書寫格式如下:標(biāo)號(hào) 操作碼助記符 操作數(shù)1,操作數(shù)2;注釋2.指令符號(hào)的意義說明:在PIC系列單片機(jī)指令中常把數(shù)據(jù)存儲(chǔ)器RAM當(dāng)作寄存器來使用(處理)并用字母f(或F)表示。d代表操作數(shù)的目標(biāo)選擇,定義d=0,結(jié)果存入W;d=1結(jié)果存入(
4、文件)寄存器f,當(dāng)使用匯編程序指令d缺省時(shí),默認(rèn)d=1。b代表(文件)寄存器(8位)的位地址(0~7取值)。如寄存器的8位為b7、b6……b1、b0,若b=1代表寄存器的第b1位。字母符號(hào)k代表立即數(shù)、常數(shù)和數(shù)據(jù)標(biāo)號(hào)。2.2字節(jié)操作指令PIC16F87X系列單片機(jī)字節(jié)操作指令詳解見下面表格2.3位操作指令PIC16F87X系列單片機(jī)位操作指令詳解見下面表格2.4匯編語言程序設(shè)計(jì)2.4.1匯編語言程序設(shè)計(jì)知識(shí)1.匯編語言源程序的結(jié)構(gòu)匯編語言提供了一種不涉及實(shí)際存儲(chǔ)器地址和機(jī)器指令編碼的編寫源程序的有效方法。我們需要掌握的是:匯編語言的程序格式、語句格式、助記符、偽指令。程序
5、的4種基本結(jié)構(gòu):順序、分支、循環(huán)和子程序。2.PIC匯編語言的程序流程圖(1)程序流程圖常用的圖形符號(hào)圓角矩形框?yàn)槠鹗?終止框,表示一個(gè)程序的開始或結(jié)束。矩形框?yàn)槿蝿?wù)框,表示要處理的任務(wù)。菱形框?yàn)榕袛嗫?,表示要判斷的因素,判斷結(jié)果將導(dǎo)致程序走入不同的分支。指向線為帶有箭頭的線段,表示程序的走向。(2)程序流程圖的畫法①順序程序結(jié)構(gòu)順序程序結(jié)構(gòu)在流程圖中表示為任務(wù)框一個(gè)一個(gè)地串行連接。在計(jì)算機(jī)執(zhí)行程序時(shí)表現(xiàn)為,從頭至尾嚴(yán)格按照次序一條語句一條語句地順序執(zhí)行,并且每一條語句均被執(zhí)行一遍。②分支程序流程圖分支程序流程圖包含1個(gè)判斷框和兩個(gè)或兩個(gè)以上的出口。從而形成程序的2個(gè)或多
6、個(gè)分支.③循環(huán)程序流程圖循環(huán)程序的結(jié)構(gòu)包含以下4個(gè)組成部分:循環(huán)初始化部分:為循環(huán)程序作準(zhǔn)備。如循環(huán)變量設(shè)置,即指定或定義一個(gè)循環(huán)變量作循環(huán)次數(shù)計(jì)數(shù)器或地址指針,并給它設(shè)置一個(gè)初始值。循環(huán)體:要求重復(fù)執(zhí)行的程序段,即循環(huán)程序的主體部分。循環(huán)控制部分:循環(huán)控制就是根據(jù)循環(huán)結(jié)束條件,判斷是否跳出循環(huán)。結(jié)束部分:對(duì)循環(huán)結(jié)果進(jìn)行分析、處理和保存。2.4.2PIC匯編語言的偽指令用來編寫匯編語言源程序的語句,主要是指令助記符,其次就是偽指令。所謂偽指令就是“假”指令的意思,不是單片機(jī)的指令系統(tǒng)中的真實(shí)指令。偽指令與指令系統(tǒng)中的助記符的不同之處是沒有機(jī)器碼與它對(duì)應(yīng)。最常用的偽指令介紹
7、(1)INCLODE功能:讀入外部源文件格式:INCLUDE<文件名>說明:用于把指定文件讀入源程序中作為源程序代碼的一部分。文件名必須用雙引號(hào)或尖括號(hào)給出,如果被指定文件非當(dāng)前工作目錄下,則需要指令完整的路徑。(2)EQU功能:對(duì)標(biāo)號(hào)賦值格式:<標(biāo)號(hào)>EQU<表達(dá)式>說明:使EQU兩端的8位值相等,即給標(biāo)號(hào)賦予一個(gè)特定值或者說是給標(biāo)號(hào)定義一個(gè)數(shù)值。(3)#DEFINE功能:定義文本替換標(biāo)號(hào)格式:#DEFINE<名字>[<字符串>]說明:用于定義文本替換標(biāo)號(hào),在匯編時(shí)把源代碼中的<名字>替換成<字符串>。(4)ORG功能:存放