MCS-51單片機指令系統(tǒng)_第1頁
MCS-51單片機指令系統(tǒng)_第2頁
MCS-51單片機指令系統(tǒng)_第3頁
MCS-51單片機指令系統(tǒng)_第4頁
MCS-51單片機指令系統(tǒng)_第5頁
已閱讀5頁,還剩125頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1微型計算機原理及接口技術(shù)微型計算機原理及接口技術(shù)2第三章第三章 MCS-51單片機指令系統(tǒng)單片機指令系統(tǒng) 12345633.1 3.1 指令系統(tǒng)概述指令系統(tǒng)概述2學習內(nèi)容學習內(nèi)容1指令概述指令概述尋址方式尋址方式4是指示單片機完成特定操作的命令。是指示單片機完成特定操作的命令。 是單片機能夠執(zhí)行的全部命令的集合。是單片機能夠執(zhí)行的全部命令的集合。用助記符、符號地址、標號等表示用助記符、符號地址、標號等表示的書寫程序的語言。的書寫程序的語言。一、指令概述一、指令概述 5 標號由標號由16個字符數(shù)字串組成,第一個必須是個字符數(shù)字串組成,第一個必須是; 不一定每句都有標號,標號不產(chǎn)生不一定每句都有

2、標號,標號不產(chǎn)生; 匯編語言中已經(jīng)有確切定義的符號不能作為標號;匯編語言中已經(jīng)有確切定義的符號不能作為標號; 同一標號在一個程序中只能定義一次;同一標號在一個程序中只能定義一次; 標號后面必須跟冒號。標號后面必須跟冒號。給該條語句起個給該條語句起個,以便在其它語句中,以便在其它語句中尋找該條語句,它代表該條語句所在的尋找該條語句,它代表該條語句所在的。6 操作數(shù)可以是操作數(shù)可以是或其或其; 十六進制數(shù)以十六進制數(shù)以AF打頭的數(shù)前面要加打頭的數(shù)前面要加0,以區(qū)別于標號。,以區(qū)別于標號。規(guī)定指令進行規(guī)定指令進行何種操作何種操作,是指令,是指令中中不能空缺不能空缺的部分,一般采用具有相關(guān)含義的英語的

3、部分,一般采用具有相關(guān)含義的英語單詞或縮寫表示。單詞或縮寫表示。說明被操作的數(shù)的說明被操作的數(shù)的源源及及目的目的。 注釋:注釋:為便于閱讀理解程序,對語句所作的解釋為便于閱讀理解程序,對語句所作的解釋說明,說明,用分號開始表示注釋。,用分號開始表示注釋。7符號符號含義含義Rn當前當前R0-R7RiR0 R1(i=0,1)direct8位直接地址(內(nèi)部位直接地址(內(nèi)部RAM的低的低128個單元的地址)個單元的地址)或指或指SFR#data8/168位常數(shù)(立即數(shù))位常數(shù)(立即數(shù))16位常數(shù)(立即數(shù))位常數(shù)(立即數(shù))Addr11/1611位目的地址位目的地址,16位目的地址位目的地址rel轉(zhuǎn)移指令

4、轉(zhuǎn)移指令8位偏移量位偏移量(補碼)補碼) -128 +127bit位地址位地址/對該位內(nèi)容取反對該位內(nèi)容取反間接尋址符號(前綴)間接尋址符號(前綴)(x)X存儲單元中的內(nèi)容存儲單元中的內(nèi)容(x)以以X中的內(nèi)容為地址的存儲單元中的內(nèi)容中的內(nèi)容為地址的存儲單元中的內(nèi)容8 MCS-51匯編語言有匯編語言有種指令,種指令,種操作碼助記種操作碼助記符用來描述符用來描述33種操作功能。種操作功能。l按按分為分為數(shù)據(jù)傳送類:數(shù)據(jù)傳送類:29條條算術(shù)運算類:算術(shù)運算類:24條條邏輯運算類:邏輯運算類:24條條控制轉(zhuǎn)移類:控制轉(zhuǎn)移類:17條條位操作類:位操作類: 17條條9l按按分為分為字節(jié)指令:字節(jié)指令:49

5、條條字節(jié)指令:字節(jié)指令:45條條字節(jié)指令:字節(jié)指令:17條條l按按分為分為單單周期指令:周期指令:64條條雙雙周期指令:周期指令:45條條四四周期指令:周期指令:2條條10尋找指令中操作數(shù)的地址,并把操作數(shù)取尋找指令中操作數(shù)的地址,并把操作數(shù)取出來的方法。出來的方法。n51單片機一共單片機一共尋址方式:尋址方式:二、二、MCS-51MCS-51的尋址方式的尋址方式11 它是操作數(shù)它是操作數(shù)在指令中給出的尋址方式。在指令中給出的尋址方式。 這種操作數(shù)稱為這種操作數(shù)稱為,立即數(shù)有,立即數(shù)有8位和位和16位兩種,位兩種,立即數(shù)可以是十進制,也可以是十六進制,還可立即數(shù)可以是十進制,也可以是十六進制,

6、還可以二進制。立即數(shù)前面帶以二進制。立即數(shù)前面帶。例例3-1: MOV A, #20H ;A#20H MOV A, #10000111B ;A#10000111B MOV A,#50 ;A#50 MOV DPTR,#1808H;DPTR#1808H立即數(shù)只能作為源操作數(shù)。立即數(shù)只能作為源操作數(shù)。12MOV A, #20H;A#20H 即把即把20H這個數(shù)據(jù)送入累加器這個數(shù)據(jù)送入累加器A中。中。PC操作碼操作碼立即數(shù)立即數(shù)PCPCACCMOV A, #20H執(zhí)行示意圖執(zhí)行示意圖 執(zhí)行結(jié)果執(zhí)行結(jié)果:(A)=20H13 指令中直接給出操作數(shù)所在指令中直接給出操作數(shù)所在的尋址方式。的尋址方式。 可用符

7、號可用符號表示指令中的直接地址,尋址范表示指令中的直接地址,尋址范圍是內(nèi)部圍是內(nèi)部RAM的低的低128字節(jié)和字節(jié)和SFR.例例3-2: MOV A,20H ;將片內(nèi)將片內(nèi)RAM20H單元中的內(nèi)容送單元中的內(nèi)容送入累加器入累加器A,70H為直接地址。為直接地址。14 MOV , ; A(20H)PC分析分析PC執(zhí)行執(zhí)行PC操作碼操作碼直接地址直接地址ROMRAM20HACC 執(zhí)行結(jié)果執(zhí)行結(jié)果:(A)=62H15 在指定的在指定的中存放操作數(shù)的尋址方式。中存放操作數(shù)的尋址方式。 這類寄存器包括工作寄存器這類寄存器包括工作寄存器R0R7、A、B、DPTR。例例3-3: MOVA,R0 ; 把工作寄存

8、器把工作寄存器R0中的內(nèi)容傳送到中的內(nèi)容傳送到累加器累加器A中。中。16 把操作數(shù)所在的把操作數(shù)所在的存放在指定的存放在指定的中,而中,而操作數(shù)本身則存放在該地址所對應(yīng)的操作數(shù)本身則存放在該地址所對應(yīng)的中中的尋址方式。的尋址方式。 間接尋址寄存器前用間接尋址寄存器前用表示前綴。表示前綴。 能夠用于寄存器間接尋址的寄存器有能夠用于寄存器間接尋址的寄存器有和和(SP不用間接尋址符不用間接尋址符“”)。)。例例3-4: MOVA,R0 ; A( ( R0 ) )17 以以16位寄存器(位寄存器()的內(nèi)容作為)的內(nèi)容作為,以,以累加器累加器的內(nèi)容作為的內(nèi)容作為,將兩者進行相加得到,將兩者進行相加得到的

9、的作為作為。 變址尋址只能對程序存儲器進行尋址,分為變址尋址只能對程序存儲器進行尋址,分為:l以以為基址為基址l以以的內(nèi)容為基址的內(nèi)容為基址18例例3-5: MOVC A, A+PC ;A(A)+(PC)上述指令的功能是,上述指令的功能是,PC的當前值與累加器的當前值與累加器A的內(nèi)的內(nèi)容相加,形成操作數(shù)的地址。容相加,形成操作數(shù)的地址。例例3-6: MOVC A, A+DPTR ;A(A)+(DPTR)上述指令的功能是,上述指令的功能是,DPTR的值與累加器的值與累加器A的內(nèi)容的內(nèi)容相加,形成操作數(shù)的地址。相加,形成操作數(shù)的地址。19ACCACCSFRSFRROMROMDPLDPLDPHDPH

10、30H30H20H20H48H48H2035H2035H例例3-7: 將程序存儲器將程序存儲器ROM中中2035H單元的內(nèi)容讀單元的內(nèi)容讀入入累加器累加器A中:中: MOV DPTR,#2030H ;DPTR #2030H MOV A, #05H ; A #05H MOVC A, A+DPTR ;A(2035H)05H48H20 主要用于主要用于,它是把指令中給出的相對地址,它是把指令中給出的相對地址偏移量偏移量,得到程序轉(zhuǎn)移的目標,得到程序轉(zhuǎn)移的目標地址。地址。 目標地址目標地址=PC當前值當前值+rel =轉(zhuǎn)移指令所在地址轉(zhuǎn)移指令所在地址+轉(zhuǎn)移指令字節(jié)數(shù)轉(zhuǎn)移指令字節(jié)數(shù)+rel rel是一個

11、帶符號的是一個帶符號的8位位,其取值范圍為,其取值范圍為 -128127,負數(shù)表示從當前地址向,負數(shù)表示從當前地址向轉(zhuǎn)移,正數(shù)表轉(zhuǎn)移,正數(shù)表示從當前地址向示從當前地址向轉(zhuǎn)移。轉(zhuǎn)移。 21相對尋址方式示意圖相對尋址方式示意圖程序存儲器程序存儲器ROM2002HSJMP/80H2009Hrel=07H07HPCPC2000HPC+12001HPC+22002HXXH例例3-8:在地址在地址2000H處有一條相對轉(zhuǎn)移指令:處有一條相對轉(zhuǎn)移指令: SJMP loop ;機器碼:機器碼:2000H 80H 07H 目標地址目標地址=(2000+2+07)H=2009H。22 指令中直接給出指令中直接給出

12、操作數(shù)的地址。操作數(shù)的地址。 位地址可用符號位地址可用符號表示。表示。例例3-9: MOV C,F(xiàn)0 ;CY (F0)指令的功能:將位指令的功能:將位F0的內(nèi)容送到進位標志的內(nèi)容送到進位標志CY中。中。 例例3-10: MOV C, 2EH ;CY (2EH) 指令的功能:將位地址指令的功能:將位地址2EH的內(nèi)容送到進位標志的內(nèi)容送到進位標志CY中。中。23可供位尋址的區(qū)域:可供位尋址的區(qū)域: 片內(nèi)片內(nèi)RAM的的20H2FH為位尋址空間為位尋址空間007FH; 凡是地址能被凡是地址能被8整除的整除的SFR,共,共11個。個。24表表3-1 尋址方式及尋址空間對照表尋址方式及尋址空間對照表尋址方

13、式尋址方式符號符號尋尋 址址 空空 間間寄存器尋址寄存器尋址寄存器名寄存器名工作寄存器工作寄存器R0R7、A、B、DPTR直接尋址直接尋址direct片內(nèi)片內(nèi)RAM低低128字節(jié)、字節(jié)、特殊功能寄存器特殊功能寄存器SFR寄存器間接尋址寄存器間接尋址R0、R1、DPTR片內(nèi)片內(nèi)RAM低低128字節(jié)字節(jié)R0、R1、片外片外RAM R0、R1、DPTR立即尋址立即尋址#data8或或#data16程序存儲器(指令的常數(shù)部分)程序存儲器(指令的常數(shù)部分)變址尋址變址尋址A+DPTR、A+PC程序存儲器程序存儲器位尋址位尋址bit、/bit片內(nèi)片內(nèi)RAM中的中的20H2FH的的128個位、個位、特殊功能

14、寄存器中可位尋址的位特殊功能寄存器中可位尋址的位相對尋址相對尋址rel程序存儲器程序存儲器256字節(jié)范圍(字節(jié)范圍(PC+rel)251、作、作 業(yè):指出下列指令中源操作數(shù)的尋址方式業(yè):指出下列指令中源操作數(shù)的尋址方式MOV A, 77HADD A, R2MOV A, 55HMOV A, R1MOVC A, A+DPTRMOV C , 30HMOVX A, R0MOV 50H, A MOVC A, A+PCSJMP 34H ADD A, #21 直接尋址直接尋址 寄存器尋址寄存器尋址 立即尋址立即尋址 寄存器間接尋址寄存器間接尋址 變址尋址變址尋址 位尋址位尋址 寄存器間接尋址寄存器間接尋址

15、寄存器尋址寄存器尋址 變址尋址變址尋址 相對尋址相對尋址 立即尋址立即尋址26l 功能:功能:進行數(shù)據(jù)傳送。進行數(shù)據(jù)傳送。l 注意:數(shù)據(jù)傳送類指令一般注意:數(shù)據(jù)傳送類指令一般不影響狀態(tài)標志位不影響狀態(tài)標志位。l 分類:分類: 片內(nèi)片內(nèi)RAM傳送指令傳送指令 MOV 片外片外RAM傳送指令傳送指令 MOVX ROM傳送指令傳送指令 MOVC 數(shù)據(jù)交換指令數(shù)據(jù)交換指令 XCH XCHD SWAP 堆棧操作指令堆棧操作指令 PUSH POP 3.2 3.2 數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令27程序程序存儲器存儲器ROMEPROM特殊功特殊功能寄存能寄存器器SFR片內(nèi)片內(nèi)RAM128字節(jié)字節(jié)片外片外數(shù)據(jù)數(shù)

16、據(jù)存儲器存儲器RAMMOV PUSHPOPXCHXCHDSWAP 數(shù)據(jù)傳送指令操作域示意圖數(shù)據(jù)傳送指令操作域示意圖28l分類:分類:l 特點:傳送是在單片機內(nèi)部進行,不需要通過外部特點:傳送是在單片機內(nèi)部進行,不需要通過外部總線交換數(shù)據(jù),總線交換數(shù)據(jù),。l 指令助記符為:指令助記符為:MOV一、片內(nèi)一、片內(nèi)RAMRAM傳送指令傳送指令29指令格式:指令格式:指令解釋:把源操作數(shù)送入累計器指令解釋:把源操作數(shù)送入累計器A A中。中。1 1、 以累加器以累加器A A為目的地址的指令為目的地址的指令30舉例說明:舉例說明: 例例3-11: 已知(已知(R1)=40H;(;(30H)=12H; (40

17、H)=34H,求分別執(zhí)行下列指令后結(jié)果。,求分別執(zhí)行下列指令后結(jié)果。各指令執(zhí)行后結(jié)果:各指令執(zhí)行后結(jié)果:(A)=40H、12H、34H、56H31指令格式:指令格式:指令解釋:指令解釋:把源操作數(shù)送入工作寄存器把源操作數(shù)送入工作寄存器Rn中中。2 2、以寄存器、以寄存器RnRn為目的地址的指令為目的地址的指令32舉例說明:舉例說明: 例例3-12: 已知(已知(A)=40H;(;(30H)=12H; (40H)=34H,求分別執(zhí)行下列指令后結(jié)果。,求分別執(zhí)行下列指令后結(jié)果。各指令執(zhí)行后結(jié)果:各指令執(zhí)行后結(jié)果:(R1)=40H、12H、40H33指令格式:指令格式:指令解釋:指令解釋:將源操作數(shù)

18、送入直接地址所指的存儲將源操作數(shù)送入直接地址所指的存儲單元中。單元中。 3 3、以直接地址為目的地址的指令、以直接地址為目的地址的指令34舉例說明:舉例說明: 例例3-13: 已知(已知(R1)= 40H;(;(30H)=12H;(;(40H)=34H;(;(A)=78H,求分別執(zhí)行下列指令后結(jié)果。,求分別執(zhí)行下列指令后結(jié)果。各指令執(zhí)行后結(jié)果:(各指令執(zhí)行后結(jié)果:(50H) 78H、40H、12H、34H、56H35指令格式:指令格式:指令解釋:指令解釋:把源操作數(shù)送入把源操作數(shù)送入R0、R1指針間接尋址指針間接尋址的片內(nèi)的片內(nèi)RAM單元中。單元中。 4 4、以寄存器間接地址為目的地址的指令、

19、以寄存器間接地址為目的地址的指令36舉例說明:舉例說明: 例例3-14: 已知(已知(R0)40H;(;(30H)12H; (A)78H,求分別執(zhí)行下列指令后結(jié)果。,求分別執(zhí)行下列指令后結(jié)果。各指令執(zhí)行后結(jié)果:各指令執(zhí)行后結(jié)果:(40H) 78H、12H、56H37指令格式:指令格式:指令解釋:指令解釋:把一個把一個16位立即數(shù)送入位立即數(shù)送入DPTR寄存器。寄存器。高高8位送入位送入DPH,低,低8位送入位送入DPL。 5 5、以、以DPTRDPTR為目的地址的為目的地址的1616位指令位指令382、設(shè)(設(shè)(30H)40H;(;(40H)10H;(;(P1)0CAH,試判斷下列程序執(zhí)行后的結(jié)

20、果。試判斷下列程序執(zhí)行后的結(jié)果。 MOV R0,#30H MOV A, R0 MOV R1,A MOV B,R1 MOV R1,P1 MOV P2,P1 各指令執(zhí)行后結(jié)果:各指令執(zhí)行后結(jié)果: (A) ,(,(B) ,(40H) ,(,(P2) 。39l 特點:此類指令實際是片外特點:此類指令實際是片外RAM與與A之間的傳送指之間的傳送指令。片外令。片外RAM單元只能采用單元只能采用的方式的方式來訪問,來訪問,可作間接尋址的寄存器??勺鏖g接尋址的寄存器。l 指令助記符為:指令助記符為:MOVX二、片外二、片外RAMRAM傳送指令傳送指令l分類:分類:40指令格式:指令格式:指令解釋:指令解釋:片

21、外片外RAM單元的地址存于單元的地址存于中,上中,上述兩條指令,第一條指令是述兩條指令,第一條指令是片外片外RAM單元中的單元中的內(nèi)容到內(nèi)容到A中;第二條指令是把中;第二條指令是把A中內(nèi)容中內(nèi)容入片外入片外RAM單元中。單元中。注 意 :注 意 : D P T R 是是的 地 址 指 針 , 可 尋 址的 地 址 指 針 , 可 尋 址64KB(0000HFFFFH)的外部的外部RAM。1 1、以、以DPTRDPTR間接尋址的指令間接尋址的指令41舉例說明:舉例說明: 例例3-15:將外部將外部RAM中中1000H單元中的內(nèi)容送入單元中的內(nèi)容送入外部外部RAM中中2000H單元中。已知(單元中

22、。已知(1000H)=12H,(2000H)=34H。42指令格式:指令格式:指令解釋:指令解釋:片外片外RAM單元的地址存于單元的地址存于中,上述中,上述兩條指令,第一條指令是兩條指令,第一條指令是片外片外RAM單元中的內(nèi)單元中的內(nèi)容到容到A中;第二條指令是把中;第二條指令是把A中內(nèi)容中內(nèi)容入片外入片外RAM單元中。單元中。2 2、以、以R0R0和和R1R1間接尋址的指令間接尋址的指令43注意:注意:vR i ( R 0 或或 R 1 ) 是是 8 位 的 地 址 指 針 , 可 尋 址位 的 地 址 指 針 , 可 尋 址256B(00HFFH)的外部的外部RAM。v要想尋址要想尋址64K

23、B的范圍,可使的范圍,可使P2口輸出外部口輸出外部R A M 的 高的 高 8 位 地 址 (位 地 址 (, 共, 共 2 5 6 頁頁00HFFH),而使),而使Ri提供低提供低8位地址(位地址(,256B/頁)。頁)。44舉例說明:舉例說明: 例例3-16:將外部將外部RAM 2050H單元的內(nèi)容送入累加單元的內(nèi)容送入累加器器A中。中。45l 特點:特點:ROM只能讀不能寫,數(shù)據(jù)傳送是只能讀不能寫,數(shù)據(jù)傳送是單向單向的。的。l 指令助記符為:指令助記符為:MOVCl指令格式:指令格式: MOVC A,A+PC ;PC(PC)+1,A(A)(PC) MOVC A,A+DPTR ;A (A)

24、(DPTR)l指令解釋:在程序存儲器中查尋表格常數(shù),并將它指令解釋:在程序存儲器中查尋表格常數(shù),并將它送入累加器送入累加器A,也稱它為,也稱它為查表指令查表指令。三、片外三、片外ROMROM傳送指令傳送指令 46注意:注意:v第一條指令分別以當前指令的第一條指令分別以當前指令的PC作為作為,A作為作為,可尋址范圍是在當前指可尋址范圍是在當前指令下令下。v第二條指令第二條指令DPTR作為作為器,器,可尋址范圍可尋址范圍。v基址寄存器內(nèi)容與變址寄存器內(nèi)容相加形成基址寄存器內(nèi)容與變址寄存器內(nèi)容相加形成。47舉例說明:舉例說明: 例例3-17:將將ROM 1020H單元內(nèi)容送內(nèi)部單元內(nèi)容送內(nèi)部RAM

25、70H單元。單元。48四、數(shù)據(jù)交換指令四、數(shù)據(jù)交換指令分類:分類:49指令格式:指令格式:指令解釋:指令解釋:將將A的內(nèi)容與源操作數(shù)相互的內(nèi)容與源操作數(shù)相互。1 1、全字節(jié)交換指令、全字節(jié)交換指令 50指令格式:指令格式:指令解釋:指令解釋:將累加器將累加器A的的與與Ri的間接尋址單的間接尋址單元內(nèi)容的元內(nèi)容的相互相互,。2 2、半字節(jié)交換指令、半字節(jié)交換指令 51指令格式:指令格式:指令解釋:指令解釋:A中的中的。練習題:練習題:已知(已知(A)=20H,(R1)=30H,(20H)=12H,(40H)=54H,求執(zhí)行下列指令后結(jié)果,求執(zhí)行下列指令后結(jié)果。 XCH A,R1 XCH A,40

26、H XCH A,R1 XCHD A,R1 SWAP A3 3、高低四位互換指令、高低四位互換指令 ;(A)=30H,(R1)=20H;(A)=54H,(40H)=30H;(A)=12H,(20H)=54H;(A)=14H,(20H)=52H;(A)=41H(A)= ,(R1)= ,(20H)= ,(40H)= 。41H20H52H30H52l 堆棧特點:堆棧特點:或或。l堆棧用途:用于堆棧用途:用于和和CPU的工作現(xiàn)場,也可的工作現(xiàn)場,也可實現(xiàn)內(nèi)部實現(xiàn)內(nèi)部RAM單元之間的數(shù)據(jù)單元之間的數(shù)據(jù)。l堆棧指針:堆棧指針:始終指向棧頂位置,初始化時對始終指向棧頂位置,初始化時對SP設(shè)設(shè)定在內(nèi)部定在內(nèi)部R

27、AM的的范圍內(nèi)。范圍內(nèi)。l堆棧操作:堆棧操作:。五、堆棧操作類指令五、堆棧操作類指令53指令格式:指令格式:指令解釋:指令解釋:先將堆棧指針先將堆棧指針SP的內(nèi)容的內(nèi)容(指針上移(指針上移一個單元),然后將直接尋址單元的內(nèi)容一個單元),然后將直接尋址單元的內(nèi)容到到SP指針所指的堆棧單元中(指針所指的堆棧單元中()。)。1 1、進棧指令、進棧指令54指令格式:指令格式:指令解釋:指令解釋:先將堆棧指針先將堆棧指針SP所指的單元(棧頂)所指的單元(棧頂)內(nèi)容內(nèi)容,并送入,并送入direct單元中,然后單元中,然后SP的內(nèi)容的內(nèi)容(指針下移一個單元)。(指針下移一個單元)。注意:注意: PUSH和和

28、POP要成對出現(xiàn)。要成對出現(xiàn)。2 2、出棧指令、出棧指令55l 功能:功能:進行數(shù)據(jù)算術(shù)運算。進行數(shù)據(jù)算術(shù)運算。l 注意:一般會影響狀態(tài)標志位。注意:一般會影響狀態(tài)標志位。l 分類:分類:加法指令:加法指令:3類類減法指令:減法指令:2類類乘法指令乘法指令除法指令除法指令 3.3 3.3 算術(shù)運算類指令算術(shù)運算類指令56指令格式:指令格式:指令解釋:將指令解釋:將和累加器和累加器,其結(jié)果存放在,其結(jié)果存放在A中。中。 一、加法指令一、加法指令不帶進位不帶進位57影響標志位:影響標志位:CY、AC和和P:l若位若位,則,則AC=1,反之為,反之為0;l若位若位,則,則CY1,反之為,反之為0;l

29、位位 D 6 、 D 7 進 位 情 況 會 影 響進 位 情 況 會 影 響 O V 標 志 ,標 志 ,OV=C6 C7;lA中中1的個數(shù)的個數(shù)影響影響P。58舉例說明:舉例說明: 例例3-20:兩個無符號數(shù)放在兩個無符號數(shù)放在A和和R2中,設(shè)中,設(shè)(A)0C2H(194),),(R0)0BBH(187),執(zhí)行指令:),執(zhí)行指令: 1 1 0 0 0 0 1 01 1 0 0 0 0 1 0+ + 1 0 1 1 1 0 1 11 0 1 1 1 0 1 11 11 11 1 0 1 1 1 1 1 0 10 1 1 1 1 1 0 1A A中偶數(shù)個中偶數(shù)個1 11 11 10 00 01

30、 1P POVOVCYCY ACAC0 0異或異或PSWPSW結(jié)果結(jié)果:(A)=7DH(125), CY=1, AC=0,OV=1, P=0.59指令格式:指令格式:指令解釋:將累加器指令解釋:將累加器、指令中的、指令中的相加,并把結(jié)果存放到相加,并把結(jié)果存放到A中。中。 一、加法指令一、加法指令帶進位帶進位60ADDC指令對指令對PSW標志位的影響與標志位的影響與ADD指指令相同,這組指令常用于令相同,這組指令常用于運算。運算。舉例說明:舉例說明:例例3-21:兩個無符號數(shù)放在兩個無符號數(shù)放在A和和20H中中,設(shè)設(shè)(A)85H,(20H)=0FFH,CY=1。執(zhí)行指令:。執(zhí)行指令: 結(jié)果結(jié)果

31、:(A)=85H, CY=1, AC=1, OV=0, P=1.61指令格式:指令格式: 指令解釋:將指定單元中的內(nèi)容指令解釋:將指定單元中的內(nèi)容后,結(jié)果仍保后,結(jié)果仍保存在原單元。存在原單元。 一、加法指令一、加法指令加加1 1指令指令62指令格式:指令格式:指令解釋:從指令解釋:從減去減去及標志位及標志位,其結(jié)果再送累加器其結(jié)果再送累加器A中。中。 二、減法指令二、減法指令帶借位帶借位63注意:注意:v系統(tǒng)沒有提供系統(tǒng)沒有提供不帶借位的減法指令不帶借位的減法指令,若要進,若要進行不帶借位的減法運算,只需先將行不帶借位的減法運算,只需先將即可。即可。vSUBB指令對指令對PSW的標志位產(chǎn)生影

32、響的標志位產(chǎn)生影響同于同于加加法指令。法指令。64舉例說明:舉例說明: 例例3-22:設(shè)設(shè)(A)6CH,(R2)=40H,CY=0。執(zhí)行。執(zhí)行指令:指令: 分析執(zhí)行結(jié)果及對標志位的分析執(zhí)行結(jié)果及對標志位的影響。影響。結(jié)果結(jié)果:(A)=2CH, CY=0, AC=0,OV=0, P=10 1 1 0 1 1 0 00 1 1 0 1 1 0 0 0 1 0 0 0 0 0 00 1 0 0 0 0 0 00 00 0 1 0 1 1 0 00 0 1 0 1 1 0 0A A中奇數(shù)個中奇數(shù)個1 11 10 00 01 10 0P POVOVCYCY ACAC0 0異或異或PSWPSW65指令格式

33、:指令格式:指令解釋:將指定單元中的內(nèi)容指令解釋:將指定單元中的內(nèi)容后,結(jié)果仍保后,結(jié)果仍保存在原單元。存在原單元。且沒有對且沒有對DPTR的減的減1操作指令。操作指令。 二、減法指令二、減法指令減減1 1指令指令66指令格式:指令格式:指令解釋:將累加器指令解釋:將累加器A和寄存器和寄存器B中兩個中兩個8位位整數(shù)整數(shù),并把乘積的,并把乘積的寄存器寄存器 中,中,存于累加器存于累加器 中。中。 注意:乘法運算指令時會對標志位產(chǎn)生影響:注意:乘法運算指令時會對標志位產(chǎn)生影響:vCY位總是被清位總是被清0,即,即CY0;vOV標志則反映乘積的位數(shù),標志則反映乘積的位數(shù),若乘積大于若乘積大于255,

34、則則OV=1,否則,否則OV=0。v影響影響P,不影響,不影響AC。 三、乘法指令三、乘法指令67舉例說明:舉例說明: 例例3-23:設(shè)設(shè)(A)64H,(B)=3CH,執(zhí)行指令:,執(zhí)行指令: 結(jié)果為:結(jié)果為: (A)(B)=1770H,(A)=70H,(B)17H,CY=0,OV=1,P=1。 68指令格式:指令格式: 指令解釋:將累加器指令解釋:將累加器A和寄存器和寄存器B中的兩個中的兩個8位無位無符號整數(shù)相除,所得符號整數(shù)相除,所得存于存于 中,中,存于存于 中。中。注意:除法運算指令時會對標志位產(chǎn)生影響:注意:除法運算指令時會對標志位產(chǎn)生影響:vCY位總是被清位總是被清0,即,即CY0;

35、vOV標志位的狀態(tài)反映寄存器標志位的狀態(tài)反映寄存器B中的除數(shù)情況,中的除數(shù)情況,若除數(shù)(若除數(shù)(B)為)為0,則,則OV=1,表示本次運算無,表示本次運算無意義,否則,意義,否則,OV=0。v影響影響P,不影響,不影響AC。 四、除法指令四、除法指令69舉例說明:舉例說明: 例例3-24:設(shè)設(shè)(A)0F0H(240),(B)=20H(32)。執(zhí)行。執(zhí)行指令:指令: 結(jié)果為:結(jié)果為:(A)07H(商商7), (B)=10H(余數(shù)余數(shù)16), 標志位:標志位: OV=0,CY=0 ,P=1 。70l 功能:功能:進行數(shù)據(jù)邏輯運算。進行數(shù)據(jù)邏輯運算。l 注意:一般注意:一般不影響不影響狀態(tài)標志位。狀

36、態(tài)標志位。l 分類:分類: 邏輯與指令邏輯與指令 邏輯或指令邏輯或指令 邏輯異或指令邏輯異或指令 累加器累加器A的邏輯操作指令:的邏輯操作指令:3類類3.4 3.4 邏輯運算類指令邏輯運算類指令71指令格式:指令格式: 一、邏輯與指令一、邏輯與指令指令解釋:將目的操作數(shù)和源操作數(shù)的內(nèi)容指令解釋:將目的操作數(shù)和源操作數(shù)的內(nèi)容進行邏輯進行邏輯“”操作,結(jié)果送入目的地址中。操作,結(jié)果送入目的地址中。72指令格式:指令格式: 二、邏輯或指令二、邏輯或指令指令解釋:將目的操作數(shù)和源操作數(shù)的內(nèi)容指令解釋:將目的操作數(shù)和源操作數(shù)的內(nèi)容進行邏輯進行邏輯“”操作,結(jié)果送入目的地址中。操作,結(jié)果送入目的地址中。7

37、3指令格式:指令格式: 三、邏輯異與指令三、邏輯異與指令指令解釋:將目的操作數(shù)和源操作數(shù)的內(nèi)容指令解釋:將目的操作數(shù)和源操作數(shù)的內(nèi)容進行邏輯進行邏輯“異或異或”操作,結(jié)果送入目的地址中。操作,結(jié)果送入目的地址中。74舉例說明舉例說明 例例3-25:設(shè)設(shè)(A)57H, (30H)=0FH, (R0)=3CH。分別。分別執(zhí)行指令:執(zhí)行指令: ANL A, #11110000B ORL A, 30H XRL A, R0 結(jié)果為:結(jié)果為: (A)50H (A)=5FH (A)=6BH 75注意注意常用于常用于,即將需要清,即將需要清0的位與的位與“ ”相與,其余位與相與,其余位與“1”相與不變。相與不

38、變。常用于常用于,即將需要置,即將需要置1的位與的位與“ ”相或,其余位與相或,其余位與“0”相或不變。相或不變。常用于常用于,即將需要取反的位與,即將需要取反的位與“ ”相異或,其余位與相異或,其余位與“0”相異或不變。相異或不變。76練習題練習題 3、分析下列程序段的執(zhí)行結(jié)果,并說明程序功能。、分析下列程序段的執(zhí)行結(jié)果,并說明程序功能。 MOV A, #77H XRL A, #0FFH ANL A, #0FHMOV P1, #64H ANL P1, #0F0H ORL A, P1 ;(A)=77H ;(A)=77H 0FFH=88H;(A)=88H 0FH=08H;(P1)=64H;(P1

39、)=64H 0F0H=60H;(A)=08H 60H=68H 結(jié)果為:結(jié)果為: (A)68H; (P1)=60H77 四、累加器四、累加器A A的邏輯操作指令的邏輯操作指令分類:分類:累加器累加器A清清0累加器累加器A取反取反累加器累加器A移位移位v累加器累加器A循環(huán)左移循環(huán)左移v累加器累加器A循環(huán)右移循環(huán)右移v累加器累加器A帶進位循環(huán)左移帶進位循環(huán)左移v累加器累加器A帶進位循環(huán)右移帶進位循環(huán)右移78指令格式指令格式 指令解釋指令解釋 將累加器將累加器A的內(nèi)容的內(nèi)容 。舉例說明舉例說明 例例3-26:設(shè)設(shè)(A)55H。執(zhí)行指令:。執(zhí)行指令: CLR A 結(jié)果為:結(jié)果為:(A)00H1 1、累加

40、器、累加器A A清清0 079指令格式指令格式 指令解釋指令解釋 將累加器將累加器A的內(nèi)容逐位邏輯的內(nèi)容逐位邏輯,結(jié)果仍存,結(jié)果仍存放在放在A中。中。舉例說明舉例說明 例例3-27:設(shè)設(shè)(A)55H。執(zhí)行指令:。執(zhí)行指令: CPL A 結(jié)果為:結(jié)果為:(A)0AAH。 2 2、累加器、累加器A A取反取反80指令格式指令格式 3 3、累加器、累加器A A移位移位RL A:循環(huán)左移是將:循環(huán)左移是將累加器累加器A的內(nèi)容依次向的內(nèi)容依次向左循環(huán)移動左循環(huán)移動1位。位。RR A:循環(huán)右移是將:循環(huán)右移是將累加器累加器A的內(nèi)容依次向的內(nèi)容依次向右循環(huán)移動右循環(huán)移動1位。位。RLC A:帶進位循環(huán):帶進

41、位循環(huán)左移是將累加器左移是將累加器A的內(nèi)的內(nèi)容和進位標志容和進位標志CY依次依次向左循環(huán)移動向左循環(huán)移動1位。位。RRC A:帶進位循環(huán):帶進位循環(huán)右移是將累加器右移是將累加器A的內(nèi)的內(nèi)容和進位標志容和進位標志CY依次依次向右循環(huán)移動向右循環(huán)移動1位。位。81注意注意 除除RLC和和RRC影響影響CY和和P外,其他外,其他不影響不影響標志。標志。舉例說明舉例說明 例例3-28:設(shè)設(shè)(A)11H,CY=1,執(zhí)行指令:,執(zhí)行指令: RL A RLC A RR A RRC A結(jié)果:結(jié)果:(A)22H , CY=1 (A)45H , CY=0 (A)A2H, CY=0 (A)51H, CY=082l

42、功能:功能:控制程序流向??刂瞥绦蛄飨颉 注意:注意:不影響不影響狀態(tài)標志位。狀態(tài)標志位。l 分類:分類:無條件轉(zhuǎn)移指令無條件轉(zhuǎn)移指令條件轉(zhuǎn)移指令條件轉(zhuǎn)移指令子程序操作指令子程序操作指令空操作指令空操作指令 3.5 3.5 控制轉(zhuǎn)移類指令控制轉(zhuǎn)移類指令83 一、無條件轉(zhuǎn)移指令一、無條件轉(zhuǎn)移指令l 功能:功能:使程序無條件轉(zhuǎn)移到指定的地址去執(zhí)行。使程序無條件轉(zhuǎn)移到指定的地址去執(zhí)行。 l 分類:分類:長轉(zhuǎn)移指令長轉(zhuǎn)移指令絕對轉(zhuǎn)移指令絕對轉(zhuǎn)移指令相對轉(zhuǎn)移指令相對轉(zhuǎn)移指令間接轉(zhuǎn)移指令間接轉(zhuǎn)移指令84指令格式指令格式 指令解釋指令解釋先使程序計數(shù)器先使程序計數(shù)器(完成取指并指向下一條(完成取指并指向下

43、一條指令的地址),然后將指令提供的指令的地址),然后將指令提供的16位地址位地址(addr16)送入)送入PC,然后程序,然后程序目標目標地址地址(addr16)處執(zhí)行。處執(zhí)行。注意注意 addr16可實現(xiàn)在可實現(xiàn)在ROM中的中的范圍內(nèi)轉(zhuǎn)移。范圍內(nèi)轉(zhuǎn)移。1 1、長轉(zhuǎn)移指令、長轉(zhuǎn)移指令85指令格式指令格式 指令解釋指令解釋 先使程序計數(shù)器先使程序計數(shù)器(完成取指并指指向下一(完成取指并指指向下一條指令的地址),然后將指令提供的條指令的地址),然后將指令提供的,程序隨即轉(zhuǎn)移到該地址處執(zhí)行。,程序隨即轉(zhuǎn)移到該地址處執(zhí)行。注意注意 addr11可實現(xiàn)在可實現(xiàn)在ROM中的中的2KB范圍內(nèi)轉(zhuǎn)移。范圍內(nèi)轉(zhuǎn)移

44、。2 2、絕對轉(zhuǎn)移指令、絕對轉(zhuǎn)移指令86指令格式指令格式 指令解釋指令解釋指令的功能是先使程序計數(shù)器指令的功能是先使程序計數(shù)器(完成取指(完成取指并指向下一條指令的地址)然后把并指向下一條指令的地址)然后把作為目標轉(zhuǎn)移地址。即:作為目標轉(zhuǎn)移地址。即: 3 3、相對轉(zhuǎn)移指令、相對轉(zhuǎn)移指令87注意注意v rel是一個帶符號的是一個帶符號的8位二進制數(shù)的位二進制數(shù)的范圍為范圍為128127,所以,所以SJMP指令的轉(zhuǎn)移范圍以指令的轉(zhuǎn)移范圍以PC當當前值為起點,向下跳前值為起點,向下跳128個字節(jié),或向上跳個字節(jié),或向上跳127個字節(jié),個字節(jié),共共256個字節(jié)范圍內(nèi)轉(zhuǎn)移。個字節(jié)范圍內(nèi)轉(zhuǎn)移。,又稱為動態(tài)

45、停機指令,執(zhí)行結(jié)果是,又稱為動態(tài)停機指令,執(zhí)行結(jié)果是轉(zhuǎn)向本指令自己,程序在原處無限循環(huán)。一般轉(zhuǎn)向本指令自己,程序在原處無限循環(huán)。一般寫成:寫成: HERE: SJMP HERE 或或 SJMP $88指令格式指令格式 指令解釋指令解釋 將累加器將累加器A中數(shù)與中數(shù)與DPTR的的16位數(shù)位數(shù),作為目標作為目標地址送入地址送入PC,實現(xiàn)無條件轉(zhuǎn)移。,實現(xiàn)無條件轉(zhuǎn)移。注意注意 該指令采用該指令采用,DPTR作為基址寄存器,作為基址寄存器,由用戶預(yù)先設(shè)定,由用戶預(yù)先設(shè)定,A的內(nèi)容作為偏移量的內(nèi)容作為偏移量,根據(jù),根據(jù)A值的值的不同,就可轉(zhuǎn)移到不同的地址,又稱為不同,就可轉(zhuǎn)移到不同的地址,又稱為。4 4

46、、間接轉(zhuǎn)移指令、間接轉(zhuǎn)移指令89舉例說明舉例說明例例3-29:程序段程序段1: ORG 0000H LJMP MAIN MAIN: 程序段程序段2:START: . SJMP START 90 二、條件轉(zhuǎn)移指令二、條件轉(zhuǎn)移指令l 功能:功能: 條件轉(zhuǎn)移指令要求對條件轉(zhuǎn)移指令要求對進行判斷:進行判斷: 當當條件時,程序就條件時,程序就去執(zhí)行;去執(zhí)行; 當當時,則時,則下一條指令。下一條指令。 用于實現(xiàn)分支結(jié)構(gòu)的程序。用于實現(xiàn)分支結(jié)構(gòu)的程序。l 分類:分類:累加器累加器A的判的判0轉(zhuǎn)移指令轉(zhuǎn)移指令比較不等轉(zhuǎn)移指令比較不等轉(zhuǎn)移指令減減1不為不為0轉(zhuǎn)移指令轉(zhuǎn)移指令91 指令格式指令格式 指令解釋指令解

47、釋 若累加器若累加器的內(nèi)容的內(nèi)容,則程序,則程序指定的目標地指定的目標地址,否則程序順序執(zhí)行。址,否則程序順序執(zhí)行。 若累加器若累加器的內(nèi)容的內(nèi)容,則程序,則程序指定的目標指定的目標地址,否則程序順序執(zhí)行。地址,否則程序順序執(zhí)行。1 1、累加器、累加器A A的判的判0 0轉(zhuǎn)移指令轉(zhuǎn)移指令92舉例說明舉例說明例例3-30:將片內(nèi)將片內(nèi)RAM的的40H單元開始的數(shù)據(jù)塊傳送到單元開始的數(shù)據(jù)塊傳送到片外片外RAM的的1000H開始的單元中,當遇到的數(shù)據(jù)為開始的單元中,當遇到的數(shù)據(jù)為0,則停止傳送(假定不超過存儲空間就會遇到則停止傳送(假定不超過存儲空間就會遇到0)。)。 MOV R0, #40H MO

48、V DPTR, #1000HLOOP: MOV A, R0 JZ HERE MOVX DPTR, A INC R0 INC DPTR SJMP LOOPHERE: SJMP HERE93 指令格式指令格式 指令解釋指令解釋 將前兩個操作數(shù)進行將前兩個操作數(shù)進行:若:若,程序,程序到到指定的目標地址,若指定的目標地址,若,程序,程序。2 2、比較不等轉(zhuǎn)移指令、比較不等轉(zhuǎn)移指令比較是采用相減運算的比較是采用相減運算的方法。結(jié)果會影響方法。結(jié)果會影響CY標標志,但不影響任何一個志,但不影響任何一個操作數(shù)的內(nèi)容。操作數(shù)的內(nèi)容。94 指令格式指令格式 ; Rn ;(Rn)0則轉(zhuǎn)移,則轉(zhuǎn)移, ;(Rn)

49、0則順序執(zhí)行,則順序執(zhí)行, ; direct ;(direct)0則轉(zhuǎn)移,則轉(zhuǎn)移, ;(direct) 0則轉(zhuǎn)移,則轉(zhuǎn)移,3 3、減、減1 1不為不為0 0轉(zhuǎn)移轉(zhuǎn)移可以控制循環(huán)次數(shù)。可以控制循環(huán)次數(shù)。95指令解釋指令解釋 將將Rn/direct的內(nèi)容的內(nèi)容,若,若不為不為0,程序,程序轉(zhuǎn)移轉(zhuǎn)移到目標地址處執(zhí)行,若到目標地址處執(zhí)行,若為為0,則程序,則程序順序執(zhí)行順序執(zhí)行。舉例說明舉例說明 例例3-31:計算子程序延時時間計算子程序延時時間 ;1機器周期機器周期 ;1機器周期機器周期 ;2機器周期機器周期 ;2機器周期機器周期 96 三、調(diào)用子程序及返回指令三、調(diào)用子程序及返回指令l 定義:定義

50、: 是指能完成是指能完成的相對獨立的程序段。的相對獨立的程序段。l 適用:適用: 同一個程序的同一個程序的要求執(zhí)行要求執(zhí)行可將該可將該操作編成一個子程序。操作編成一個子程序。l 分類:分類: 長調(diào)用指令長調(diào)用指令 絕對調(diào)用指令絕對調(diào)用指令 返回指令返回指令97l 特點:特點: 在主程序需要時,安排一條子程序在主程序需要時,安排一條子程序,使,使程序無條件地轉(zhuǎn)移到子程序處執(zhí)行,執(zhí)行完后由程序無條件地轉(zhuǎn)移到子程序處執(zhí)行,執(zhí)行完后由回到原斷點處繼續(xù)執(zhí)行主程序?;氐皆瓟帱c處繼續(xù)執(zhí)行主程序。 子程序中可包括對另外子程序的調(diào)用,稱為子程序中可包括對另外子程序的調(diào)用,稱為,但次數(shù)是有限制的。,但次數(shù)是有限制

51、的。98子程序和主程序間的關(guān)系圖子程序和主程序間的關(guān)系圖99 指令格式指令格式 LCALL addr16 ;PC (PC)3 ;SP (SP)1, (SP) (PC)L ;SP (SP)1, (SP) (PC)H ;PC addr16 指令功能指令功能 先將先將PC+3(完成取指操作并指向下一條指令的地(完成取指操作并指向下一條指令的地址),再把該地址(又稱斷點地址)址),再把該地址(又稱斷點地址)壓入堆棧保壓入堆棧保護護起來,然后把起來,然后把addr16送入送入PC,并轉(zhuǎn)入該地址執(zhí),并轉(zhuǎn)入該地址執(zhí)行子程序。行子程序。1 1、長調(diào)用指令、長調(diào)用指令100 指令格式指令格式 ACALL add

52、r11 ;PC (PC)2 ;SP (SP)1, (SP) (PC)L ;SP (SP)1, (SP) (PC)H ; PC100 addr11 指令功能指令功能 先將先將PC+2(完成取指操作并指向下一條指令的地(完成取指操作并指向下一條指令的地址),再把該地址址),再把該地址壓入堆棧保護壓入堆棧保護起來,然后把起來,然后把addr11送入送入PC,和,和PC當前值的高當前值的高5位合并成位合并成16位位的子程序入口地址,并轉(zhuǎn)入該地址執(zhí)行子程序。的子程序入口地址,并轉(zhuǎn)入該地址執(zhí)行子程序。2 2、絕對調(diào)用指令、絕對調(diào)用指令101 子程序返回指令子程序返回指令指令格式指令格式 RET ;PCH

53、(SP) , SP (SP)1 ;PCL (SP) , SP (SP)1指令解釋指令解釋 將保存在堆棧中的斷點地址彈出送給將保存在堆棧中的斷點地址彈出送給PC,使,使CPU處繼續(xù)往下執(zhí)行主程序。處繼續(xù)往下執(zhí)行主程序。注意:注意:3 3、 返回指令返回指令102 中斷返回指令中斷返回指令指令格式指令格式 RETI ;PCH (SP) , SP (SP)1 ;PCL (SP) , SP (SP)1指令解釋指令解釋 將保存在堆棧中的斷點地址彈出送給將保存在堆棧中的斷點地址彈出送給PC,使,使CPU處繼續(xù)執(zhí)行主程處繼續(xù)執(zhí)行主程序。序。注意:注意:103指令格式指令格式 NOP ;PC (PC)+1指令

54、解釋指令解釋 這是一條這是一條1字節(jié)的指令。該指令執(zhí)行時字節(jié)的指令。該指令執(zhí)行時CPU不進行不進行 任何操作,但需要任何操作,但需要,通,通 常用于短暫的延時。常用于短暫的延時。 四、空操作指令四、空操作指令104舉例說明舉例說明 例例3-32:調(diào)用延時子程序。調(diào)用延時子程序。 START: MOV P1, A LCALL DELAY INC A SJMP START . DELAY: MOV R0, #5 DY1: NOP DJNZ R0, DY1 RET105l 功能功能的傳送、修改、邏輯操作等。的傳送、修改、邏輯操作等。l 注意注意 以以為位累加器,以可位尋址的為位累加器,以可位尋址的為

55、操作數(shù)。為操作數(shù)。l 分類:分類:3.6 3.6 位操作類指令位操作類指令106指令格式指令格式 MOVC,bit ;CY(bit) MOVbit ,C ;bitCY指令解釋指令解釋 實現(xiàn)某個實現(xiàn)某個與與之間的之間的。注意注意 兩個兩個bit之間不能直接傳送,必須通過位累加器之間不能直接傳送,必須通過位累加器C。 一、位傳送指令一、位傳送指令107舉例說明舉例說明 例例3-33:設(shè)(設(shè)(CY)=0,(20H).1=1,執(zhí)行指令:,執(zhí)行指令: 等同與:等同與: 結(jié)果為:結(jié)果為:CY=1。 注意:這里的注意:這里的01H是位地址,是位地址,20H是內(nèi)部是內(nèi)部RAM的的 字節(jié)地址。字節(jié)地址。 108

56、指令格式指令格式 CLRC ;CY 0 CLRbit ; bit 0 SETB C ;CY 1 SETBbit ; bit 1指令解釋指令解釋 前兩條指令是把位累加器前兩條指令是把位累加器C和和bit位的內(nèi)容位的內(nèi)容清清0。 后兩條指令是把位累加器后兩條指令是把位累加器C和和bit位的內(nèi)容位的內(nèi)容置置1。 二、位置位清二、位置位清0 0指令指令109舉例說明舉例說明 例例3-34:要設(shè)定工作寄存器要設(shè)定工作寄存器2區(qū)為當前工作區(qū),可區(qū)為當前工作區(qū),可用以下指令實現(xiàn):用以下指令實現(xiàn): 結(jié)果為:結(jié)果為:RS1=1, RS0=0 。 等同與:等同與:110指令格式指令格式 ANL C, bit ;C

57、YCY(bit) ANL C, /bit ;CYCY(/bit) ORL C, bit ;CYCY(bit) ORL C, /bit ;CYCY(/bit) CPL C ;CY /CY CPL bit ;bit / bit 三、位邏輯運算指令三、位邏輯運算指令 前兩條指令的功能前兩條指令的功能是將是將bit位的值(或位的值(或bit取反后的值)與取反后的值)與累加器累加器C的值進行的值進行操作,結(jié)果操作,結(jié)果送位累加器送位累加器C。中間兩條指令的中間兩條指令的功能是將功能是將bit位的位的值(或值(或bit取反后取反后的值)與累加器的值)與累加器C的值進行的值進行操作,結(jié)果送位操作,結(jié)果送位累

58、加器累加器C。后兩條指令的功能后兩條指令的功能是把位累加器是把位累加器C和和bit位的內(nèi)容位的內(nèi)容。111舉例說明舉例說明 例例3-35:用編程的方法實現(xiàn)下圖所示電路的功能:用編程的方法實現(xiàn)下圖所示電路的功能: 程序如下:程序如下: MOV C, P1.3 ANL C, P1.4 ORL C, /P1.2 MOV P3.0, C1 1P1.2P1.4P1.3P3.0 .&1 1112 1、以、以CY狀態(tài)為條件的轉(zhuǎn)移指令狀態(tài)為條件的轉(zhuǎn)移指令指令格式指令格式 JC rel ;若若(CY)=1則轉(zhuǎn)移,則轉(zhuǎn)移,PC(PC)2rel JNC rel ;若若(CY)=0則轉(zhuǎn)移,則轉(zhuǎn)移,PC(PC)2rel

59、指令解釋指令解釋兩條指令是對兩條指令是對。v 第一條是若第一條是若(CY)=1,則轉(zhuǎn)移到目標地址去執(zhí)行;,則轉(zhuǎn)移到目標地址去執(zhí)行;若若(CY)=0,則程序順序執(zhí)行。,則程序順序執(zhí)行。v 第二條是若第二條是若(CY)=0,則轉(zhuǎn)移到目標地址去執(zhí)行;,則轉(zhuǎn)移到目標地址去執(zhí)行;若若(CY)=1,則程序順序執(zhí)行。,則程序順序執(zhí)行。 四、位條件轉(zhuǎn)移指令四、位條件轉(zhuǎn)移指令113舉例說明舉例說明 例例3-36:比較片內(nèi):比較片內(nèi)RAM的的50H和和51H單元中兩個單元中兩個8位無符號數(shù)的大小,把大數(shù)存入位無符號數(shù)的大小,把大數(shù)存入60H單元。若兩單元。若兩數(shù)相等,則把標志位數(shù)相等,則把標志位F0置置1。 MO

60、V A, 50H CJNE A, 51H, LOOP SETB F0 SJMP HERE LOOP: JC LOOP1 MOV 60H, A SJMP HERE LOOP1: MOV 60H, 51H HERE: SJMP HERE1142、以位變量狀態(tài)為條件的轉(zhuǎn)移、以位變量狀態(tài)為條件的轉(zhuǎn)移 指令格式指令格式 ;若若(bit)=1則轉(zhuǎn)移則轉(zhuǎn)移, PC(PC)3rel ;若若(bit)=0則轉(zhuǎn)移則轉(zhuǎn)移, PC(PC)3rel ;若若(bit)=1則轉(zhuǎn)移則轉(zhuǎn)移, 同時同時bit0, PCPC3rel 第一條指令的功能是若第一條指令的功能是若bit位位內(nèi)容為內(nèi)容為 ,到目標地址,到目標地址,若為若為

溫馨提示

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

評論

0/150

提交評論