片機(jī)原理與應(yīng)用第二章課件_第1頁(yè)
片機(jī)原理與應(yīng)用第二章課件_第2頁(yè)
片機(jī)原理與應(yīng)用第二章課件_第3頁(yè)
片機(jī)原理與應(yīng)用第二章課件_第4頁(yè)
片機(jī)原理與應(yīng)用第二章課件_第5頁(yè)
已閱讀5頁(yè),還剩139頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、單片機(jī)原理與應(yīng)用單片機(jī)原理與應(yīng)用EmailEmail:20212021年年1111月月1010日日第第2 2章章 MCS-51MCS-51單片機(jī)指令系統(tǒng)與匯編語(yǔ)言單片機(jī)指令系統(tǒng)與匯編語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì)主要內(nèi)容:主要內(nèi)容: MCS-51單片機(jī)的尋址方式、指令系統(tǒng)、基本程序結(jié)構(gòu)及匯編語(yǔ)言的開發(fā)和調(diào)試。重點(diǎn)在于尋址方式、各種指令的應(yīng)用、程序設(shè)計(jì)的規(guī)范、程序設(shè)計(jì)的思想及典型程序的理解和掌握。難點(diǎn)在于控制轉(zhuǎn)移、位操作指令的理解及各種指令的靈活應(yīng)用,以及程序設(shè)計(jì)的基本方法和針對(duì)具體的硬件設(shè)計(jì)出最合理的軟件。 指令系統(tǒng)指令系統(tǒng):一臺(tái)計(jì)算機(jī)所能識(shí)別、執(zhí)行的指令的集合就是它的指令系統(tǒng)。 機(jī)器語(yǔ)言機(jī)器語(yǔ)言:指令

2、系統(tǒng)是一套控制計(jì)算機(jī)執(zhí)行操作的二進(jìn)制編碼,稱為機(jī)器語(yǔ)言。機(jī)器語(yǔ)言指令是計(jì)算機(jī)惟一能識(shí)別和執(zhí)行的指令。 匯編語(yǔ)言匯編語(yǔ)言:指令系統(tǒng)是利用指令助記符來(lái)描述的,稱為匯編語(yǔ)言。 計(jì)算機(jī)的指令系統(tǒng)一般都是利用匯編語(yǔ)言描述的,是由計(jì)算機(jī)硬件設(shè)計(jì)所決定的。指令系統(tǒng)沒(méi)有通用性。 單片機(jī)一般是空機(jī),未含任何系統(tǒng)軟件。因此在第一次使用前,必須對(duì)其進(jìn)行編程, 2.1 2.1 概述概述 2.1.1 2.1.1 匯編語(yǔ)言指令格式與偽指令匯編語(yǔ)言指令格式與偽指令 1 1常用單位與術(shù)語(yǔ)常用單位與術(shù)語(yǔ) 位(位(bitbit):位是計(jì)算機(jī)所能表示的最小的、最基本的數(shù)據(jù)單位,位位是計(jì)算機(jī)所能表示的最小的、最基本的數(shù)據(jù)單位,位通常

3、是指一個(gè)二進(jìn)制位。通常是指一個(gè)二進(jìn)制位。 字節(jié)(字節(jié)(ByteByte):一個(gè)連續(xù)的一個(gè)連續(xù)的8 8位二進(jìn)制數(shù)碼稱為一個(gè)字節(jié),即位二進(jìn)制數(shù)碼稱為一個(gè)字節(jié),即1Byte=8bit1Byte=8bit。 字(字(WordWord):通常由通常由1616位二進(jìn)制數(shù)碼組成,即位二進(jìn)制數(shù)碼組成,即1Word=2Byte1Word=2Byte。 字長(zhǎng)字長(zhǎng):字長(zhǎng)是指計(jì)算機(jī)一次處理二進(jìn)制數(shù)碼位的多少。字長(zhǎng)是指計(jì)算機(jī)一次處理二進(jìn)制數(shù)碼位的多少。MCS-51MCS-51型單型單片機(jī)是片機(jī)是8 8位機(jī),所以說(shuō)它的字長(zhǎng)為位機(jī),所以說(shuō)它的字長(zhǎng)為8 8位。位。 MCS-51MCS-51系列單片機(jī)都是以系列單片機(jī)都是以In

4、telIntel公司最早的典型產(chǎn)品公司最早的典型產(chǎn)品80518051為核心,為核心,增加了一定的功能部件后構(gòu)成的。本章以增加了一定的功能部件后構(gòu)成的。本章以80518051為主介紹為主介紹MCS-51MCS-51系系列單片機(jī)列單片機(jī) 。2 2匯編語(yǔ)言指令格式匯編語(yǔ)言指令格式 指令格式指令格式:指令的表示方式稱為指令格式,它規(guī)定了指令的長(zhǎng)度和內(nèi)部信息的安排。完整的指令格式如下: 標(biāo)號(hào)標(biāo)號(hào): : 操作碼操作碼 操作數(shù)操作數(shù) , ,操作數(shù)操作數(shù) ; ;注釋注釋 其中: 項(xiàng)是可選項(xiàng)。標(biāo)號(hào):指本條指令起始地址的符號(hào),也稱為指令的符號(hào)地址。代表該條指令在程序編譯時(shí)的具體地址。操作碼:又稱助記符,它是由對(duì)應(yīng)

5、的英文縮寫構(gòu)成的,是指令語(yǔ)句的關(guān)鍵。它規(guī)定了指令具體的操作功能,描述指令的操作性質(zhì),是一條指令中不可缺少的內(nèi)容。操作數(shù):它既可以是一個(gè)具體的數(shù)據(jù),也可以是存放數(shù)據(jù)的地址。注釋:注釋也是指令語(yǔ)句的可選項(xiàng),它是為增加程序的可讀性而設(shè)置的,是針對(duì)某指令而添加的說(shuō)明性文字,不產(chǎn)生可執(zhí)行的目標(biāo)代碼。 偽指令偽指令(也稱為匯編程序的控制命令)是(也稱為匯編程序的控制命令)是程序員發(fā)給匯編程序的命令,用來(lái)設(shè)置符號(hào)程序員發(fā)給匯編程序的命令,用來(lái)設(shè)置符號(hào)值、保留和初始化存儲(chǔ)空間、控制用戶程序值、保留和初始化存儲(chǔ)空間、控制用戶程序代碼的位置。代碼的位置。 偽指令只出現(xiàn)在匯編前的源程序中,僅提偽指令只出現(xiàn)在匯編前的

6、源程序中,僅提供匯編用的某些控制信息,不產(chǎn)生可執(zhí)行的供匯編用的某些控制信息,不產(chǎn)生可執(zhí)行的目標(biāo)代碼,是目標(biāo)代碼,是CPUCPU不能執(zhí)行的指令。不能執(zhí)行的指令。 3偽指令 (1)定位偽指令 ORGORG 格式格式:ORG n 其中其中:n通常為絕對(duì)地址,可以是十六進(jìn)制數(shù)、標(biāo)號(hào)或表達(dá)式。 功能功能:規(guī)定編譯后的機(jī)器代碼存放的起始位置。在一個(gè)匯編語(yǔ)言源程序中允許存在多條定位偽指令,但每一個(gè)n值都應(yīng)和前面生成的機(jī)器指令存放地址不重疊。 例如程序例如程序:ORG1000H START:MOVA,#20H MOVB,#30H 3偽指令 (2 2)結(jié)束匯編偽指令)結(jié)束匯編偽指令ENDEND 格式:格式: 標(biāo)

7、號(hào)標(biāo)號(hào): END : END 表達(dá)式表達(dá)式 功能:放在匯編語(yǔ)言源程序的末尾,表明源程序的匯功能:放在匯編語(yǔ)言源程序的末尾,表明源程序的匯編到此結(jié)束,其后的任何內(nèi)容不予理睬。編到此結(jié)束,其后的任何內(nèi)容不予理睬。3偽指令 (3 3)賦值偽指令)賦值偽指令EQUEQU 格式:字符名稱格式:字符名稱x EQU x EQU 賦值項(xiàng)賦值項(xiàng)n n 功能:將賦值項(xiàng)功能:將賦值項(xiàng)n n的值賦予字符名稱的值賦予字符名稱x x。程序中凡出現(xiàn)。程序中凡出現(xiàn)該字符名稱該字符名稱x x就等同于該賦值項(xiàng)就等同于該賦值項(xiàng)n n,其值在整個(gè)程序中有,其值在整個(gè)程序中有效。賦值項(xiàng)效。賦值項(xiàng)n n可以是常數(shù)、地址、標(biāo)號(hào)或表達(dá)式。在

8、使可以是常數(shù)、地址、標(biāo)號(hào)或表達(dá)式。在使用時(shí),必須先賦值后使用。用時(shí),必須先賦值后使用。 “ “字符名稱字符名稱”與與“標(biāo)號(hào)標(biāo)號(hào)”的區(qū)別是的區(qū)別是“字符名稱字符名稱”后無(wú)后無(wú)冒號(hào),而冒號(hào),而“標(biāo)號(hào)標(biāo)號(hào)”后面有冒號(hào)。后面有冒號(hào)。3偽指令 (4)定義字節(jié)偽指令 DBDB 格式格式:標(biāo)號(hào): DB x1, x2, xn 功能功能:將8位數(shù)據(jù)(或8位數(shù)據(jù)組)x1, x2, xn順序存放在從當(dāng)前程序存儲(chǔ)器地址開始的存儲(chǔ)單元中。xi可以是8位數(shù)據(jù)、ASCII碼、表達(dá)式,也可以是括在單引號(hào)內(nèi)的字符串。兩個(gè)數(shù)據(jù)之間用逗號(hào)“,”分隔。 xi為數(shù)值常數(shù)時(shí),取值范圍為00HFFH。xi為ASCII碼時(shí),要使用單引號(hào),以

9、示區(qū)別。xi為字符串常數(shù)時(shí),其長(zhǎng)度不應(yīng)超過(guò)80個(gè)字符。 3偽指令 (5 5)定義雙字節(jié)偽指令)定義雙字節(jié)偽指令 DWDW 格式:格式: 標(biāo)號(hào)標(biāo)號(hào): DW x: DW x1 1, x, x2 2, x, xn n 功能:將雙字節(jié)數(shù)據(jù)功能:將雙字節(jié)數(shù)據(jù) 或雙字節(jié)數(shù)據(jù)組或雙字節(jié)數(shù)據(jù)組 順序存放在從標(biāo)順序存放在從標(biāo)號(hào)指定地址單元開始的存儲(chǔ)單元中。其中,號(hào)指定地址單元開始的存儲(chǔ)單元中。其中,x xi i為為1616位數(shù)位數(shù)值常數(shù),占兩個(gè)存儲(chǔ)單元,先存高值常數(shù),占兩個(gè)存儲(chǔ)單元,先存高8 8位(存入低位地址單位(存入低位地址單元中),后存低元中),后存低8 8位(存入高位地址單元中)。位(存入高位地址單元中

10、)。3偽指令 (6 6)預(yù)留存儲(chǔ)空間偽指令)預(yù)留存儲(chǔ)空間偽指令DSDS 格式:格式: 標(biāo)號(hào)標(biāo)號(hào): DS n: DS n 功能:從標(biāo)號(hào)指定地址單元開始,預(yù)留功能:從標(biāo)號(hào)指定地址單元開始,預(yù)留n n個(gè)存儲(chǔ)單元,個(gè)存儲(chǔ)單元,匯編時(shí)不對(duì)這些存儲(chǔ)單元賦值。匯編時(shí)不對(duì)這些存儲(chǔ)單元賦值。n n可以是數(shù)據(jù),也可可以是數(shù)據(jù),也可以是表達(dá)式。以是表達(dá)式。3偽指令 (7 7)定義位地址符號(hào)偽指令)定義位地址符號(hào)偽指令BITBIT 格式:字符名稱格式:字符名稱x BIT x BIT 位地址位地址n n 功能:將位地址功能:將位地址n n的值賦予字符名稱的值賦予字符名稱x x。程序中凡出現(xiàn)。程序中凡出現(xiàn)該字符名稱該字符

11、名稱x x就代表該位地址。位地址就代表該位地址。位地址n n可以是絕對(duì)地可以是絕對(duì)地址,也可以是符號(hào)地址。址,也可以是符號(hào)地址。 3偽指令 (8 8)數(shù)據(jù)地址賦值偽指令)數(shù)據(jù)地址賦值偽指令DATADATA 格式:字符名稱格式:字符名稱x DATA x DATA 表達(dá)式表達(dá)式n n 功能:把表達(dá)式功能:把表達(dá)式n n的值賦值給左邊的字符名稱的值賦值給左邊的字符名稱x x。n n可可以是數(shù)據(jù)或地址,也可以是包含所定義的以是數(shù)據(jù)或地址,也可以是包含所定義的“字符名稱字符名稱x”x”在內(nèi)的表達(dá)式,但不能是匯編符號(hào)。在內(nèi)的表達(dá)式,但不能是匯編符號(hào)。 DATADATA與與EQUEQU的主要區(qū)別是:的主要區(qū)

12、別是:EQUEQU定義的定義的“字符名稱字符名稱”必須先定義后使用,而必須先定義后使用,而DATADATA定義的定義的“字符名稱字符名稱”沒(méi)沒(méi)有這種限制。所以,有這種限制。所以,DATADATA偽指令通常用在源程序的偽指令通常用在源程序的開頭或末尾。開頭或末尾。 3偽指令 2.1.2 2.1.2 指令的分類指令的分類 MCS-51 MCS-51指令系統(tǒng)有指令系統(tǒng)有111111條指令,可按下列幾種方式分條指令,可按下列幾種方式分類:類:按指令字節(jié)數(shù)分類按指令字節(jié)數(shù)分類 單字節(jié)指令(單字節(jié)指令(4949條)、雙字節(jié)指令(條)、雙字節(jié)指令(4646條)和三字條)和三字節(jié)指令(節(jié)指令(1616條)。條

13、)。2. 2. 按指令執(zhí)行時(shí)間分類按指令執(zhí)行時(shí)間分類 單機(jī)器周期指令(單機(jī)器周期指令(6565條)、雙機(jī)器周期指令(條)、雙機(jī)器周期指令(4444條)條)和四機(jī)器周期指令(和四機(jī)器周期指令(2 2條)。條)。3. 3. 按功能分類按功能分類 數(shù)據(jù)傳送指令(數(shù)據(jù)傳送指令(2929條)、算術(shù)操作指令(條)、算術(shù)操作指令(2424條)、條)、邏輯操作指令(邏輯操作指令(2424條)、控制轉(zhuǎn)移指令(條)、控制轉(zhuǎn)移指令(1717條)和條)和位操作指令(位操作指令(1717條)。條)。 2.1.3 2.1.3 指令中的常用符號(hào)指令中的常用符號(hào) RnRn(n=0n=07 7):表示當(dāng)前工作寄存器:表示當(dāng)前工

14、作寄存器R0R0R7R7中的任一個(gè)寄存器。中的任一個(gè)寄存器。 R Ri i(i=0i=0或或1 1):表示通用寄存器組中用于間接尋址的兩個(gè)寄存器:表示通用寄存器組中用于間接尋址的兩個(gè)寄存器R0, R1R0, R1。 #data#data:表示:表示8 8位直接參與操作的立即數(shù)。位直接參與操作的立即數(shù)。 #data16#data16:表示:表示1616位直接參與操作的立即數(shù)。位直接參與操作的立即數(shù)。 directdirect:表示片內(nèi):表示片內(nèi)RAMRAM的的8 8位單元地址。位單元地址。 addr11addr11:表示:表示1111位目的地址,主要用于位目的地址,主要用于ACALLACALL和

15、和AJMPAJMP指令中。指令中。 addr16addr16:表示:表示1616位目的地址,主要用于位目的地址,主要用于LCALLLCALL和和LJMPLJMP指令中。指令中。 relrel:用補(bǔ)碼形式表示的:用補(bǔ)碼形式表示的8 8位二進(jìn)制地址偏移量,取值范圍為位二進(jìn)制地址偏移量,取值范圍為 128128+127+127,主要用于相對(duì)轉(zhuǎn)移指令,以形成轉(zhuǎn)移的目的地址。,主要用于相對(duì)轉(zhuǎn)移指令,以形成轉(zhuǎn)移的目的地址。 DPTRDPTR:數(shù)據(jù)指針,用于寄存器間接尋址方式和變址尋址方式。:數(shù)據(jù)指針,用于寄存器間接尋址方式和變址尋址方式。2.1.3 指令中的常用符號(hào) bitbit:表示片內(nèi):表示片內(nèi)RAM

16、RAM的位尋址區(qū),或者是可以位尋址的的位尋址區(qū),或者是可以位尋址的SFRSFR的位地址。的位地址。 A A(或(或ACCACC)、)、 B B :表示累加器、:表示累加器、 B B寄存器。寄存器。 C C:表示:表示PSWPSW中的進(jìn)位標(biāo)志位中的進(jìn)位標(biāo)志位C Cy y。 :在間接尋址方式中,表示間接尋址寄存器指針的前綴標(biāo)志。:在間接尋址方式中,表示間接尋址寄存器指針的前綴標(biāo)志。 $ $:表示當(dāng)前的指令地址。:表示當(dāng)前的指令地址。 / /:在位操作指令中,表示對(duì)該位先求反后再參與操作。:在位操作指令中,表示對(duì)該位先求反后再參與操作。 (X X):表示由:表示由X X所指定的某寄存器或某單元中的內(nèi)

17、容。所指定的某寄存器或某單元中的內(nèi)容。 (X)(X):表示由:表示由X X間接尋址單元中的內(nèi)容。間接尋址單元中的內(nèi)容。 :表示指令的操作結(jié)果是將箭頭右邊的內(nèi)容傳送到左邊。:表示指令的操作結(jié)果是將箭頭右邊的內(nèi)容傳送到左邊。 :表示指令的操作結(jié)果是將箭頭左邊的內(nèi)容傳送到右邊。:表示指令的操作結(jié)果是將箭頭左邊的內(nèi)容傳送到右邊。 、 、 :表示邏輯或、與、異:表示邏輯或、與、異或?;?。 尋址方式尋址方式:在計(jì)算機(jī)中,說(shuō)明操作數(shù)所在地址的方在計(jì)算機(jī)中,說(shuō)明操作數(shù)所在地址的方法稱為指令的尋址方式。法稱為指令的尋址方式。 計(jì)算機(jī)執(zhí)行程序?qū)嶋H上是在不斷尋找操作數(shù)并進(jìn)行計(jì)算機(jī)執(zhí)行程序?qū)嶋H上是在不斷尋找操作數(shù)并進(jìn)

18、行操作的過(guò)程。操作的過(guò)程。 每種計(jì)算機(jī)在設(shè)計(jì)時(shí)已決定了它具有哪些尋址方式,每種計(jì)算機(jī)在設(shè)計(jì)時(shí)已決定了它具有哪些尋址方式,尋址方式越多,計(jì)算機(jī)的靈活性越強(qiáng),指令系統(tǒng)也就尋址方式越多,計(jì)算機(jī)的靈活性越強(qiáng),指令系統(tǒng)也就越復(fù)雜。越復(fù)雜。 MCS-51MCS-51單片機(jī)的指令系統(tǒng)提供了單片機(jī)的指令系統(tǒng)提供了7 7種尋址方式,分種尋址方式,分別為立即尋址、直接尋址、寄存器尋址、寄存器間接別為立即尋址、直接尋址、寄存器尋址、寄存器間接尋址、變址尋址、相對(duì)尋址和位尋址。一條指令可能尋址、變址尋址、相對(duì)尋址和位尋址。一條指令可能含多種尋址方式。含多種尋址方式。2.2 MCS-512.2 MCS-51單片機(jī)的尋址

19、方式單片機(jī)的尋址方式 2.2.1 2.2.1 立即尋址立即尋址 定義:將立即參與操作的數(shù)據(jù)直接寫在指令中,這種將立即參與操作的數(shù)據(jù)直接寫在指令中,這種尋址方式稱為立即尋址。尋址方式稱為立即尋址。 特點(diǎn):指令中直接含有所需的操作數(shù)。該操作數(shù)可以指令中直接含有所需的操作數(shù)。該操作數(shù)可以是是8 8位的,也可以是位的,也可以是1616位的,常常處在指令的第二字位的,常常處在指令的第二字節(jié)和第三字節(jié)的位置上。立即數(shù)通常使用節(jié)和第三字節(jié)的位置上。立即數(shù)通常使用#data#data或或#data16#data16表示,在立即數(shù)前面加表示,在立即數(shù)前面加“#”#”標(biāo)志,用以和直標(biāo)志,用以和直接尋址中的直接地址

20、(接尋址中的直接地址(direcdirec或或bitbit)相區(qū)別。)相區(qū)別。 2.2 MCS-512.2 MCS-51單片機(jī)的尋址方式單片機(jī)的尋址方式 2.2.2 直接尋址 定義:將操作數(shù)的地址直接存放在指令中,這種尋址定義:將操作數(shù)的地址直接存放在指令中,這種尋址方式稱為直接尋址。方式稱為直接尋址。特點(diǎn):指令中含有操作數(shù)的地址。該地址指出了參與特點(diǎn):指令中含有操作數(shù)的地址。該地址指出了參與操作的數(shù)據(jù)所在的字節(jié)單元地址或位地址。計(jì)算機(jī)執(zhí)操作的數(shù)據(jù)所在的字節(jié)單元地址或位地址。計(jì)算機(jī)執(zhí)行它們時(shí)便可根據(jù)直接地址找到所需要的操作數(shù)。行它們時(shí)便可根據(jù)直接地址找到所需要的操作數(shù)。尋址范圍:尋址范圍:RO

21、MROM、片內(nèi)、片內(nèi)RAMRAM區(qū)、區(qū)、SFRSFR和位地址空間。和位地址空間。 2.2 MCS-512.2 MCS-51單片機(jī)的尋址方式單片機(jī)的尋址方式 2.2.3 寄存器尋址寄存器尋址定義:操作數(shù)存放在定義:操作數(shù)存放在MCS-51MCS-51內(nèi)部的某個(gè)工作寄存器內(nèi)部的某個(gè)工作寄存器RnRn(R0R0R7R7)或部分專用寄存器中,這種尋址方式稱為寄存器尋址。)或部分專用寄存器中,這種尋址方式稱為寄存器尋址。特點(diǎn):由指令指出某一個(gè)寄存器的內(nèi)容作為操作數(shù)。存放操特點(diǎn):由指令指出某一個(gè)寄存器的內(nèi)容作為操作數(shù)。存放操作數(shù)的寄存器在指令代碼中不占據(jù)單獨(dú)的一個(gè)字節(jié),而是嵌作數(shù)的寄存器在指令代碼中不占據(jù)

22、單獨(dú)的一個(gè)字節(jié),而是嵌入(隱含)到操作碼字節(jié)中。入(隱含)到操作碼字節(jié)中。尋址范圍:四組通用寄存器尋址范圍:四組通用寄存器RnRn(R0R0R7R7)、部分專用寄存器)、部分專用寄存器( A, B, DPTR, Cy A, B, DPTR, Cy )。)。2.2 MCS-512.2 MCS-51單片機(jī)的尋址方式單片機(jī)的尋址方式 2.2.4 寄存器間接尋址寄存器間接尋址定義:指令給出的寄存器中存放的是操作數(shù)據(jù)的單元地址。定義:指令給出的寄存器中存放的是操作數(shù)據(jù)的單元地址。這種尋址方式稱為寄存器間接尋址,簡(jiǎn)稱為寄存器間址。這種尋址方式稱為寄存器間接尋址,簡(jiǎn)稱為寄存器間址。特點(diǎn):指令給出的寄存器中存

23、放的是操作數(shù)地址。寄存器間特點(diǎn):指令給出的寄存器中存放的是操作數(shù)地址。寄存器間接尋址是一種二次尋找操作數(shù)地址的尋址方式,寄存器前邊接尋址是一種二次尋找操作數(shù)地址的尋址方式,寄存器前邊必須加前綴符號(hào)必須加前綴符號(hào)“ ”。不能用于尋址特殊功能寄存器。不能用于尋址特殊功能寄存器SFRSFR。 尋址范圍:內(nèi)部尋址范圍:內(nèi)部RAMRAM低低128B128B(只能使用(只能使用R0R0或或R1R1作間址寄作間址寄存器)、外部存器)、外部RAMRAM(只能使用(只能使用DPTRDPTR作間址寄存器)。對(duì)于外作間址寄存器)。對(duì)于外部低部低256256單元單元RAMRAM的訪問(wèn),除可以使用的訪問(wèn),除可以使用DP

24、TRDPTR外,還可以使用外,還可以使用R0R0或或R1R1作間址寄存器。作間址寄存器。2.2 MCS-512.2 MCS-51單片機(jī)的尋址方式單片機(jī)的尋址方式 2.2.5 2.2.5 變址尋址變址尋址 定義定義:操作數(shù)存放在變址寄存器(累加器操作數(shù)存放在變址寄存器(累加器A A)和基址寄存器)和基址寄存器(DPTRDPTR或或PCPC)相加形成的)相加形成的1616位地址單元中。這種尋址方式稱為位地址單元中。這種尋址方式稱為基址加變址寄存器間接尋址,簡(jiǎn)稱為變址基址加變址寄存器間接尋址,簡(jiǎn)稱為變址尋址。尋址。 特點(diǎn)特點(diǎn):指令操作碼中隱含作為基址寄存器用的:指令操作碼中隱含作為基址寄存器用的DP

25、TRDPTR(或(或PC PC )和)和作為變址用的累加器作為變址用的累加器A A。在執(zhí)行變址尋址指令時(shí),。在執(zhí)行變址尋址指令時(shí),MCS-51MCS-51單片機(jī)單片機(jī)先把基地址(先把基地址( DPTRDPTR或或PC PC 的內(nèi)容)和地址偏移量(的內(nèi)容)和地址偏移量(A A的內(nèi)容)相的內(nèi)容)相加,以形成操作數(shù)地址,再由操作數(shù)地址找到操作數(shù),并完成加,以形成操作數(shù)地址,再由操作數(shù)地址找到操作數(shù),并完成相應(yīng)的操作。變址尋址方式是單字節(jié)指令。相應(yīng)的操作。變址尋址方式是單字節(jié)指令。2.2 MCS-512.2 MCS-51單片機(jī)的尋址方式單片機(jī)的尋址方式 尋址范圍尋址范圍:只能對(duì)程序存儲(chǔ)器只能對(duì)程序存儲(chǔ)

26、器ROMROM進(jìn)行尋址,主要進(jìn)行尋址,主要用于查表性質(zhì)的訪問(wèn)。用于查表性質(zhì)的訪問(wèn)。 注意注意:累加器累加器A A中存放的操作數(shù)地址相對(duì)基地址的中存放的操作數(shù)地址相對(duì)基地址的偏移量的范圍為偏移量的范圍為00H00HFFHFFH(無(wú)符號(hào)數(shù))。(無(wú)符號(hào)數(shù))。MCS-51MCS-51單片單片機(jī)共有以下三條變址尋址指令:機(jī)共有以下三條變址尋址指令: MOVC A, A+PCMOVC A, A+PC ; ;(A A)(A A)+ +(PCPC)+1+1 MOVC A, A+DPTR ; MOVC A, A+DPTR ;(A A)(A A)+ +(DPTRDPTR) JMP A+DPTR ;JMP A+DP

27、TR ;(PCPC)(A A)+ +(DPTRDPTR) 2.2 MCS-512.2 MCS-51單片機(jī)的尋址方式單片機(jī)的尋址方式 2.2.6 相對(duì)尋址相對(duì)尋址定義定義:將程序計(jì)數(shù)器:將程序計(jì)數(shù)器PCPC的當(dāng)前值(取出本條指令后的的當(dāng)前值(取出本條指令后的PCPC值)與指值)與指令第二個(gè)字節(jié)給出的偏移量(令第二個(gè)字節(jié)給出的偏移量(relrel)相加,形成新的轉(zhuǎn)移目標(biāo)地址。)相加,形成新的轉(zhuǎn)移目標(biāo)地址。稱為相對(duì)尋址方式。稱為相對(duì)尋址方式。特點(diǎn)特點(diǎn):相對(duì)尋址方式是為實(shí)現(xiàn)程序的相對(duì)轉(zhuǎn)移而設(shè)計(jì)的,為相對(duì):相對(duì)尋址方式是為實(shí)現(xiàn)程序的相對(duì)轉(zhuǎn)移而設(shè)計(jì)的,為相對(duì)轉(zhuǎn)移指令所使用,其指令碼中含有相對(duì)地址偏移量,能

28、生成浮動(dòng)轉(zhuǎn)移指令所使用,其指令碼中含有相對(duì)地址偏移量,能生成浮動(dòng)代碼。代碼。如:如: SJMP rel ; ; (PCPC)(PCPC) + 2 + rel+ 2 + rel相對(duì)轉(zhuǎn)移指令的目的地址指令地址指令字節(jié)數(shù)偏移量相對(duì)轉(zhuǎn)移指令的目的地址指令地址指令字節(jié)數(shù)偏移量尋址范圍尋址范圍:只能對(duì)程序存儲(chǔ)器:只能對(duì)程序存儲(chǔ)器ROMROM進(jìn)行尋址。相對(duì)地址偏移量進(jìn)行尋址。相對(duì)地址偏移量(relrel)是一個(gè)帶符號(hào)的)是一個(gè)帶符號(hào)的8 8位二進(jìn)制補(bǔ)碼,其取值范圍為位二進(jìn)制補(bǔ)碼,其取值范圍為 128128127127(以(以PCPC為中間的為中間的256256個(gè)字節(jié)范圍)。個(gè)字節(jié)范圍)。 2.2 MCS-5

29、12.2 MCS-51單片機(jī)的尋址方式單片機(jī)的尋址方式 2.2.7 位尋址位尋址定義定義:指令中給出的操作數(shù)是一個(gè)可單獨(dú)尋址的位地址,:指令中給出的操作數(shù)是一個(gè)可單獨(dú)尋址的位地址,這種尋址方式稱為位尋址方式。這種尋址方式稱為位尋址方式。特點(diǎn)特點(diǎn):位尋址是直接尋址方式的一種,其特點(diǎn)是對(duì):位尋址是直接尋址方式的一種,其特點(diǎn)是對(duì)8 8位位二進(jìn)制數(shù)中的某一位的地址進(jìn)行操作。二進(jìn)制數(shù)中的某一位的地址進(jìn)行操作。尋址范圍尋址范圍:片內(nèi):片內(nèi)RAMRAM低低128B128B中位尋址區(qū)、部分中位尋址區(qū)、部分SFRSFR(其中(其中有有8383位可以位尋址)。位可以位尋址)??晌粚ぶ返奈坏刂返谋硎拘问饺缦拢嚎晌粚?/p>

30、址的位地址的表示形式如下:(1 1)直接使用位地址形式。如:)直接使用位地址形式。如: MOV 00H, C ;MOV 00H, C ;(00H00H)(C Cy y) 其中:其中:00H00H是片內(nèi)是片內(nèi)RAMRAM中中20H20H地址單元的第地址單元的第0 0位。位。2.2 MCS-512.2 MCS-51單片機(jī)的尋址方式單片機(jī)的尋址方式 (2 2)字節(jié)地址加位序號(hào)的形式。如:)字節(jié)地址加位序號(hào)的形式。如: MOV 20H.0, C ; ; (20H.020H.0)(C Cy y) 其中:其中:20H.020H.0是片內(nèi)是片內(nèi)RAMRAM中中20H20H地址單元的第地址單元的第0 0位。位

31、。(3 3)位的符號(hào)地址(位名稱)的形式。對(duì)于部分特殊)位的符號(hào)地址(位名稱)的形式。對(duì)于部分特殊功能寄存器,其各位均有一個(gè)特定的名字,所以可以用功能寄存器,其各位均有一個(gè)特定的名字,所以可以用它們的位名稱來(lái)訪問(wèn)該位。如:它們的位名稱來(lái)訪問(wèn)該位。如: ANL C, P ; ; (C C) (C C)(P P) 其中:其中:P P是是PSWPSW的第的第0 0位,位,C C是是PSWPSW的第的第7 7位。位。 (4 4)字節(jié)符號(hào)地址(字節(jié)名稱)加位序號(hào)的形式。對(duì))字節(jié)符號(hào)地址(字節(jié)名稱)加位序號(hào)的形式。對(duì)于部分特殊功能寄存器(如狀態(tài)標(biāo)志寄存器于部分特殊功能寄存器(如狀態(tài)標(biāo)志寄存器PSWPSW)

32、,還),還可以用其字節(jié)名稱加位序號(hào)形式來(lái)訪問(wèn)某一位。如:可以用其字節(jié)名稱加位序號(hào)形式來(lái)訪問(wèn)某一位。如: CPL PSW.6 ; ; (ACAC) ( ) 其中:其中: PSW.6PSW.6表示該位是表示該位是PSWPSW的第的第6 6位。位。AC 2.2 MCS-512.2 MCS-51單片機(jī)的尋址方式單片機(jī)的尋址方式 例題例題1 指出下列指令的尋址方式指出下列指令的尋址方式 MOV A,R1 ;(A)(R1) 寄存器尋址寄存器尋址 ADD A,#05H ; (A)(A)+立即數(shù)立即數(shù) 05H 立即尋址立即尋址 MOV A,R1 ; (A) (R1) 寄存器間接尋址寄存器間接尋址 MOV 30

33、H,4AH ;( 30H )(4AH) 直接尋址直接尋址 MOVC A,A+DPTR ;(A)(A)+(DPTR) 變址尋址變址尋址 SJMP LP ; (PC)(PC)+ 2 + 偏移量偏移量 相對(duì)尋址相對(duì)尋址 MOV 65H, C ;(65H)(Cy) 位尋址位尋址2.3 MCS-512.3 MCS-51單片機(jī)的指令系統(tǒng)單片機(jī)的指令系統(tǒng) MCS-51MCS-51指令系統(tǒng)使用指令系統(tǒng)使用4444種助記符,它們代表著種助記符,它們代表著3333種功能,可以實(shí)現(xiàn)種功能,可以實(shí)現(xiàn)5151種操作。指令助記符與操作數(shù)種操作。指令助記符與操作數(shù)的各種可能的尋址方式的結(jié)合一共可構(gòu)造出的各種可能的尋址方式的

34、結(jié)合一共可構(gòu)造出111111條指條指令。令。 MCS-51MCS-51單片機(jī)指令系統(tǒng)按其功能可分為單片機(jī)指令系統(tǒng)按其功能可分為數(shù)據(jù)傳送類指令、算術(shù)運(yùn)算類指令、邏輯運(yùn)算和移位數(shù)據(jù)傳送類指令、算術(shù)運(yùn)算類指令、邏輯運(yùn)算和移位類指令、控制轉(zhuǎn)移類指令和位操作類指令五大類。類指令、控制轉(zhuǎn)移類指令和位操作類指令五大類。學(xué)習(xí)指令系統(tǒng)時(shí),應(yīng)注意:學(xué)習(xí)指令系統(tǒng)時(shí),應(yīng)注意:(1 1)指令的格式、功能)指令的格式、功能 。(2 2)操作碼的含義,操作數(shù)的表示方法。)操作碼的含義,操作數(shù)的表示方法。(3 3)尋址方式,源、目的操作數(shù)的范圍。)尋址方式,源、目的操作數(shù)的范圍。(4 4)對(duì)標(biāo)志位的影響。)對(duì)標(biāo)志位的影響。(

35、5 5)指令的適用范圍。)指令的適用范圍。(6 6)正確估算指令的字節(jié)數(shù)。)正確估算指令的字節(jié)數(shù)。 一般地一般地: : 操作碼占操作碼占1 1字節(jié);操作數(shù)中,直接地址字節(jié);操作數(shù)中,直接地址derictderict占占1 1字節(jié),字節(jié),#data#data占占1 1字節(jié),字節(jié),#data16#data16占兩字節(jié);操占兩字節(jié);操作數(shù)中的作數(shù)中的A A、B B、R0R0R7R7、 R Ri i、DPTRDPTR、 A+ DPTR A+ DPTR、 A+ PC A+ PC等均隱含在操作碼中。等均隱含在操作碼中。2.2 MCS-512.2 MCS-51單片機(jī)的尋址方式單片機(jī)的尋址方式 2.3.1 2

36、.3.1 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令 CPUCPU在進(jìn)行算術(shù)和邏輯操作時(shí),絕大多數(shù)指令都有操作數(shù),所在進(jìn)行算術(shù)和邏輯操作時(shí),絕大多數(shù)指令都有操作數(shù),所以數(shù)據(jù)傳送是一種最基本、最主要的操作。以數(shù)據(jù)傳送是一種最基本、最主要的操作。 數(shù)據(jù)傳送指令共數(shù)據(jù)傳送指令共2929條,可分為內(nèi)部條,可分為內(nèi)部RAMRAM數(shù)據(jù)傳送、外部數(shù)據(jù)傳送、外部RAMRAM數(shù)據(jù)傳送、程序存儲(chǔ)器數(shù)據(jù)傳送、數(shù)據(jù)交換和堆棧操作等五數(shù)據(jù)傳送、程序存儲(chǔ)器數(shù)據(jù)傳送、數(shù)據(jù)交換和堆棧操作等五類。類。 尋址范圍尋址范圍:累加器累加器A A、片內(nèi)、片內(nèi)RAMRAM、SFRSFR、片外、片外RAMRAM。 功能功能:(目的地址)(目的地址)(源地址

37、)。(源地址)。 可表示為可表示為: : 源地址單元的內(nèi)容不變。源地址單元的內(nèi)容不變。 對(duì)標(biāo)志位的影響對(duì)標(biāo)志位的影響:除以累加器除以累加器A A為目的操作數(shù)的數(shù)據(jù)傳送指令為目的操作數(shù)的數(shù)據(jù)傳送指令對(duì)對(duì)P P標(biāo)志位有影響外,其余均不影響標(biāo)志位。標(biāo)志位有影響外,其余均不影響標(biāo)志位。 1內(nèi)部RAM數(shù)據(jù)傳送指令(16條) 格式:格式: MOV , MOV , 其中:其中: 表示目的操作數(shù),表示目的操作數(shù), 表示源操作表示源操作數(shù)。數(shù)。范圍:范圍:源、目的操作數(shù)均在片內(nèi)源、目的操作數(shù)均在片內(nèi)RAMRAM、SFRSFR中。中。指令形式:指令形式:按目的操作數(shù)可將內(nèi)部數(shù)據(jù)傳送指令分為以下幾類。按目的操作數(shù)可

38、將內(nèi)部數(shù)據(jù)傳送指令分為以下幾類。(1 1)以累加器)以累加器A A為目的操作數(shù)(為目的操作數(shù)(4 4條)條) MOV A , MOV A , 其中:其中: 包括包括RnRn、RRi i、directdirect、#data#data。(各。(各個(gè)符號(hào)的意義見(jiàn)個(gè)符號(hào)的意義見(jiàn)2.1.32.1.3節(jié)指令中的常用符號(hào)節(jié)指令中的常用符號(hào) ,以下同),以下同) 只影響只影響PSWPSW中的中的P P標(biāo)志位,不影響其他標(biāo)志位。標(biāo)志位,不影響其他標(biāo)志位。 (2 2)以工作寄存器)以工作寄存器RnRn為目的操作數(shù)(為目的操作數(shù)(3 3條)條) MOV RnMOV Rn , , 其中:其中: 包括包括A A、di

39、rectdirect、#data #data 。(3 3)以直接地址單元為目的操作數(shù)()以直接地址單元為目的操作數(shù)(5 5條)條) MOV direct , 其中:其中: 包括包括A、Rn、Ri、direct 、#data 。(4 4)以間址寄存器)以間址寄存器RiRi為目的操作數(shù)(為目的操作數(shù)(3 3條)條) MOV Ri , 其中:其中: 包括包括A、direct 、#data 。(5 5)1616位數(shù)據(jù)傳送指令(位數(shù)據(jù)傳送指令(1 1條)條) MOV DPTR , #data16注:注:(2)、()、(3)、)、(4)、()、(5)均不影響)均不影響標(biāo)志位。標(biāo)志位。 內(nèi)部數(shù)據(jù)傳送指令內(nèi)部

40、數(shù)據(jù)傳送指令的傳送關(guān)系如右圖所示。的傳送關(guān)系如右圖所示。2 2外部外部RAMRAM數(shù)據(jù)傳送指令(數(shù)據(jù)傳送指令(4 4條)條) CPUCPU與外部數(shù)據(jù)存儲(chǔ)器之間進(jìn)行數(shù)據(jù)傳送時(shí),必須使用與外部數(shù)據(jù)存儲(chǔ)器之間進(jìn)行數(shù)據(jù)傳送時(shí),必須使用外部傳送指令,只能通過(guò)累加器外部傳送指令,只能通過(guò)累加器A A,采用寄存器間接尋址(用,采用寄存器間接尋址(用R0, R0, R1R1和和DPTRDPTR三個(gè)間接尋址的寄存器)方式完成。三個(gè)間接尋址的寄存器)方式完成。 指令格式指令格式: MOVX A , MOVX A , MOVX , AMOVX , A 其中其中: 、 包括包括DPTRDPTR、RRi i。R Ri

41、i(R0, R1R0, R1)只能訪問(wèn)片外只能訪問(wèn)片外RAMRAM的低的低256256個(gè)單元;個(gè)單元;DPTRDPTR可以訪問(wèn)片外可以訪問(wèn)片外RAMRAM的全部的全部64KB64KB的空間。的空間。 對(duì)標(biāo)志位的影響對(duì)標(biāo)志位的影響: MOVX A , MOVX A , 指令只影響指令只影響PSWPSW中的中的P P標(biāo)標(biāo)志位,不影響其他標(biāo)志位;志位,不影響其他標(biāo)志位; MOVX , AMOVX , A指令不影響標(biāo)志指令不影響標(biāo)志位。位。3 3程序存儲(chǔ)器(程序存儲(chǔ)器(ROMROM)數(shù)據(jù)傳送指令(查表指令)()數(shù)據(jù)傳送指令(查表指令)(2 2條)條) 程序存儲(chǔ)器的數(shù)據(jù)傳送是單向的,并且只能讀到累加器程

42、序存儲(chǔ)器的數(shù)據(jù)傳送是單向的,并且只能讀到累加器A A中。中。這類指令專門用于查表,又稱為查表指令。這類指令專門用于查表,又稱為查表指令。 指令格式:MOVC A , A+DPTPMOVC A , A+DPTP ; ;(A A)(A A)+ +(DPTRDPTR) MOVC A , A+PCMOVC A , A+PC ; ;(PCPC)(PCPC)+1 +1 (A A)(A A)+ +(PCPC) 兩條指令的異同:其功能完全相同,但使用中存在著差異。其功能完全相同,但使用中存在著差異。 (1 1)查表的位置要求不同)查表的位置要求不同 采用采用DPTRDPTR作為基地址寄存器,表可以放在作為基地

43、址寄存器,表可以放在64KB64KB程序存儲(chǔ)器空程序存儲(chǔ)器空間的任何地址,使用方便,故稱為遠(yuǎn)程查表。間的任何地址,使用方便,故稱為遠(yuǎn)程查表。 采用采用PCPC作為基地址寄存器,具體的表在程序存儲(chǔ)器中只能在作為基地址寄存器,具體的表在程序存儲(chǔ)器中只能在查表指令后的查表指令后的256B256B的地址空間中,使用有限制,故稱為近程查的地址空間中,使用有限制,故稱為近程查表。表。 (2 2)偏移量的計(jì)算方法不同)偏移量的計(jì)算方法不同 采用采用DPTRDPTR作為基地址寄存器,查表地址為(作為基地址寄存器,查表地址為(A A)+ +(DPTRDPTR)。采用)。采用PCPC作為基地址寄存器,查表地址為(

44、作為基地址寄存器,查表地址為(A A)+ +(PCPC)+1+1。因此偏移量的計(jì)算方法不同。因此偏移量的計(jì)算方法不同。 采用采用DPTRDPTR作為基地址寄存器,作為基地址寄存器,A A為欲查數(shù)值距離為欲查數(shù)值距離表首地址的值;采用表首地址的值;采用PCPC作為基地址寄存器,作為基地址寄存器, A A的值必的值必須預(yù)先設(shè)置為:須預(yù)先設(shè)置為: A A的值的值= =表首地址當(dāng)前指令的表首地址當(dāng)前指令的PCPC值值1 1 數(shù)據(jù)傳輸時(shí),若需要保存目的操作數(shù),則經(jīng)常采數(shù)據(jù)傳輸時(shí),若需要保存目的操作數(shù),則經(jīng)常采用數(shù)據(jù)交換指令。用數(shù)據(jù)交換指令。(1 1)半字節(jié)數(shù)據(jù)交換指令()半字節(jié)數(shù)據(jù)交換指令(2 2條)條

45、) 指令格式: SWAP ASWAP A ; ;(A A)3 30 0(A A)7 74 4 XCHD A , RiXCHD A , Ri ; ;(A A)3 30 0((Ri)(Ri))3 30 0 (2 2)字節(jié)交換指令()字節(jié)交換指令(3 3條)條) 指令格式:指令格式:XCH A , XCH A , 其中:其中: 包括包括RnRn、RiRi、direct direct 。4 4數(shù)據(jù)交換指令(數(shù)據(jù)交換指令(5 5條)條)指令格式:指令格式: PUSH direct ; SP(SP)+1 , (SP)(direct) POP derect ;(direct)(SP) , SP(SP)1特點(diǎn)

46、:特點(diǎn):堆棧操作指令是一種特殊的數(shù)據(jù)傳送指令,是根據(jù)棧指針SP中的棧頂?shù)刂愤M(jìn)行數(shù)據(jù)操作。堆棧操作指令的實(shí)質(zhì)是以棧指針SP為間址寄存器的間址尋址方式。堆棧區(qū)應(yīng)避開使用的工作寄存器區(qū)和其他需要使用的數(shù)據(jù)區(qū),系統(tǒng)復(fù)位后,SP的初始值為07H。為了避免重疊,一般初始化時(shí)要重新設(shè)置SP。 5 5堆棧操作指令(堆棧操作指令(2 2條)條) 功能:功能:實(shí)現(xiàn)RAM單元數(shù)據(jù)送入棧頂或由棧頂取出數(shù)據(jù)送至RAM單元。適用場(chǎng)合:適用場(chǎng)合:用于執(zhí)行中斷、子程序調(diào)用、參數(shù)傳遞等程序的斷點(diǎn)保護(hù)和現(xiàn)場(chǎng)保護(hù)。書寫方式:書寫方式:堆棧操作指令是直接尋址指令,直接地址不能是寄存器名,因此應(yīng)注意指令的書寫格式。例如: PUSH A

47、CC(不能寫成PUSH A) POP 00H (不能寫成POP R0)2.3.2 2.3.2 算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令 算術(shù)運(yùn)算指令的兩個(gè)參與運(yùn)算的操作數(shù),一個(gè)存放在累加器A中(此操作數(shù)也為目的操作數(shù));一個(gè)存放在R0R7或Ri(片內(nèi)RAM)中,或是#data(立即數(shù))。 算術(shù)運(yùn)算指令可以分為加法指令、帶進(jìn)位的加法指令、帶借位的減法指令、十進(jìn)制調(diào)整指令、加1指令、減1指令、乘除指令。 1. 1. 加法指令(加法指令(4 4條)條) 指令格式:指令格式: ADD A ,ADD A , ; (A)(A)+ 其中:其中: 包括Rn、Ri、direct、#data。對(duì)標(biāo)志位的影響:對(duì)標(biāo)志位的影響:AD

48、D對(duì)PSW中的所有標(biāo)志位均產(chǎn)生影響。 2. 2. 帶進(jìn)位的加法指令(帶進(jìn)位的加法指令(4 4條)條) 指令格式:指令格式: ADDC A ,ADDC A , ; (A)(A)+ + (Cy) 其中:其中: 包括Rn、Ri、direct、#data。對(duì)標(biāo)志位的影響:對(duì)標(biāo)志位的影響:ADDC對(duì)PSW中的所有標(biāo)志位均產(chǎn)生影響。 3. 3. 帶借位的減法指令(帶借位的減法指令(4 4條)條) 指令格式:指令格式: SUBB A ,SUBB A , ; (A)(A) (Cy) 其中:其中: 包括Rn、Ri、direct、#data。對(duì)標(biāo)志位的影響:對(duì)標(biāo)志位的影響:SUBB對(duì)PSW中的所有標(biāo)志位均產(chǎn)生影響

49、。 注意:注意:MCS-51指令系統(tǒng)中沒(méi)有不帶借位的減法指令,欲實(shí)現(xiàn)不帶借位的減法計(jì)算,應(yīng)預(yù)先置Cy=0(利用CLR C指令),然后利用帶借位的減法指令SUBB實(shí)現(xiàn)計(jì)算。 4. 4. 十進(jìn)制調(diào)整指令(十進(jìn)制調(diào)整指令(1 1條)條) 功能功能:跟在加法指令A(yù)DD或ADDC后面,對(duì)運(yùn)算結(jié)果的十進(jìn)制數(shù)進(jìn)行BCD碼修正,使它調(diào)整為壓縮的BCD碼數(shù),以完成十進(jìn)制加法運(yùn)算功能。 特點(diǎn)特點(diǎn):十進(jìn)制調(diào)整指令也稱為BCD碼修正指令,這是一條專用指令。兩個(gè)壓縮的BCD碼按二進(jìn)制數(shù)相加后必須經(jīng)本指令調(diào)整才能得到壓縮的BCD碼的和。源操作數(shù)只能在累加器A中,結(jié)果存入A中。 指令格式:DA A 注意注意:十進(jìn)制調(diào)整指令

50、不能對(duì)減法指令進(jìn)行修正。BCD碼減法必須采用BCD補(bǔ)碼運(yùn)算法則,變減法為補(bǔ)碼加法(被減數(shù)+減數(shù)的補(bǔ)碼,減數(shù)的補(bǔ)碼=9AH減數(shù))。然后對(duì)其進(jìn)行十進(jìn)制調(diào)整來(lái)實(shí)現(xiàn)。 5. 5. 加加1 1指令(指令(5 5條)條) 功能功能:加1指令又稱為增量指令,其功能是使操作數(shù)所指 定的單元的內(nèi)容加1 。指令格式指令格式:INC INC ; + 1 其中: 即是源操作數(shù)又是目的操作數(shù)(即只有一個(gè)操作數(shù)),包括 A、Rn、direct、Ri、 DPTR 。對(duì)標(biāo)志位的影響對(duì)標(biāo)志位的影響:除對(duì)累加器A操作影響P標(biāo)志位外,其他操作均不影響PSW的各標(biāo)志位。 6. 6. 減減1 1指令(指令(4 4條)條) 功能功能:減

51、1指令又稱為減量指令,其功能是使操作數(shù)所指定的單元的內(nèi)容減1 。指令格式指令格式:DEC DEC ; 1其中其中: 即是源操作數(shù)又是目的操作數(shù)(即只有一個(gè)操作數(shù)),包括 A、Rn、direct、Ri。對(duì)標(biāo)志位的影響對(duì)標(biāo)志位的影響:同加1指令。7. 7. 乘除指令(乘除指令(2 2條)條) 功能功能:實(shí)現(xiàn)乘法或除法操作。特點(diǎn)特點(diǎn):乘除指令在MCS-51指令系統(tǒng)中執(zhí)行時(shí)間最長(zhǎng),均為四周期指令。指令格式指令格式: MUL ABMUL AB ;(B)(A)(A)(B) DIV ABDIV AB ; (A)(A)/(B)(B)對(duì)標(biāo)志位的影響對(duì)標(biāo)志位的影響:乘除指令影響PSW中的Cy, OV, P標(biāo)志位。

52、其中,Cy位總是被清0的,P是由累加器A中1的個(gè)數(shù)的奇偶性決定的。乘法運(yùn)算中,若乘積大于FFH,則OV標(biāo)志位置1,否則清0。除法運(yùn)算中,若除數(shù)為0,則OV標(biāo)志位置1,否則清0。 2.3.3 2.3.3 邏輯運(yùn)算和移位指令邏輯運(yùn)算和移位指令 對(duì)標(biāo)志位的影響對(duì)標(biāo)志位的影響:邏輯運(yùn)算和移位指令中除了兩條帶進(jìn)位的循環(huán)移位指令外,其余均不影響PSW中的各標(biāo)志位。但當(dāng)目的操作數(shù)是累加器A時(shí),影響PSW中的奇偶校驗(yàn)位P。 常用的邏輯運(yùn)算和移位類指令有常用的邏輯運(yùn)算和移位類指令有:邏輯與、邏輯或、邏輯異或、循環(huán)移位、清0、求反(非)等24條指令,它們的操作數(shù)都是8位的。邏輯運(yùn)算都是按位進(jìn)行的,除用于邏輯運(yùn)算外

53、,還可用于模擬各種數(shù)字邏輯電路的功能,進(jìn)行邏輯電路的設(shè)計(jì)。1 1邏輯與運(yùn)算指令(邏輯與運(yùn)算指令(6 6條)條) 功能功能:實(shí)現(xiàn)兩個(gè)操作數(shù)的邏輯與。指令格式指令格式:ANL A , ANL A , 其中其中: 包括Rn、Ri、direct、#data。 ANL direst , ANL direst , 其中其中: 包括A、#data。適用場(chǎng)合適用場(chǎng)合:實(shí)現(xiàn)邏輯與,主要用于操作數(shù)的某些位不變(這些位與“1”),某些位置0(這些位與“0”)。 功能功能:實(shí)現(xiàn)兩個(gè)操作數(shù)的邏輯或。指令格式指令格式:ORL A , ORL A , 其中其中: 包括Rn、Ri、direct、#data。 ORL dire

54、st , ORL direst , 其中其中: 包括A、#data。適用場(chǎng)合適用場(chǎng)合:實(shí)現(xiàn)邏輯或,主要用于操作數(shù)的某些位不變(這些位或“0”),某些位置1(這些位或“1”)。2 2邏輯或運(yùn)算指令(邏輯或運(yùn)算指令(6 6條)條)功功 能能:實(shí)現(xiàn)兩個(gè)操作數(shù)的邏輯異或。指令格式指令格式:XRL A , XRL A , 其中其中: 包括Rn、Ri、direct、#data。 XRL direst , XRL direst , 其中其中: 包括A、#data。適用場(chǎng)合適用場(chǎng)合:實(shí)現(xiàn)邏輯異或,主要用于操作數(shù)的某些位不變(這些位異或“0”),某些位取反(這些位異或“1”)。3 3邏輯異或運(yùn)算指令(邏輯異或運(yùn)

55、算指令(6 6條)條) MCS-51單片機(jī)的循環(huán)移位指令共有不帶進(jìn)位的循環(huán)左、右移位(操作碼為RL, RR)和帶進(jìn)位的循環(huán)左、右移位(操作碼為RLC, RRC)指令4條。特點(diǎn)特點(diǎn):只能對(duì)累加器A進(jìn)行循環(huán)移位。指令格式指令格式: 操作碼 A功能功能:累加器A中的數(shù)據(jù)逐位左移一位相當(dāng)于原內(nèi)容乘2,而逐位右移一位相當(dāng)于原內(nèi)容除以2。循環(huán)移位指令示意圖如下頁(yè)圖所示。4 4循環(huán)移位指令(循環(huán)移位指令(4 4條)條)A4 4循環(huán)移位指令(循環(huán)移位指令(4 4條)條)指令格式指令格式: CLR ACLR A ;(A)00H CPL ACPL A ;(A)( )特特 點(diǎn)點(diǎn):可以節(jié)省存儲(chǔ)空間,提高程序執(zhí)行效率。

56、 對(duì)標(biāo)志位的影響對(duì)標(biāo)志位的影響:CLR A指令只影響PSW的P標(biāo)志位,CPL A指令不影響PSW各標(biāo)志位。 5 5累加器清累加器清0 0與取反指令(與取反指令(2 2條)條) A2.3.4 2.3.4 控制轉(zhuǎn)移指令控制轉(zhuǎn)移指令 功能功能: 改變程序計(jì)數(shù)器PC中的內(nèi)容,控制程序執(zhí)行的流向,實(shí)現(xiàn)程序分支轉(zhuǎn)向。 為了控制程序的執(zhí)行方向,MCS-51單片機(jī)提供了17條控制轉(zhuǎn)移指令。對(duì)標(biāo)志位的影響對(duì)標(biāo)志位的影響: 除了CJNE影響PSW的進(jìn)位標(biāo)志位Cy外,其余均不影響PSW的各標(biāo)志位。 1 1無(wú)條件轉(zhuǎn)移指令(無(wú)條件轉(zhuǎn)移指令(4 4條)條) 定義定義:不規(guī)定條件的程序轉(zhuǎn)移稱為無(wú)條件轉(zhuǎn)移指令。 指令格式指令

57、格式:長(zhǎng)轉(zhuǎn)移指令: LJMP addr16 LJMP addr16 ; ; (PCPC)addr15addr150 0絕對(duì)轉(zhuǎn)移指令: AJMP addr11AJMP addr11 ;(PCPC)(PCPC)+2+2, PC 10PC 100addr110addr11相對(duì)(短)轉(zhuǎn)移指令:SJMP relSJMP rel ; ;(PCPC)(PCPC)+2+rel+2+rel間接(散)轉(zhuǎn)移指令:JMP A+DPTRJMP A+DPTR ; ;(PCPC) (DPTRDPTR)+ +(A A)注意:注意:(1 1)使用轉(zhuǎn)移指令時(shí),指令中的地址或偏移量均可采用標(biāo)號(hào),)使用轉(zhuǎn)移指令時(shí),指令中的地址或偏移

58、量均可采用標(biāo)號(hào),只有在執(zhí)行前才被匯編成實(shí)際的二進(jìn)制地址。只有在執(zhí)行前才被匯編成實(shí)際的二進(jìn)制地址。(2 2)指令的轉(zhuǎn)移范圍:在執(zhí)行當(dāng)前轉(zhuǎn)移指令后的)指令的轉(zhuǎn)移范圍:在執(zhí)行當(dāng)前轉(zhuǎn)移指令后的PCPC值的基礎(chǔ)上值的基礎(chǔ)上: : 長(zhǎng)轉(zhuǎn)移指令長(zhǎng)轉(zhuǎn)移指令LJMPLJMP: 64KB64KB 絕對(duì)轉(zhuǎn)移指令絕對(duì)轉(zhuǎn)移指令A(yù)JMP AJMP :2KB2KB 相對(duì)(短)轉(zhuǎn)移指令相對(duì)(短)轉(zhuǎn)移指令SJMP SJMP : 128128+127+127(用補(bǔ)碼表示)(用補(bǔ)碼表示) 間接(散)轉(zhuǎn)移指令間接(散)轉(zhuǎn)移指令JMPJMP: 64KB64KB(3 3)相對(duì)(短)轉(zhuǎn)移指令)相對(duì)(短)轉(zhuǎn)移指令SJMP rel SJMP

59、rel 中地址偏移量的計(jì)算:中地址偏移量的計(jì)算: rel = rel = 轉(zhuǎn)移目標(biāo)地址轉(zhuǎn)移指令地址轉(zhuǎn)移目標(biāo)地址轉(zhuǎn)移指令地址( (當(dāng)前當(dāng)前PCPC值值) ) 2 2 1 1無(wú)條件轉(zhuǎn)移指令(無(wú)條件轉(zhuǎn)移指令(4 4條)條) (4 4)原地踏步(暫停當(dāng)前的程序,并不是真的停機(jī))的實(shí)現(xiàn))原地踏步(暫停當(dāng)前的程序,并不是真的停機(jī))的實(shí)現(xiàn) SJMP $SJMP $ 或或 HERE: SJMP HEREHERE: SJMP HERE (5 5)間接(散)轉(zhuǎn)移指令:)間接(散)轉(zhuǎn)移指令:JMP A+DPTR JMP A+DPTR 常用于實(shí)現(xiàn)程序的常用于實(shí)現(xiàn)程序的分支轉(zhuǎn)移(散轉(zhuǎn))。分支轉(zhuǎn)移(散轉(zhuǎn))。 DPTRDP

60、TR為轉(zhuǎn)移目的的起始地址,為轉(zhuǎn)移目的的起始地址,A A為轉(zhuǎn)移為轉(zhuǎn)移目的的偏移量。目的的偏移量。(6 6)在編程中,經(jīng)常使用短轉(zhuǎn)移指令)在編程中,經(jīng)常使用短轉(zhuǎn)移指令SJMPSJMP和相對(duì)轉(zhuǎn)移指令和相對(duì)轉(zhuǎn)移指令A(yù)JMPAJMP,以便生成浮動(dòng)代碼,并不經(jīng)常使用長(zhǎng)轉(zhuǎn)移指令以便生成浮動(dòng)代碼,并不經(jīng)常使用長(zhǎng)轉(zhuǎn)移指令LJMPLJMP。 1 1無(wú)條件轉(zhuǎn)移指令(無(wú)條件轉(zhuǎn)移指令(4 4條)條) 功能功能:在規(guī)定的條件滿足時(shí)進(jìn)行程序轉(zhuǎn)移,否則程序往下順序執(zhí)行。MCS-51單片機(jī)中,條件轉(zhuǎn)移指令實(shí)質(zhì)上是累加器A判零指令。指令格式指令格式: JZ relJZ rel ; 若(A)=0,則轉(zhuǎn)移 (PC) (PC)+2+r

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論