第三章單片機(jī)指令系統(tǒng)2015_第1頁(yè)
第三章單片機(jī)指令系統(tǒng)2015_第2頁(yè)
第三章單片機(jī)指令系統(tǒng)2015_第3頁(yè)
第三章單片機(jī)指令系統(tǒng)2015_第4頁(yè)
第三章單片機(jī)指令系統(tǒng)2015_第5頁(yè)
已閱讀5頁(yè),還剩146頁(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、第3章:?jiǎn)纹瑱C(jī)指令系統(tǒng)本章基本要求: 指令的概念 51-單片機(jī)的尋址方式* 51-單片機(jī)指令系統(tǒng)*(概念3-1) 一臺(tái)計(jì)算機(jī)所能執(zhí)行的全部的指令集合成稱指令系統(tǒng)(概念3-2)指令是一種可供計(jì)算機(jī)執(zhí)行的控制代碼(指令碼),指令碼分為操作碼和操作數(shù)(概念3-3)程序:采用指令系統(tǒng)中的指令根據(jù)題目要求排列起來(lái)的有序指令集和。 (概念3-4)程序的編制稱為程序設(shè)計(jì) 指令系統(tǒng) 設(shè)計(jì)一種CPU,一般從設(shè)計(jì)指令系統(tǒng)開始因而,一種機(jī)器的指令系統(tǒng)是機(jī)器本身固有的用戶無(wú)法改變,必須繼承、學(xué)習(xí)、掌握、應(yīng)用決定了機(jī)器的性能7407 H; 240A H;編程舉例:設(shè)計(jì)實(shí)現(xiàn)Y=7+10 指令=操作碼操作數(shù)MOV A,#0

2、7H; ADD A,#0AH ; 用助記符號(hào)寫出的二進(jìn)制代碼(機(jī)器語(yǔ)言),稱為CPU的匯編語(yǔ)言。匯編語(yǔ)言與二進(jìn)碼指令一一對(duì)應(yīng)。0111010000000111B; 0010010000001010B;void jiafa(void) unsigned char i; i=7+10; 機(jī)器語(yǔ)言,二進(jìn)制代碼,是機(jī)器唯一能直接識(shí)別、執(zhí)行的語(yǔ)言。為了記憶和閱讀方便,制造商對(duì)指令系統(tǒng)每一條指令,都給出了指令助記符。(概念3-5)助記符:有英文單詞或縮寫字母形象表征指令功能(概念3-6)用助記符,操作數(shù),標(biāo)號(hào)編寫的程序稱為匯編語(yǔ)言源程序。一、匯編語(yǔ)言一、匯編語(yǔ)言匯編語(yǔ)言必須翻譯成機(jī)器語(yǔ)言才能被機(jī)器執(zhí)行 程

3、序設(shè)計(jì)語(yǔ)言匯編語(yǔ)言;高級(jí)語(yǔ)言完成由匯編語(yǔ)言到機(jī)器代碼的過(guò)程叫匯編匯編的方法有兩種:自動(dòng)匯編、手工匯編由機(jī)器代碼到匯編語(yǔ)言的過(guò)程叫反匯編匯編語(yǔ)言源程序機(jī)器語(yǔ)言 匯編 反匯編交叉匯編二、匯編語(yǔ)言的格式二、匯編語(yǔ)言的格式 標(biāo)號(hào): 操作碼 操作數(shù) ;注釋START: MOV A , #00H ; 0-A其中除操作碼部分是必須的,括號(hào)內(nèi)的區(qū)段是任選項(xiàng)。1 1、標(biāo)號(hào)、標(biāo)號(hào)標(biāo)號(hào)是該指令的符號(hào)地址,可根據(jù)需要設(shè)定必須以字母開始,以“ :”結(jié)束,長(zhǎng)度不超過(guò)8個(gè)字符系統(tǒng)中的保留字符不能作標(biāo)號(hào), 如: SFR名、ADD等標(biāo)號(hào)可被其他語(yǔ)句的操作數(shù)直接引用源程序中,一個(gè)標(biāo)號(hào)只能定義一個(gè)語(yǔ)句,不能相重名字保持一義性一個(gè)匯

4、編語(yǔ)句分為四個(gè)區(qū)段2 2、操作碼、操作碼由指令系統(tǒng)的助記符、偽指令助記符組成。操作碼是每一句匯編語(yǔ)言所必須的操作碼和操作數(shù)之間用空格分開3 3、操作數(shù)、操作數(shù)可為二進(jìn)制數(shù) (B) , 十進(jìn)制數(shù) (D) ,十六進(jìn)制數(shù) (H)數(shù)字大于9,則數(shù)字應(yīng)以“0”開頭可以是操作數(shù)地址、立即數(shù)、標(biāo)號(hào)、表達(dá)式如 M+3目的操作數(shù)和源操作數(shù)之間用“,”分開可以是寄存器名如A、B、R、DPTRM標(biāo)號(hào)被定義過(guò)的BinaryDecimalHexadecimal指出該語(yǔ)句的操作性質(zhì)4 4、注釋、注釋以“ ;”開頭,是程序員對(duì)指令操作的解釋, 以幫助閱讀、理解程序的意義可有可無(wú)匯編時(shí)對(duì)這部分不予處理,不譯成任何機(jī)器代碼可用

5、英語(yǔ)或某種簡(jiǎn)潔的方式解釋指令,或打印 程序清單3.13.1概概 述述3.1.1 指令格式指令由操作碼和操作數(shù)兩部分組成。操作碼:描述指令的功能。操作數(shù):描述指令操作的對(duì)象,這個(gè)對(duì)象有時(shí)用直接數(shù)據(jù),有時(shí)用操作數(shù)的地址來(lái)給出。有些指令是單操作數(shù)。有些指令是雙操作數(shù),取名為源操作數(shù)和目的操作數(shù)。操作碼操作碼操作數(shù)或操作數(shù)地址操作數(shù)或操作數(shù)地址3.1.2 指令的三種表示形式 三種形式為:二進(jìn)制形式、十六進(jìn)制形式、助記符形式。 二進(jìn)制形式:可以直接為CPU識(shí)別和執(zhí)行的形式。 十六進(jìn)制形式:為二進(jìn)制形式的壓縮形式。 助記符形式:也叫匯編語(yǔ)句形式,是用英文縮寫描述指令功能的形式。其特點(diǎn)是:便于記憶和使用,在

6、執(zhí)行時(shí)必須翻譯成二進(jìn)制形式。3.1.3 指令的長(zhǎng)度51單片機(jī)的指令(111條)分為單字節(jié)、雙字節(jié)、三字節(jié)三種長(zhǎng)度。1、單字節(jié)指令:有49條,可進(jìn)一步分為無(wú)操作數(shù)、有操作數(shù)兩種。2、雙字節(jié)指令:有46條,前一字節(jié)存放操作碼,后一字節(jié)存放操作數(shù)。3、三字節(jié)指令:有16條,前一字節(jié)存放操作碼,后兩字節(jié)存放操作數(shù)。一般講,指令長(zhǎng)度越短,執(zhí)行速度越快。3.1 匯編語(yǔ)言匯編語(yǔ)言89C51共有111條指令,根據(jù)在程序存儲(chǔ)器ROM中所占字節(jié)數(shù)的不同,可分為單字節(jié)指令、雙字節(jié)指令和三字節(jié)指令。單字節(jié)指令(單字節(jié)指令(4949條):分無(wú)操作數(shù)、有操作數(shù)兩種。條):分無(wú)操作數(shù)、有操作數(shù)兩種。 無(wú)操作數(shù):如無(wú)操作數(shù):

7、如 INC DPTR 10100011BINC DPTR 10100011B INC A INC A 00000100B00000100B 【特點(diǎn)】:操作數(shù)隱含在操作碼中。【特點(diǎn)】:操作數(shù)隱含在操作碼中。 含有操作數(shù)寄存器名稱的單字節(jié)指令:含有操作數(shù)寄存器名稱的單字節(jié)指令: 如:如: MOVMOVA A,R0R011101000B11101000BMOV MOV A A,R1R111101001B11101001B 【特點(diǎn)】:寄存器名以三位數(shù)代碼的形式放在指令的后三【特點(diǎn)】:寄存器名以三位數(shù)代碼的形式放在指令的后三位。位。雙字節(jié)指令(雙字節(jié)指令(4545條):分兩種情況:條):分兩種情況:指令

8、中含有一個(gè)操作數(shù)指令中含有一個(gè)操作數(shù). .例如:例如:匯編格式:匯編格式: MOV A , #data MOV A , #data 機(jī)器碼:機(jī)器碼: 01110100B data 01110100B data 或:或: 78H 78H、#data #data nn+1雙字節(jié)指令在程序存儲(chǔ)器的存放示意圖8位的操作數(shù)3.1 匯編語(yǔ)言匯編語(yǔ)言 指令中含有一個(gè)8位的操作數(shù)的地址。匯編格式: MOV A ,direct 機(jī)器碼: E5H、direct 如: MOV A ,20H ;將RAM 20H中的數(shù)據(jù)送Ann+18位的RAM地址3.1 匯編語(yǔ)言匯編語(yǔ)言三字節(jié)指令(三字節(jié)指令(1717條):條):指令

9、中的操作數(shù)為雙字節(jié)。指令中的操作數(shù)為雙字節(jié)。 MOV MOV DPTRDPTR,#data16 1001000B#data16 1001000B,data15-8data15-8,data7-0data7-0指令中分別包含指令中分別包含1 1個(gè)字節(jié)的操作數(shù)和個(gè)字節(jié)的操作數(shù)和1 1個(gè)字節(jié)的操作數(shù)地址。個(gè)字節(jié)的操作數(shù)地址。MOV direct ,#data MOV direct ,#data 舉例:舉例:MOV 20H,#0FFH MOV 20H,#0FFH MOV dptr,#data16MOV direct, #data三字節(jié)指令在存儲(chǔ)器中存放的方式示意圖3.1 匯編語(yǔ)言匯編語(yǔ)言3.1.4 5

10、1單片機(jī)指令分類1、數(shù)據(jù)傳送指令:28條,用于片內(nèi)RAM間、片內(nèi)RAM與片外RAM數(shù)據(jù)傳送。2、算術(shù)運(yùn)算指令:24條,用于對(duì)兩個(gè)操作數(shù)進(jìn)行加、減、乘、除運(yùn)算3、邏輯操作和移位指令:25條,對(duì)指定操作數(shù)進(jìn)行邏輯運(yùn)算和移位運(yùn)算。4、控制轉(zhuǎn)移指令:17條,用于控制程序的流程和執(zhí)行的方向。其操作是以改變PC的值來(lái)實(shí)現(xiàn)。5、位操作指令:17條,也叫布爾操作指令。分為位傳送、位置位、位復(fù)位、位運(yùn)算、位控制轉(zhuǎn)移等等。這類指令的操作數(shù)是以位為對(duì)象。3.1.5 指令系統(tǒng)綜述指令系統(tǒng):某種CPU的指令的集合。他與CPU的硬件電路密切相關(guān),學(xué)習(xí)指令時(shí)必須注意到這一背景。不同的CPU具有不同的指令系統(tǒng)。掌握指令的三要

11、素:指令功能、指令狀態(tài)、指令長(zhǎng)度。1、指令系統(tǒng)中常用符號(hào)(附錄C)(基礎(chǔ)知識(shí)) Rn:工作寄存器,可以是R0R7之一。 #data:8位立即數(shù),是00HFFH之一。 #data16:16位立即數(shù),是0000HFFFFH之一。 direct:8位直接地址,是00HFFH之一,也可以是SFR中的一個(gè),對(duì)于SFR可直接用其名稱來(lái)代替其直接地址。 Ri:表示寄存器間接尋址。 DPTR:使用16位DPTR間接尋址,用于對(duì)外部RAM/ROM尋址。 bit:位地址 addr11/16:11/16位目標(biāo)地址。 rel:8位帶符號(hào)地址偏移量。 $:當(dāng)前指令地址。2、指令對(duì)標(biāo)志位的影響:指令系統(tǒng)中的算術(shù)類指令,位

12、移類指令、邏輯運(yùn)算類指令等的運(yùn)算會(huì)對(duì)標(biāo)志寄存器PSW中的某些位有影響。這些對(duì)標(biāo)志位的影響是這類指令的重要特征,也是使用條件轉(zhuǎn)移指令的依據(jù)。需要仔細(xì)掌握應(yīng)用。3.2尋址方式(概念3-7)所謂尋址方式:是指指令尋找操作數(shù)的方法。51單片機(jī)有7種尋址方式:寄存器尋址、直接尋址、立即尋址、寄存器間接尋址、(寄存器)變址尋址、相對(duì)尋址、位尋址。用何種方式尋找指令的操作數(shù)或指令的執(zhí)行地址1 1、立即尋址、立即尋址尋址空間:指令形式:操作碼立即數(shù)v程序存儲(chǔ)器v指令的操作數(shù)存放在程序存儲(chǔ)器中v操作數(shù)緊跟操作碼后面立即尋址:在 哪 里 ?用何種方式尋找OP#data指令的尋址方式:指令的尋址方式:指令的尋址方式

13、:【注意】:MOV A,#30H MOV A,30H 兩者的區(qū)別。立即數(shù)尋址的指令長(zhǎng)度為2或3個(gè)字節(jié)。nn+1ROM累加器AMOV A,#30HROMDPTRMOV DPTR,#2000H指令執(zhí)行流程3.2 尋址方式尋址方式MOV A,# 30H;A #30H 例1:操作碼立即數(shù)PCPCPC74H30HROM A30HMOV DPTR,# 8000H;DPTR #8000H 例2:操作碼PCPCPC立即數(shù)的高8位立即數(shù)的低8位DPHDPLPC80H00H90H80HROM00H 2 2、直接尋址、直接尋址尋址空間:指令的三種形式:操作碼操作數(shù)地址v在指令中直接給出操作數(shù)的真實(shí)地址v操作碼后面緊

14、跟一個(gè)實(shí)際操作數(shù)地址操作碼操作數(shù)地址立即數(shù)操作碼源操作數(shù)地址目的操作數(shù)地址內(nèi)RAM的低128字節(jié)特殊功能寄存器SFR區(qū)直接尋址直接尋址是訪問(wèn) SFR 的唯一方法00H7FH80HFFHCPU內(nèi)部直接間接注意事項(xiàng):累加器A,ACC,0E0HINC A ;寄存器尋址INC ACC ;直接尋址INC 0E0H ;直接尋址直接尋址 當(dāng)直接尋址的地址是SFR中的一個(gè)時(shí),直接地址可使用SFR物理地址也可以是名稱 MOV A ,SP MOV A ,81H INC A ;寄存器尋址 INC ACC INC 0E0H MOV A,20H MOVC,20H;位尋址“與”MOV A, 30H;A (30H) 例1:

15、操作碼操作數(shù)地址PCPCPC74H30HROM A內(nèi)RAM 30H ANL 30H,#30H;30H (30H) #30H 例2:操作碼PCPCPC直接地址立即數(shù)PC53H30HROM 30H 內(nèi)RAM 30H ALU“結(jié)果”2022-4-1927使用直接尋址應(yīng)注意的三個(gè)問(wèn)題:1,指令助記符中direct是用16進(jìn)制數(shù)表示的操作數(shù)地址。 當(dāng)?shù)刂非『迷赟FR區(qū)域時(shí),指令也可以用寄存器名來(lái)表示。 如: MOV A,80H 可以寫成 MOV A,P0 后者用SFR中寄存器的名字取代它的物理地址80H,它更容易閱讀和交流,所以我們提倡使用SFR中寄存器名稱來(lái)代替直接地址。 如:MOV A,SBUF ;

16、串口數(shù)據(jù)緩沖器數(shù)據(jù)送A MOV IE,#00H ;初始化中斷允許寄存器 MOV TH1,#0FEH ;為定時(shí)器1賦初值應(yīng)當(dāng)注意:在編譯時(shí),匯編程序要先將寄存器名字轉(zhuǎn)換為直接地址,然后再翻譯成機(jī)器碼。2022-4-19282,當(dāng)直接地址時(shí)在工作寄存器區(qū)中時(shí),可以使用兩種尋址方式來(lái)訪問(wèn)。如: MOV A,00H ;將RAM中00H單元數(shù)據(jù)送累加器A MOV A,R0 ;將工作寄存器R0的內(nèi)容送累加器A 這里使用了不同的尋址方式,其指令的結(jié)構(gòu)也不相同。 前者是:11100101(0E5H)、00000000(00H) 雙字節(jié)。 后者的機(jī)器碼是:11101000(0E8H) 單字節(jié); 在物理結(jié)構(gòu)上,R

17、0與RAM的00H單元恰好是同一單元,所以不同的指令而執(zhí)行結(jié)果是一樣的。 類似的還有累加器A: INC A 寄存器尋址方式(單字節(jié)); INC 0E0H 直接尋址方式(雙字節(jié))。 2022-4-19293,在指令系統(tǒng)中:字節(jié)地址與位地址是完全不同的概念。 前者用direct表示,而后者用bit 表示,但在指令中都是用16進(jìn)制表示的數(shù)。 如: MOV A,20H ;將RAM的20H單元內(nèi)容送A MOV C,20H ;將位尋址區(qū)中的位地址為20H位內(nèi)容送 PSW 中的Cy中。3、寄存器尋址:指令碼中含有該操作數(shù)的寄存器號(hào)尋址空間:指令的三種形式:操作碼當(dāng)前選定的寄存器內(nèi)容就是實(shí)際操作數(shù)操作碼立即數(shù)

18、操作碼直接地址R0R7,(由RS0、RS1確定寄存器區(qū)/4)A、B、CY(位),DPTR、ABMOV A,R311101XXX;A (R3) 例1:ADD A,R3;A (A)+(R3)例2:寄存器尋址:操作數(shù)隱含操作數(shù)顯然4 4、寄存器間接尋址、寄存器間接尋址尋址空間:指令的三種形式:操作碼操作碼立即數(shù)操作碼直接地址內(nèi)部 RAM(R0, R1, SP)外部 RAM(R0, R1,DPTR)寄存器間接尋址: 指令選定的寄存器內(nèi)容就是實(shí)際的操作數(shù)地址MOV R0,A例1:操作碼PCPCF6HROMR030H;累加器傳送指令內(nèi)RAM 30HA MOVX A,DPTR例2:操作碼PCPCE0HROM

19、DPTR 2000H外RAM 2000HA “讀”RD“讀”使用間接尋址時(shí)應(yīng)注意的幾個(gè)問(wèn)題:1.使用間址指令前,往往要事先為間址寄存器Ri賦初值;2.只能使用R0、R1作間址寄存器 ,即 R i (i=0、1)。3.2 尋址方式尋址方式3. 間址可訪問(wèn)片內(nèi)RAM,也是訪問(wèn)片外RAM唯一的方式。4. 對(duì)于片內(nèi)RAM使用Ri寄存器,尋址范圍00HFFH;5. MOV A,Ri 訪問(wèn)內(nèi)部RAM單元6. 對(duì)片外RAM可以:7.使用Ri。尋址范圍為00HFFH(256字節(jié));8.使用DPTR做間址寄存器。尋址范圍為0000HFFFFH(64K)。9.MOVX A,Ri ;訪問(wèn)外RAM單元,范圍256字節(jié)

20、MOVX A,DPTR ;訪問(wèn)外RAM單元,范圍64K字節(jié)10.【注意】: Ri、DPTR應(yīng)事先裝入地址。3.2 尋址方式尋址方式4.間址方式不能訪問(wèn)SFR單元。如下面的程序是錯(cuò)誤的:5. MOV R1 , #80H6. MOV A , R1 7. 8.因?yàn)?0H為SFR的物理地址 9.對(duì)于SFR只能采用直接尋址的方式訪問(wèn)。3.2 尋址方式尋址方式5 5、基址寄存器加變址寄存器間接尋址、基址寄存器加變址寄存器間接尋址基址寄存器加變址寄存器間接尋址: 以DPTR或PC作基址寄存器,A作變址寄存器兩者相加形成操作數(shù)地址。尋址空間:程序存儲(chǔ)器(A+DPTR、A+PC)指令形式:操作碼MOVC A,A

21、+DPTR例:操作碼PCPCDPTR2400HA 0FH93HROM 240FH設(shè)(A)= 0FH (DPTR)= 2400H ALU“讀”PSEN“讀”MOVC A,A+DPTR6、相對(duì)尋址程序存儲(chǔ)器尋址空間:指令的三種形式:操作碼 rel操作碼 直接地址 rel操作碼 立即數(shù) rel相對(duì)尋址以當(dāng)前PC值為基準(zhǔn)地址,加上指令的偏移量“rel”,結(jié)果為目標(biāo)地址。rel為有符號(hào)補(bǔ)碼數(shù),范圍:-128+127一般為雙字節(jié)或三字節(jié)指令尋址指令執(zhí)行地址目標(biāo)地址JNZ rel例:; 累加器A不等零則轉(zhuǎn)移 設(shè):rel=23H2025H2002H2001H2000H ROM70H23H下一條指令.操作碼PC

22、PCPC(PC)=2002Hrel=23H修正后轉(zhuǎn)移目標(biāo)地址D(PC) = 2025HPCALU偏移量(PC) = 2 0 0 2 HRel = 2 3 H)005202HD =2025H2112H2111H2110H ROMDFHF2H下一條指令.操作碼PCPCPC(PC)=2112Hrel=F2H修正后轉(zhuǎn)移目標(biāo)地址 D(PC) = 2104HALU偏移量例:DJNZ R7,rel ;(R7) 1不為“0”則轉(zhuǎn)PC2104H指 令(PC) = 2 1 1 2 HRel = F 2 H)FF4012HD =7 7、位尋址、位尋址尋址空間:片內(nèi)RAM的20H2FH字節(jié)地址位地址:00H7FH 共

23、128位SFR中12個(gè)能被8整除的字節(jié)地址位地址共93位 MOV C,7FHMOV C,2FH.7 以訪問(wèn)觸發(fā)器的方式,對(duì)內(nèi)部RAM、SFR的位地址空間進(jìn)行訪問(wèn),稱為位尋址。位地址用于布爾指令。共221位尋址方式與相應(yīng)的尋址空間尋址方式與相應(yīng)的尋址空間小結(jié):小結(jié):寄存器R0R7,A,BCY,DPTR片內(nèi)內(nèi)RAM的低128字節(jié)特殊功能寄存器SFR直接尋址direct寄存器間址R0, R1, SP R0, R1 ,DPTR片內(nèi)RAM、片外RAM與I/O口立即數(shù)#data 程序存儲(chǔ)器程序存儲(chǔ)器基址加變址A+DPTR,A+PC程序存儲(chǔ)器相對(duì)尋址PC+rel位尋址片內(nèi)RAM 20H2FH部分SFRbit

24、利用的變量 使用的空間方 式3.3 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令數(shù)據(jù)傳送類指令共29條,它是指令系統(tǒng)中最活躍、使用最多的一類指令。這類指令的操作是把源操作數(shù)傳送到目的操作數(shù),即指令執(zhí)行后目的操作數(shù)改為源操作數(shù), 而源操作數(shù)保持不變。若要求在進(jìn)行數(shù)據(jù)傳送時(shí),不丟失目的操作數(shù),則可以用交換型傳送指令。數(shù)據(jù)傳送類指令不影響進(jìn)位標(biāo)志CY、半進(jìn)位標(biāo)志AC和溢出標(biāo)志OV,但當(dāng)傳送或交換數(shù)據(jù)后影響累加器A的值時(shí),奇偶標(biāo)志P的值則按A的值重新設(shè)定。數(shù)據(jù)傳送類(數(shù)據(jù)傳送類(2929條)條)用到的指令助記符有5種:片內(nèi)傳送 MOV片外傳送 MOVX查表傳送 MOVC累加器交換 XCH、XCHD、SWAP堆棧操作 PU

25、SH、POP1、 MOV類傳送指令源操作數(shù)目的操作數(shù)都在單片機(jī)內(nèi)部MCS-51內(nèi)部RAM只有128B內(nèi)部RAM區(qū)分為三部分地址:00H7FH內(nèi)部RAM7FH00HSFR特殊功能寄存器FFH80H7FH00H位尋址區(qū)2FH20H工作寄存器區(qū)1FH00H7FH30H數(shù)據(jù)緩沖區(qū)80個(gè)字節(jié)為真正的 RAM16個(gè)字節(jié)分為128個(gè)RAM位32個(gè)字節(jié)分為四個(gè)工作寄存器區(qū)每個(gè)區(qū)8個(gè)工作寄存器1、MOV類傳送指令源操作數(shù)目的操作數(shù)都在單片機(jī)內(nèi)類傳送指令源操作數(shù)目的操作數(shù)都在單片機(jī)內(nèi)部部格式: MOV 目的字節(jié),源字節(jié)功能:把源字節(jié)內(nèi)容送目的字節(jié),源字節(jié)內(nèi)容不變以累加器以累加器A A為目的字節(jié)的傳送:為目的字節(jié)的

26、傳送: 立即數(shù)送累加器MOV A,#data74H立即數(shù) 機(jī)器碼;立即數(shù)#data送累加器A 雙字節(jié)指令,機(jī)器碼的第一字節(jié)為74H,第二字節(jié)為立即數(shù) 寄存器內(nèi)容送累加器MOV A,Rn (n=07)單字節(jié)指令,機(jī)器碼相應(yīng)為E8H、E9H、EFH工作寄存器組的選擇由狀態(tài)字中的RS0、RS1確定 內(nèi)RAM或SFR內(nèi)容送累加器E8H EFH機(jī)器碼MOV A,direct雙字節(jié)指令,機(jī)器碼的第一字節(jié)為E5H,第二字節(jié)為直接尋址字節(jié)的直接地址E5H直接地址機(jī)器碼;Rn的內(nèi)容送累加器A;以direct為地址的單元的內(nèi)容送累加器A 內(nèi)RAM內(nèi)容送累加器MOV A,Ri (i=0、1)單字節(jié)指令,機(jī)器碼相應(yīng)為

27、E6H、E7H;以Ri內(nèi)容為地址單元中的數(shù)送累加器AE6H E7H機(jī)器碼以以RnRn為目的字節(jié)的傳送:為目的字節(jié)的傳送: 立即數(shù)送寄存器MOV Rn,#data (n=07) 78H7FH 立即數(shù) 機(jī)器碼;立即數(shù)#data送累加器 Rn雙字節(jié)指令,機(jī)器碼的第一字節(jié)為78H7FH,第二字節(jié)為立即數(shù) 累加器內(nèi)容送寄存器RnMOV Rn ,A (n=07);累加器A的內(nèi)容送Rn單字節(jié)指令,機(jī)器碼相應(yīng)為F8HFFHF8H FFH機(jī)器碼 內(nèi)RAM或SFR內(nèi)容送寄存器RnMOV Rn ,direct (n=07)注意:不允許MOV Rn, Rn A8HAFH直接地址 機(jī)器碼;以direct為地址的單元的內(nèi)

28、容送寄存器Rn 立即數(shù)送內(nèi)RAM或SFRMOV direct,#data;立即數(shù)#data送以direct為地址的單元三字節(jié)指令直接地址立即數(shù)75H機(jī)器碼 累加器內(nèi)容送內(nèi)RAM或SFRMOV direct,A;累加器送以direct為地址的單元F5H直接地址機(jī)器碼二字節(jié)指令直接地址為目的字節(jié)的傳送:直接地址為目的字節(jié)的傳送: 寄存器內(nèi)容送內(nèi)RAM或SFRMOV direct,Rn (n=07);寄存器Rn內(nèi)容送以direct為地址的單元二字節(jié)指令88H8FH直接地址機(jī)器碼 內(nèi)RAM或SFR之間直接傳送MOV direct1, direct2 源地址目的地址85H機(jī)器碼;內(nèi)RAM或SFR任意兩個(gè)

29、單元之間傳送數(shù)據(jù)三字節(jié)指令 內(nèi)RAM數(shù)據(jù)送內(nèi)RAM或SFRMOV direct, Ri(i=0、1)二字節(jié)指令86H87H直接地址機(jī)器碼;以Ri內(nèi)容為地址單元中的數(shù)送內(nèi)RAM或SFR 立即數(shù)送內(nèi)RAMMOV Ri ,#data (i=0、1);立即數(shù)#data送以Ri內(nèi)容為地址的單元76H77H 立即數(shù)機(jī)器碼二字節(jié)指令 累加器內(nèi)容送內(nèi)RAMMOV Ri ,A (i=0、1);累加器內(nèi)容送以Ri內(nèi)容為地址的單元單字節(jié)指令F6H F7H機(jī)器碼 內(nèi)RAM或SFR數(shù)據(jù)送內(nèi)RAMMOV Ri ,direct (i=0、1)二字節(jié)指令 A6HA7H直接地址 機(jī)器碼;以direct為地址的單元內(nèi)容送Ri內(nèi)容

30、為地址的單元 16位立即數(shù)傳送指令MOV DPTR,#data16;16位立即數(shù)送DPTR中,設(shè)置地址指針。三字節(jié)指令 立即數(shù)高8位 立即數(shù)低8位 90H 機(jī)器碼內(nèi)部數(shù)據(jù)傳送類指令的使用 1,不能根據(jù)主觀意愿去“創(chuàng)造”指令。 例如:要將R0中的數(shù)據(jù)傳送到R1中。如何使用指令去完成上面的操作? MOV R1,R0 是否可以?回答是否定的!因?yàn)樵贛CS-51的指令系統(tǒng)中沒有此條指令!只能使用:MOV A,R0 或: MOV 01h,00h MOV R1,A 因此,必須從51的指令表中選擇使用指令。3.3 89C51單片機(jī)的指令系統(tǒng)單片機(jī)的指令系統(tǒng)內(nèi)部數(shù)據(jù)傳送類指令方式圖累加器Adirect直接尋址

31、Ri間址Rn寄存器Data立即數(shù)3.3 89C51單片機(jī)的指令系統(tǒng)單片機(jī)的指令系統(tǒng) 2,以累加器A為目的寄存器的傳送指令會(huì)影響PSW中的 奇偶位P,而其余的指令對(duì)PSW均無(wú)影響。 3,會(huì)正確地估計(jì)指令的字節(jié)。凡是包含有立即數(shù)、直接地址的指令,都應(yīng)當(dāng)在原有的基礎(chǔ)上加1或2。 【舉例】:mov a ,Ri ( )個(gè)字節(jié) mov a ,direct ( )個(gè)字節(jié) mov direct ,data ( )個(gè)字節(jié) mov direct2 ,direct1 ( )個(gè)字節(jié)3.3 89C51單片機(jī)的指令系統(tǒng)單片機(jī)的指令系統(tǒng)內(nèi)部傳送類指令舉例 試編出把30h和40h單元內(nèi)容進(jìn)行交換。MOV A,30H ;(30

32、h) AMOV 30H,40H ;(40h) 30h MOV 40H,A ; A 40h 累加器A30H40H3.3 89C51單片機(jī)的指令系統(tǒng)單片機(jī)的指令系統(tǒng) MOV類傳送指令小結(jié)類傳送指令小結(jié)MOV A,#data立即數(shù)送累加器MOV A,Rn寄存器內(nèi)容送累加器MOV A,direct直接地址內(nèi)容送累加器MOV A,Ri內(nèi)RAM內(nèi)容送累加器MOV Rn,# data立即數(shù)送寄存器MOV Rn ,A 累加器內(nèi)容送寄存器RnMOV Rn ,direct直接地址內(nèi)容送寄存器Rn指令助記符說(shuō) 明字 節(jié) 2121212MOV 片內(nèi)傳送指令 MOV MOV類傳送指令小結(jié)類傳送指令小結(jié)MOV direc

33、t1,direct2內(nèi)RAM或SFR之間直接傳送MOV direct, Ri內(nèi)RAM數(shù)據(jù)送內(nèi)RAM或SFRMOV direct,#data立即數(shù)送內(nèi)RAM或SFRMOV direct,A累加器內(nèi)容送內(nèi)RAM或SFRMOV direct,Rn寄存器內(nèi)容送內(nèi)RAM或SFR指令助記符說(shuō) 明字節(jié)32232MOV Ri ,#data立即數(shù)送內(nèi)RAMMOV Ri ,A累加器內(nèi)容送內(nèi)RAMMOV Ri ,direct內(nèi)RAM數(shù)據(jù)送內(nèi)RAM或SFRMOV DPTR,#data1616位立即數(shù)傳送指令2123MOV 片內(nèi)傳送指令2、MOVX類傳送指令類傳送指令累加器A與外部RAM傳送數(shù)據(jù)用 MOVX 外部RAM

34、送累加器AMOVX A,Ri (i=0、1)單字節(jié)指令,機(jī)器碼相應(yīng)為E2H、E3H;以Ri內(nèi)容為外部RAM地址的單元中的數(shù)送AE2H E3H機(jī)器碼 累加器內(nèi)容送外RAMMOVX Ri ,A (i=0、1);累加器內(nèi)容送以Ri內(nèi)容為地址的外部RAM單元單字節(jié)指令F2H F3H機(jī)器碼RDWR 外部RAM送累加器AMOVX A,DPTR單字節(jié)指令,機(jī)器碼相應(yīng)為E0H;以DPTR內(nèi)容為地址的外部RAM單元中的數(shù)送AE0H機(jī)器碼 累加器內(nèi)容送外RAMMOVX DPTR ,A;累加器內(nèi)容送以DPTR內(nèi)容為地址的外部RAM單元單字節(jié)指令,機(jī)器碼相應(yīng)為F0HF0H機(jī)器碼RDWR設(shè)外部RAM2000H單元中有一

35、個(gè)數(shù)x,且DPTR中已存有該數(shù)地址2000H.則CPU 執(zhí)行外部ROM中的指令:MOVX A,DPTR ;將外RAM的x送A /WR /RD P2口MCS-51 P0口 ALED7D0/CP/WR/RDA15A8 A7A064KRAMD0D7S1S2S6S5S4S3S1S2S6S5S4S3ALEPsenA15-A8(PC)A15-A8(DPH)A7-A0指令A(yù)7-A0數(shù)據(jù)RDP2口P0口選中外部RAM讀外部數(shù)據(jù)存儲(chǔ)器RAM的指令時(shí)序 MOVX類傳送指令小結(jié)類傳送指令小結(jié) 指令助記符說(shuō) 明字 節(jié) 1111MOVX A,Ri外部RAM送累加器AMOVX Ri ,A累加器內(nèi)容送外RAMMOVX A,

36、DPTR外部RAM送累加器AMOVX DPTR ,A累加器內(nèi)容送外RAMMOVX 片外傳送指令例:將片外RAM 120H單元的內(nèi)容傳送到片外RAM 地址為78H的單元。MOV DPTR,#0120HMOVX A,DPTRMOV R0,#78HMOVX R0,A 例:將片內(nèi)RAM 12H單元的內(nèi)容傳送到片內(nèi)RAM 地址為78H的單元。MOV 78H,12H;外部RAM送累加器A;累加器內(nèi)容送外RAM3、MOVC類傳送指令類傳送指令MOVC類傳送指令,均為基址加變址寄存器尋址:MOVC A,A+DPTR ;以DPTR作基址寄存器,A作變址寄存器,兩者;相加形成16位ROM地址,將該單元內(nèi)容讀入A單

37、字節(jié)指令,機(jī)器碼相應(yīng)為93H93H機(jī)器碼 以以DPTR作基址加變址尋址作基址加變址尋址長(zhǎng)查表指令16位PSENMOVC A,A+PC單字節(jié)指令,機(jī)器碼相應(yīng)為83H83H機(jī)器碼 以PC作基址加變址尋址 ;取指后PC增“1”,以當(dāng)前PC作基址,A作變址,兩者;相加形成16位ROM地址,將該單元內(nèi)容讀入A短查表指令PSEN MOVC類傳送指令小結(jié)類傳送指令小結(jié)指令助記符說(shuō) 明字 節(jié) 11MOVC A,A+DPTRMOVC A,A+PC以DPTR作基址加變址尋址以PC作基址加變址尋址MOV DPTR,#2000HMOVC A,A+DPTR2004H2003H2002H2001H2000H2008H20

38、09H2005H2006H2007H存儲(chǔ)器00H01H04H09H0AH19H24H31H40H51H例:在外部ROM中存放09的平方值。根據(jù)累加器 A中的數(shù)( 09 ),查找對(duì)應(yīng)的平方值。用DPTR作基址寄存器指向表格的首地址用A作變址寄存器實(shí)際上A中的值是表格中的第幾項(xiàng)表格首址操作碼PCPCDPTR2000HA 03H 09H MOVC A,A+DPTR 93HROM00H2000H01H04H09H2001H2002H2003H;設(shè)(A)= 03H,查“3”的平方ALU用PC作基址寄存器,它并不指向表格首址(本章難點(diǎn));是PC當(dāng)前值與所查表格首址之間的距離;即(PC)+ #data TA

39、BBEL表格首址設(shè)(A)= 03H,是表格中的第3項(xiàng)ADD A,#dataMOVC A,A+PC;#data是變址調(diào)整值TABBEL: DB 00HDB 01HDB 04HDB 09H2000H12HA PCPC2003H用PC作基址寄存器,它并不指向表格首址(本章難點(diǎn));是PC當(dāng)前值與所查表格首址之間的距離;即(PC)+ #data TABBEL表格首址設(shè)(A)= 03H,是表格中的第3項(xiàng);單字節(jié)指令,設(shè)指令在ROM中的地址為1FF0HADD A,#dataMOVC A,A+PC2000H1FF1H-000FH;#data是變址調(diào)整值#dataPC當(dāng)前值表格首址TABBEL:DB 00HDB

40、 01HDB 04HDB 09H2000H12HA PCPC2003HTABBELPCPC操作碼MOVC A,A+PC 93HROM00H2000H01H04H09H2001H2002H2003H1FF0H1FF1H(PC)=1FF1HA12H09H ;查“3”的平方ALUTABBEL在外部ROM中存放09的共陰字形碼。根據(jù)累加器A中的數(shù)( 09 ),查找對(duì)應(yīng)的共陰字形碼。 MOV DPTR,#DTAB MOVC A,A+DPTR DTAB:DB 3FH,06H,5BH,4FH DB 66H,6DH,7DH,07H DB 7FH,6FH 8段排列順序 hgfedcba存儲(chǔ)器3FH06H5BH4

41、FH66H6DH7DH07H7FH6FHDTABhgfedcba4、 XCH、XCHD、SWAP類傳送指令類傳送指令 寄存器內(nèi)容與累加器內(nèi)容交換XCH A,Rn (n=07)C8H CFH機(jī)器碼;(A) (Rn) 單字節(jié)指令 內(nèi)RAM或SFR內(nèi)容與累加器內(nèi)容交換XCH A,direct (n=07);(A) (direct) 雙字節(jié)指令C5H直接地址機(jī)器碼 內(nèi)RAM內(nèi)容與累加器內(nèi)容交換XCH A,Ri (i=0,1);(A) ((Ri)) 單字節(jié)指令C6H C7H機(jī)器碼 內(nèi)RAM內(nèi)容低4位與累加器低4位內(nèi)容交換XCHD A,Ri (i=0,1);(A30) ((Ri) 30) 單字節(jié)指令D6H

42、 D7H機(jī)器碼A(Ri) 累加器A高4位與低4位交換SWAP A;(A30) (A 74) 單字節(jié)指令C4H機(jī)器碼A 交換類傳送指令小結(jié)交換類傳送指令小結(jié)指令助記符說(shuō) 明字節(jié)12111XCH A,RnXCH A,direct寄存器內(nèi)容與累加器內(nèi)容交換直接地址內(nèi)容與累加器內(nèi)容交換XCH A,RiXCHD A,Ri內(nèi)RAM內(nèi)容與累加器內(nèi)容交換內(nèi)RAM內(nèi)容低4位與累加器低4位交換SWAP A累加器A高4位與低4位交換5 5、 堆棧操作指令堆棧操作指令 進(jìn)棧指令PUSH directC0H直接地址機(jī)器碼;SP自動(dòng)增“1”,(SP) (SP) +1;direct地址單元的內(nèi)容壓入SP指向的單元雙字節(jié)指令

43、 出棧指令POP directD0H直接地址機(jī)器碼;SP自動(dòng)減“1”,(SP) (SP) -1;SP指向的單元內(nèi)容彈出到以direct為地址的單元雙字節(jié)指令SPSP例:堆棧操作 設(shè)(A)= 55H,(B)= 3FH建立堆棧壓入操作彈出操作 60H61H62H63H64H 55H 3FHSPMOV SP, #60HPUSH APUSH BPOP PSWSP 結(jié)果:PSW的內(nèi)容3FH,SP的內(nèi)容為61HPSW3FH3.4算術(shù)、邏輯運(yùn)算及移位指令 這類指令有49條。一個(gè)共同的特點(diǎn):都要使用累加器A來(lái)存放操作數(shù),其結(jié)果也是存放在A中。 這類指令的運(yùn)算結(jié)果對(duì)PSW的影響,尤其是Cy、OV(為最高位進(jìn)位異

44、或次高位進(jìn)位)、AC以及P(與A中1的個(gè)數(shù)一起保證為偶數(shù))的變化。一、算術(shù)運(yùn)算類(一、算術(shù)運(yùn)算類(2424條)條)用到的指令助記符有8種:加法指令 ADD、ADDC、INC、DA減法指令 SUBB,DEC乘除指令 MUL,DIV算術(shù)運(yùn)算類指令執(zhí)行結(jié)果影響標(biāo)志位:CY、AC、OV1、不帶進(jìn)位加ADD注意:四個(gè)指令被加數(shù)都在累加器中 累加器內(nèi)容加立即數(shù)ADD A,#data;A (A)+ #data雙字節(jié)指令24H立即數(shù)機(jī)器碼 累加器內(nèi)容加寄存器內(nèi)容ADD A,Rn(n=07);A (A)+ (Rn)單字節(jié)指令28H 2FH機(jī)器碼 累加器內(nèi)容加內(nèi)RAM內(nèi)容ADD A,Ri(i=0,1);A (A)

45、+ (Ri)單字節(jié)指令26H 27H機(jī)器碼 累加器內(nèi)容加內(nèi)RAM內(nèi)容或SFRADD A,direct;A (A)+ (direct)雙字節(jié)指令25H直接地址機(jī)器碼ADD類指令小結(jié)類指令小結(jié)指令助記符說(shuō) 明字 節(jié) 2112ADD A,#dataADD A,Rn立即數(shù)加到累加器寄存器內(nèi)容加到累加器ADD A,RiADD A,direct內(nèi)RAM內(nèi)容加到累加器直接地址內(nèi)容加到累加器2、帶進(jìn)位加ADDC注意:CY在PSW里 累加器內(nèi)容加立即數(shù) 加進(jìn)位位ADDC A,#data;A (A)+ #data+CY雙字節(jié)指令34H立即數(shù)機(jī)器碼 累加器內(nèi)容加寄存器內(nèi)容加進(jìn)位位ADDC A,Rn(n=07);A

46、(A)+ (Rn) +CY單字節(jié)指令38H 3FH機(jī)器碼 累加器內(nèi)容加內(nèi)RAM內(nèi)容加進(jìn)位位ADDC A,Ri(i=0,1);A (A)+ (Ri)+CY單字節(jié)指令36H 37H機(jī)器碼 累加器內(nèi)容加內(nèi)RAM內(nèi)容或SFR加進(jìn)位位ADDC A,direct;A (A)+ (direct) +CY雙字節(jié)指令35H直接地址機(jī)器碼指令符助記說(shuō) 明字 節(jié) 2112ADDC A,#dataADDC A,Rn立即數(shù)和進(jìn)位加到累加器寄存器內(nèi)容和進(jìn)位加到累加器ADDC A,RiADDC A,direct內(nèi)RAM內(nèi)容和進(jìn)位加到累加器直接地址內(nèi)容和進(jìn)位加到累加器 ADDC類指令小結(jié)無(wú)符號(hào)數(shù)相加:若和數(shù)大于255,則CY

47、=1,否則CY=0用于多字節(jié)無(wú)符號(hào)數(shù)相加 試分析執(zhí)行下面的指令后,程序狀態(tài)字PSW中 CY,AC,OV的內(nèi)容是什么?MOV A,#53HADD A,R0 MOV R0,#76 HD7D6D5D4 D3D2D1D0 0 1 0 1 0 0 1 1 (53H) 0 1 1 1 0 1 1 0 (76H) 10010011 (C9H)CY=0AC=0OV= C6 C7=1 +此時(shí)C6 =1、 C7=0 則+3、增量INC 累加器內(nèi)容加 “1”INC A;A (A)+ 1單字節(jié)指令 寄存器內(nèi)容加 “1”INC Rn;A (Rn)+1 單字節(jié)指令MOV R1,#20HINC R108H 0FH機(jī)器碼04

48、H機(jī)器碼 內(nèi)RAM或SFR內(nèi)容加 “1”INC direct;(Ri) (Ri)+1單字節(jié)指令06H 07H機(jī)器碼 內(nèi)RAM內(nèi)容加 “1”INC Ri ;direct (direct)+1雙字節(jié)指令05H直接地址機(jī)器碼 數(shù)據(jù)指針DPTR內(nèi)容加 “1”INC DPTR; DPTR (DPTR)+1單字節(jié)指令A(yù)3H機(jī)器碼 注意: INC 指令中除 INC A 指令影響 P 標(biāo)志位,其余指令不影響任何標(biāo)志位 INC類指令小結(jié)指令助記符說(shuō) 明字節(jié) 1121INC AINC Rn累加器內(nèi)容加“1”寄存器內(nèi)容加“1INC direct內(nèi)RAM或SFR內(nèi)容加“1INC Ri內(nèi)RAM內(nèi)容加“1INC DPTR

49、數(shù)據(jù)指針DPTR內(nèi)容加“114、十進(jìn)制調(diào)整指令DA A;對(duì)累加器A,作BCD碼加法后進(jìn)行“過(guò)9補(bǔ)6”調(diào)整若(A30)9 AC=1 則(A30) (A30)+06H若(A74)9 CY=1則(A74) (A74)+60H注意:DA 指令不能對(duì)BCD碼減法的結(jié)果進(jìn)行調(diào)整D4H機(jī)器碼單字節(jié)指令BCDH BCDLA例 設(shè)(A)=37H;(R3)=36H,執(zhí)行下面的程序: 0 0 1 1 0 1 1 1 (37H) 0 0 1 1 0 1 1 0 (36H) (6DH) 0 1 1 0 1 1 0 1 過(guò)“9” 0 0 0 0 0 1 1 0 0 1 1 1 0 0 1 1 補(bǔ)“6”(73H);(A)

50、= 6DH;(A) = 73H 0 1 1 1 0 0 1 1 (73H) 1 0 0 1 1 0 0 1 (99H) 1 0 0 0 0 1 1 0 0 (0CH) CY 0 1 1 0 0 1 1 0 0 1 1 1 0 0 1 0 (72H);(A) = 0CH CY=1;(A) = 72H過(guò)“9”補(bǔ)“6”1 1 0 111 1 0 0ADD A,R3DA AADD A,#99HDA A“+ 99”就等于減“- 1”互補(bǔ)DA A 只能跟在加法指令之后5、減法指令SUBB 累加器減立即數(shù)和借位標(biāo)志SUBB A,#data雙字節(jié)指令94H立即數(shù)機(jī)器碼 累加器減寄存器內(nèi)容和借位標(biāo)志SUBB A

51、,Rn(n=07)單字節(jié)指令98H 9FH機(jī)器碼;A (A)- #data-CY;A (A)- (Rn) -CY 累加器減RAM內(nèi)容和借位標(biāo)志SUBB A,Ri(i=0,1)單字節(jié)指令96H 97H機(jī)器碼 累加器內(nèi)容減內(nèi)RAM內(nèi)容或SFR和借位標(biāo)志SUBB A,direct 雙字節(jié)指令95H直接地址機(jī)器碼;A (A)- (Ri)-CY;A (A)- (direct) -CY SUBB類指令小結(jié)指令助記符說(shuō) 明字 節(jié) 2112SUBB A,#dataSUBB A,RnSUBB A,RiSUBB A,direct累加器減立即數(shù)和借位累加器減寄存器內(nèi)容和借位累加器減RAM內(nèi)容和借位累加器減直接地址內(nèi)

52、容和借位6、減量 DEC 累加器內(nèi)容減“1”DEC A;A (A)- 1單字節(jié)指令 寄存器內(nèi)容減“1DEC Rn;Rn (Rn)-1單字節(jié)指令18H 1FH機(jī)器碼14H機(jī)器碼 內(nèi)RAM或SFR內(nèi)容減“1DEC direct;(Ri) (Ri)-1單字節(jié)指令注意:DPTR沒有減一指令16H 17H機(jī)器碼 內(nèi)RAM內(nèi)容減“1DEC Ri ;direct (direct)-1雙字節(jié)指令15H直接地址機(jī)器碼 DEC 類指令小結(jié)指令助記符說(shuō) 明字 節(jié) 1121DEC ADEC Rn累加器內(nèi)容減“1”寄存器內(nèi)容減“1”DEC direct內(nèi)RAM或SFR內(nèi)容減“1”DEC Ri內(nèi)RAM內(nèi)容減“1”7、MU

53、LMUL A BDIV A BA4H機(jī)器碼單字節(jié)指令;執(zhí)行 (A)(B) (B A) 的操作 CY= 08、DIV單字節(jié)指令84H機(jī)器碼;執(zhí)行 (A)/(B) 后,商 A 余 BCY= 0二、邏輯運(yùn)算類(24條)用到的指令助記符有9種:包括與、或、異或、清除、求反、移位等操作ANL、ORL、XRL、CLR、CPL、RL、RLC、RR、RRC1、邏輯與ANL(6條) 累加器內(nèi)容邏輯與立即數(shù)ANL A,#data;A (A)#data雙字節(jié)指令MOV A,#10101111BANL A,#0FH54H立即數(shù)機(jī)器碼 累加器內(nèi)容邏輯與寄存器內(nèi)容ANL A,Rn(n=07);A (A)(Rn)單字節(jié)指令

54、58H 5FH機(jī)器碼 累加器內(nèi)容邏輯與內(nèi)RAM內(nèi)容ANL A,Ri(i=0,1);A (A) (Ri)單字節(jié)指令56H 57H機(jī)器碼 累加器內(nèi)容邏輯與內(nèi)RAM內(nèi)容或SFRANL A,direct;A (A) (direct)雙字節(jié)指令55H直接地址機(jī)器碼 累加器內(nèi)容邏輯與內(nèi)RAM或SFRANL direct,A52H直接地址機(jī)器碼二字節(jié)指令;direct (direct) A 立即數(shù)邏輯與RAM或SFRANL direct,#data三字節(jié)指令直接地址立即數(shù)53H 機(jī)器碼;direct (direct)#data ANL 類傳送指令小結(jié)ANL A,#data立即數(shù)邏輯與累加器ANL A,Rn寄

55、存器內(nèi)容邏輯與累加器ANL A,direct直接地址內(nèi)容邏輯與累加器ANL A,Ri內(nèi)RAM內(nèi)容邏輯與累加器指令助記符說(shuō) 明字 節(jié) 2121ANL direct,AANL direct,#data累加器邏輯與內(nèi)RAM或SFR立即數(shù)邏輯與RAM或SFR23讀修改寫2、邏輯或 ORL(6條) 累加器內(nèi)容邏輯或立即數(shù)ORL A,#data;A (A)#data雙字節(jié)指令44H立即數(shù)機(jī)器碼 累加器內(nèi)容邏輯或寄存器內(nèi)容ORL A,Rn(n=07);A (A) (Rn)單字節(jié)指令48H 4FH機(jī)器碼 累加器內(nèi)容邏輯或內(nèi)RAM內(nèi)容ORL A,Ri(i=0,1);A (A) (Ri)單字節(jié)指令46H 47H機(jī)

56、器碼 累加器內(nèi)容邏輯或內(nèi)RAM內(nèi)容或SFRORL A,direct;A (A) (direct)雙字節(jié)指令45H直接地址機(jī)器碼 累加器內(nèi)容邏輯或內(nèi)RAM或SFRORL direct,A42H直接地址機(jī)器碼二字節(jié)指令;direct (direct) (A) 立即數(shù)邏輯或RAM或SFRORL direct,#data三字節(jié)指令直接地址立即數(shù)43H 機(jī)器碼;direct (direct)#data ORL 類傳送指令小結(jié)ORL A,#data立即數(shù)邏輯或累加器ORL A,Rn寄存器內(nèi)容邏輯或累加器ORL A,direct直接地址內(nèi)容邏輯或累加器ORL A,Ri內(nèi)RAM內(nèi)容邏輯或累加器指令符號(hào)說(shuō) 明字

57、 節(jié) 2121ORL direct,AORL direct,#data累加器邏輯或內(nèi)RAM或SFR立即數(shù)邏輯或RAM或SFR23讀修改寫3、邏輯異或XRL(6條) 累加器內(nèi)容邏輯異或立即數(shù)XRL A,#data雙字節(jié)指令64H立即數(shù)機(jī)器碼 累加器內(nèi)容邏輯異或寄存器內(nèi)容XRL A,Rn(n=07)單字節(jié)指令68H 6FH機(jī)器碼;A (A) #data +;A (A) (Rn) + 累加器內(nèi)容邏輯異或內(nèi)RAM內(nèi)容XRL A,Ri(i=0,1)單字節(jié)指令66H 67H機(jī)器碼 累加器內(nèi)容邏輯異或內(nèi)RAM內(nèi)容或SFRXRL A,direct雙字節(jié)指令65H直接地址機(jī)器碼;A (A) (Ri) +;A (

58、A) (direct) + 累加器內(nèi)容邏輯異或內(nèi)RAM或SFRXRL direct,A62H直接地址機(jī)器碼二字節(jié)指令 立即數(shù)邏輯異或RAM或SFRXRL direct,#data三字節(jié)指令直接地址立即數(shù)63H 機(jī)器碼;direct (direct) (A) +;direct (direct) #data + XRL類傳送指令小結(jié)XRL A,# data立即數(shù)邏輯異或累加器XRL A,Rn寄存器內(nèi)容邏輯異或累加器XRL A,direct直接地址內(nèi)容邏輯異或累加器XRL A,Ri內(nèi)RAM內(nèi)容邏輯異或累加器指令助記符說(shuō) 明字 節(jié) 2121XRL direct,AXRL direct,#data累加器

59、邏輯異或內(nèi)RAM或SFR立即數(shù)邏輯異或RAM或SFR23讀修改寫例:根據(jù)累加器中40的狀態(tài)修改P1端口位40的狀態(tài)ANL A,#00011111BANL P1,#11100000BORL P1,A;A屏蔽前3位,保留后5位;A的后5位是“1”, 使P1口 相應(yīng)位置“1”,P1前3位不變;P1屏蔽后5位,保留前3位僅修改了 P1 口的后 5 位“讀”“修改”“寫”4 累加器清除與求反指令(2條) 累加器A清零CLR A單字節(jié)指令;A 00HE4H機(jī)器碼 累加器A按位取反CPL AF4H機(jī)器碼;A (A)單字節(jié)指令例: 給出下面程序分析執(zhí)行結(jié)果CLR ACPL A;(A)= 00H;(A)= FF

60、H4 移位指令(4條) 累加器內(nèi)容循環(huán)左移一位RL AA7A0單字節(jié)指令23H機(jī)器碼 累加器內(nèi)容連同進(jìn)位標(biāo)志循環(huán)左移一位A7A0單字節(jié)指令RLC A33H機(jī)器碼CY 累加器內(nèi)容循環(huán)右移一位RR AA7A0單字節(jié)指令03H機(jī)器碼 累加器內(nèi)容連同進(jìn)位標(biāo)志循環(huán)右移一位 A7A0單字節(jié)指令RRC A13H機(jī)器碼CY 移位指令小結(jié)指令助記符說(shuō) 明字 節(jié) 1111RL ARLC ARR ARRC A累加器循環(huán)左移累加器連同進(jìn)位循環(huán)左移累加器循環(huán)右移累加器連同進(jìn)位循環(huán)右移11CLR ACPL A累加器A清零累加器A按位取反 累加器清除與求反指令小結(jié)例:設(shè)(A)=5AH、CY=1RL ARLC ARR ARR

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論