第3章MCS-51指令系統(tǒng)_第1頁
第3章MCS-51指令系統(tǒng)_第2頁
第3章MCS-51指令系統(tǒng)_第3頁
第3章MCS-51指令系統(tǒng)_第4頁
第3章MCS-51指令系統(tǒng)_第5頁
已閱讀5頁,還剩139頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第3章MCS-51指令系統(tǒng)第3章 MCS-51指令系統(tǒng) 實(shí)訓(xùn)實(shí)訓(xùn)3 指令的應(yīng)用指令的應(yīng)用 3.1 簡介簡介 3.2 尋址方式尋址方式 3.3 指令系統(tǒng)指令系統(tǒng) 本章小結(jié)本章小結(jié) 習(xí)題習(xí)題3 第3章MCS-51指令系統(tǒng)實(shí)訓(xùn)實(shí)訓(xùn)3 指指令令的的應(yīng)應(yīng)用用1. 實(shí)訓(xùn)目的實(shí)訓(xùn)目的(1) 掌握指令格式及表示方法:助記符表示和機(jī)器碼表示。(2) 了解人工匯編與機(jī)器匯編的方法。(3) 了解尋址方式的概念。(4) 掌握常用指令的功能及應(yīng)用。2. 實(shí)訓(xùn)設(shè)備和器件實(shí)訓(xùn)設(shè)備和器件(1) 實(shí)訓(xùn)設(shè)備:單片機(jī)開發(fā)系統(tǒng)、微機(jī)等。(2) 實(shí)訓(xùn)電路:同實(shí)訓(xùn)1電路。第3章MCS-51指令系統(tǒng)3. 實(shí)訓(xùn)步驟與要求實(shí)訓(xùn)步驟與要求(1)

2、 將表3.1中的助記符指令翻譯成機(jī)器碼。(2) 將機(jī)器碼分別輸入到單片機(jī)開發(fā)系統(tǒng)中,或經(jīng)機(jī)器匯編后分別下載到單片機(jī)開發(fā)系統(tǒng)中,單步運(yùn)行,觀察并記錄實(shí)驗(yàn)板上的8個發(fā)光二極管的亮滅狀態(tài)及相關(guān)單元的數(shù)據(jù),填入表3.1中。第3章MCS-51指令系統(tǒng)表 3.1 實(shí) 驗(yàn) 表 格 題號 助記符指令 機(jī)器碼指令 檢查數(shù)據(jù) 發(fā)光二極管狀態(tài) MOV P1,#55H MOV 20H,#0F0H (20H)= MOV P1,20H MOV A,#0F0H A= MOV P1,A MOV R4,#0FH R4= MOV P1,R4 第3章MCS-51指令系統(tǒng)題號 助記符指令 機(jī)器碼指令 檢查數(shù)據(jù) 發(fā)光二極管狀態(tài) MOV

3、 20H,#0AAH (20H)= MOV R0,#20H R0= MOV P1,R0 MOV A,#55H A= MOV P1,A ANL A,#0FH A= MOV P1,A ORL A,#0F0H A= MOV P1,A CLR A A= MOV P1,A CPL A A= MOV P1,A MOV A,#01H A= MOV P1,A RL A A= MOV P1,A RL A A= MOV P1,A 第3章MCS-51指令系統(tǒng)4. 實(shí)訓(xùn)分析與總結(jié)實(shí)訓(xùn)分析與總結(jié)1) 指令形式從實(shí)訓(xùn)中可以看出,指令有兩種形式:助記符指令和機(jī)器碼指令(機(jī)器指令)。助記符指令只有翻譯成機(jī)器碼后,單片機(jī)才能直

4、接執(zhí)行。機(jī)器碼指令分為以下三種:單字節(jié)指令:機(jī)器碼只有一個字節(jié)的指令稱為單字節(jié)指令。例如單字節(jié)指令CLR A的機(jī)器碼是E4H。雙字節(jié)指令:機(jī)器碼包括兩個字節(jié)的指令稱為雙字節(jié)指令。例如雙字節(jié)指令MOV A,#55H的機(jī)器碼是74H 55H。三字節(jié)指令:機(jī)器碼包括三個字節(jié)的指令稱為三字節(jié)指令。例如三字節(jié)指令MOV P1,#55H的機(jī)器碼是75H 90H 55H。單片機(jī)指令系統(tǒng)中,大多數(shù)指令是單字節(jié)指令和雙字節(jié)指令。第3章MCS-51指令系統(tǒng)2) 指令分析(1) MOV P1,#55H:將常數(shù)55H送入P1口。在助記符指令中,常數(shù)被稱為立即數(shù)。發(fā)光二極管的狀態(tài)為立即數(shù)55H: 0 1 0 1 0 1

5、 0 1對應(yīng)P1口各位:P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0相應(yīng)的LED狀態(tài):亮 滅 亮 滅 亮 滅 亮 滅參照實(shí)訓(xùn)1的電路圖,若P1口的某一位輸出0(低電平),則經(jīng)過反相后變?yōu)楦唠娖?,由外部電源VCC驅(qū)動發(fā)光二極管處于點(diǎn)亮狀態(tài);否則,二極管處于熄滅狀態(tài)。第3章MCS-51指令系統(tǒng)(2) MOV 20H,#0F0H:將立即數(shù)0F0H送到內(nèi)部RAM的20H單元中。MOV P1,20H:將20H單元的內(nèi)容,即0F0H送到P1口。發(fā)光二極管的狀態(tài)為0F0H: 1 1 1 1 0 0 0 0P1口: P1.7 P1.6 P1.5 P1.4 P1.3 P1.2

6、P1.1 P1.0LED狀態(tài): 滅 滅 滅 滅 亮 亮 亮 亮(3) MOV A,#0F0H: 將立即數(shù)0F0H送到累加器A中。MOV P1,A:將累加器A的內(nèi)容,即0F0H送到P1口。發(fā)光二極管的狀態(tài)同(2)。第3章MCS-51指令系統(tǒng)(4) MOV R4,#0FH: 將立即數(shù)0FH送到寄存器R4中。MOV P1,R4:將寄存器R4的內(nèi)容,即0FH送到P1口。發(fā)光二極管的狀態(tài)如下:0FH: 0 0 0 0 1 1 1 1P1口: P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0LED狀態(tài): 亮 亮 亮 亮 滅 滅 滅 滅 (5) MOV 20H,#0AAH:將立

7、即數(shù)0AAH送到內(nèi)部RAM的20H單元中。 MOV R0,#20H:將立即數(shù)20H送到R0寄存器中。 MOV P1,R0:將R0所指向的20H單元的內(nèi)容,即0AAH送到P1口中。發(fā)光二極管的狀態(tài)如下:第3章MCS-51指令系統(tǒng)0AAH: 1 0 1 0 1 0 1 0P1口: P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0LED狀態(tài): 滅 亮 滅 亮 滅 亮 滅 亮(6) MOV A,#55H:將立即數(shù)55H送到累加器A中。MOV P1,A:將累加器A的內(nèi)容,即55H送到P1口。發(fā)光二極管的狀態(tài)同(1)。ANL A,#0FH:將累加器A的內(nèi)容55H與立即數(shù)0FH

8、進(jìn)行邏輯“與”操作,結(jié)果為05H,再送回累加器A中。MOV P1,A:將累加器A的內(nèi)容,即05H送到P1口。發(fā)光二極管的狀態(tài)如下:05H: 0 0 0 0 0 1 0 1P1口: P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0LED狀態(tài): 亮 亮 亮 亮 亮 滅 亮 滅第3章MCS-51指令系統(tǒng)ORL A,#0F0H:將累加器A的內(nèi)容05H與立即數(shù)0F0H進(jìn)行邏輯“或”操作,結(jié)果為0F5H,再送回累加器A中。MOV P1,A:將累加器A的內(nèi)容,即0F5H送到P1口。發(fā)光二極管的狀態(tài)如下:0F5H: 1 1 1 1 0 1 0 1P1口: P1.7 P1.6 P1

9、.5 P1.4 P1.3 P1.2 P1.1 P1.0LED狀態(tài): 滅 滅 滅 滅 亮 滅 亮 滅(7) CLR A:累加器清0。MOV P1,A:將累加器A的內(nèi)容,即00H送到P1口。發(fā)光二極管的狀態(tài)是全亮。CPL A:將A的內(nèi)容00H按位取反,結(jié)果為0FFH。MOV P1,A:將累加器A的內(nèi)容,即0FFH送到P1口。發(fā)光二極管的狀態(tài)是全滅。第3章MCS-51指令系統(tǒng)(8) MOV A,#01H:將立即數(shù)01H送到累加器A中。MOV P1,A:將累加器A的內(nèi)容,即01H送到P1口。發(fā)光二極管的狀態(tài)如下:01H: 0 0 0 0 0 0 0 1P1口: P1.7 P1.6 P1.5 P1.4

10、P1.3 P1.2 P1.1 P1.0LED狀態(tài): 亮 亮 亮 亮 亮 亮 亮 滅RL A:移位指令,將A的內(nèi)容01H循環(huán)左移一位,結(jié)果為02H。MOV P1,A:將累加器A的內(nèi)容,即02H送到P1口。發(fā)光二極管的狀態(tài)如下:02H: 0 0 0 0 0 0 1 0P1口: P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0LED狀態(tài): 亮 亮 亮 亮 亮 亮 滅 亮第3章MCS-51指令系統(tǒng)RL A:將A的內(nèi)容02H左移一位,結(jié)果為04H。MOV P1,A:將累加器A的內(nèi)容,即04H送到P1口。發(fā)光二極管的狀態(tài)如下:02H: 0 0 0 0 0 1 0 0P1口:

11、P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0LED狀態(tài): 亮 亮 亮 亮 亮 滅 亮 亮3) 現(xiàn)象分析從實(shí)訓(xùn)2中看到以下現(xiàn)象:往P1口傳送數(shù)據(jù)的指令中,數(shù)據(jù)的來源不盡相同。數(shù)據(jù)是指令的操作對象,叫做操作數(shù)。指令必須給出操作數(shù)所在的地方,才能進(jìn)行數(shù)據(jù)傳送。尋找操作數(shù)地址的方法,稱為尋址方式。下面是在實(shí)訓(xùn)中遇到的采用了不同尋址方式的指令:MOV P1,#55H ;把操作數(shù)直接寫在指令中,稱為立即數(shù)尋址第3章MCS-51指令系統(tǒng) MOV P1,20H ;把存放操作數(shù)的內(nèi)存單元的地址直接寫在指令;中,稱為直接尋址MOV P1,A ;把操作數(shù)存放在寄存器中,稱為寄存器尋

12、址MOV P1,R0 ;把存放操作數(shù)的內(nèi)存單元的地址放在寄存器;R0中,這種尋址方式稱為寄存器間接尋址除了以上4種尋址方式之外,MCS-51單片機(jī)還有變址尋址方式、相對尋址方式和位尋址方式等。思考:指出表3.1中每一條指令的尋址方式。注意:P1與寄存器R0R7、累加器A不同,它是內(nèi)部RAM單元90H的符號地址,只能作為內(nèi)存單元直接尋址。第3章MCS-51指令系統(tǒng)3.1 簡簡 介介3.1.1 指令概述指令概述3.1.2 指令格式指令格式從實(shí)訓(xùn)2中看到,不同指令翻譯成機(jī)器碼后字節(jié)數(shù)也不一定相同。按照機(jī)器碼個數(shù),指令可以分為以下三種: 操作碼70操作碼70操作碼70數(shù)據(jù)或?qū)ぶ贩绞?0數(shù)據(jù)或?qū)ぶ贩绞?

13、0數(shù)據(jù)或?qū)ぶ贩绞?0單字節(jié)指令:雙字節(jié)指令:三字節(jié)指令:第3章MCS-51指令系統(tǒng)MCS-51單片機(jī)指令系統(tǒng)包括49條單字節(jié)指令、46條雙字節(jié)指令和16條三字節(jié)指令。采用助記符表示的匯編語言指令格式如下:標(biāo)號是程序員根據(jù)編程需要給指令設(shè)定的符號地址,可有可無;標(biāo)號由18個字符組成,第一個字符必須是英文字母;標(biāo)號后必須用冒號。操作碼表示指令的操作種類,如MOV表示數(shù)據(jù)傳送操作,ADD表示加法操作等。標(biāo)號:操作碼操作數(shù)或操作數(shù)地址;注釋第3章MCS-51指令系統(tǒng)操作數(shù)或操作數(shù)地址表示參加運(yùn)算的數(shù)據(jù)或數(shù)據(jù)的有效地址。操作數(shù)一般有以下幾種形式:沒有操作數(shù)項(xiàng),即操作數(shù)隱含在操作碼中,如RET指令;只有一

14、個操作數(shù),如CPL A指令;有兩個操作數(shù),如MOV A,#00H指令,操作數(shù)之間以逗號相隔,前面的操作數(shù)稱為目的操作數(shù),后面的操作數(shù)稱為源操作數(shù);有三個操作數(shù),如CJNE A,#00H,NEXT指令,操作數(shù)之間也以逗號相隔。注釋是對指令的解釋說明,用以提高程序的可讀性。注釋前必須加分號。第3章MCS-51指令系統(tǒng)3.2 尋尋 址址 方方 式式 1. 寄存器尋址寄存器尋址寄存器尋址是指將操作數(shù)存放于寄存器中。寄存器包括工作寄存器R0R7、累加器A、通用寄存器B、地址寄存器DPTR等。例如,指令MOV R1,A的操作是把累加器A中的數(shù)據(jù)傳送到寄存器R1中,其操作數(shù)存放在累加器A中,所以尋址方式為寄

15、存器尋址。如果程序狀態(tài)寄存器PSW的RS1RS0=01(選中第一組工作寄存器,對應(yīng)地址為08H0FH),設(shè)累加器A的內(nèi)容為20H,則執(zhí)行MOV R1,A指令后,內(nèi)部RAM 09H單元的值就變?yōu)?0H,如圖3.1所示。第3章MCS-51指令系統(tǒng)圖3.1 寄存器尋址示意圖 第3章MCS-51指令系統(tǒng)寄存器尋址的尋址范圍包括如下兩部分:(1) 通用寄存器R0R7。MCS-51單片機(jī)中共有4組32個通用寄存器,但寄存器尋址只能使用當(dāng)前寄存器組,指令中的寄存器名稱也只能是R0R7。因此,在使用前,需要通過對PSW中的RS1、RS0位的狀態(tài)進(jìn)行設(shè)置,來選擇當(dāng)前寄存器組。單片機(jī)復(fù)位時,RS1RS0=00,選

16、中第0組工作寄存器。第3章MCS-51指令系統(tǒng) (2) 部分專用寄存器。例如累加器A、寄存器B以及數(shù)據(jù)指針DPTR等。實(shí)訓(xùn)3中,采用寄存器尋址的指令如下:MOV P1,A;將累加器A的內(nèi)容送到P1口MOV P1,R4 ;將寄存器R4的內(nèi)容送到P1口CLR A;將累加器A清0CPLA;將累加器A中的內(nèi)容取反RLA;將累加器A的內(nèi)容循環(huán)左移第3章MCS-51指令系統(tǒng)2. 直接尋址直接尋址直接尋址是指把存放操作數(shù)的內(nèi)存單元的地址直接寫在指令中。在MCS-51單片機(jī)中,可以直接尋址的存儲器主要有內(nèi)部RAM區(qū)和特殊功能寄存器SFR區(qū)。例如,指令MOV A,3AH執(zhí)行的操作是將內(nèi)部RAM中地址為3AH的單

17、元內(nèi)容傳送到累加器A中,其操作數(shù)3AH就是存放數(shù)據(jù)的單元地址,因此該指令采用的是直接尋址方式。設(shè)內(nèi)部RAM 3AH單元的內(nèi)容是88H,那么指令MOV A,3AH的執(zhí)行過程如圖3.2所示。第3章MCS-51指令系統(tǒng)圖3.2 直接尋址示意圖 第3章MCS-51指令系統(tǒng)在直接尋址中,指令中直接給出了存放操作數(shù)的內(nèi)部RAM地址,而不是操作數(shù)本身,其尋址范圍只限于內(nèi)部RAM中,包括如下兩部分:(1) 內(nèi)部RAM的低128單元,地址范圍為00HFFH,在指令中直接以單元地址形式給出。例如:指令MOV A,3AH中,3AH表示內(nèi)部RAM單元地址。(2) 專用寄存器。專用寄存器除以單元地址形式給出外,還可以用

18、寄存器符號形式給出。直接尋址是訪問專用寄存器的惟一方法。實(shí)訓(xùn)3中,采用直接尋址的指令如下:MOV P1,20H;將20H單元的內(nèi)容傳送到P1口第3章MCS-51指令系統(tǒng)圖3.3 立即數(shù)尋址示意圖3. 立即數(shù)尋址立即數(shù)尋址立即數(shù)尋址是指將操作數(shù)直接寫在指令中。例如,指令MOV A,#3AH執(zhí)行的操作是將立即數(shù)3AH送到累加器A中,該指令就是立即數(shù)尋址。注意:立即數(shù)前面必須加“#”號,以區(qū)別立即數(shù)和直接地址。該指令的執(zhí)行過程如圖3.3所示。 3AHA3AH第3章MCS-51指令系統(tǒng)實(shí)訓(xùn)3中,采用立即數(shù)尋址的指令如下:MOVP1,#55H;將立即數(shù)55H送P1口MOV20H,#0F0H;將立即數(shù)0F

19、0H送20H單元MOVA,#0F0H;將立即數(shù)0F0H送累加器A中MOVR4,#0FH;將立即數(shù)0FH送寄存器R4中MOVR0,#20H;將立即數(shù)20H送寄存器R0中ANL A,#0FH;將累加器A的內(nèi)容與立即數(shù)0FH進(jìn)行邏輯與操作ORL A,#0F0H;將累加器A的內(nèi)容與立即數(shù)0F0H進(jìn)行邏輯或操作MOVA,#01H;將立即數(shù)01H送累加器A中MOV A,#55H;將立即數(shù)55H送累加器A中第3章MCS-51指令系統(tǒng) 除了以上給出的8位立即數(shù)尋址的指令例子外,MCS-51指令系統(tǒng)中還有一條16位立即數(shù)尋址指令,該指令為 MOV DPTR,#2000H;把16位立即數(shù)2000H傳送到數(shù)據(jù)指針D

20、PTR中第3章MCS-51指令系統(tǒng)4. 寄存器間接尋址寄存器間接尋址寄存器間接尋址是指將存放操作數(shù)的內(nèi)存單元的地址放在寄存器中,指令中只給出該寄存器。執(zhí)行指令時,首先根據(jù)寄存器的內(nèi)容,找到所需要的操作數(shù)地址,再由該地址找到操作數(shù)并完成相應(yīng)操作。在MCS-51指令系統(tǒng)中,用于寄存器間接尋址的寄存器有R0、R1和DPTR,它們被稱為寄存器間接尋址寄存器。注意:間接尋址寄存器前面必須加上符號“”。 第3章MCS-51指令系統(tǒng)例如,指令MOV A,R0執(zhí)行的操作是將R0的內(nèi)容作為內(nèi)部RAM的地址,再將該地址單元中的內(nèi)容取出來送到累加器A中。設(shè)R0=3AH,內(nèi)部RAM 3AH中的值是65H,則指令MOV

21、 A,R0的執(zhí)行結(jié)果是累加器A的值為65H,該指令的執(zhí)行過程如圖3.4所示。第3章MCS-51指令系統(tǒng)圖3.4 寄存器間接尋址示意圖 第3章MCS-51指令系統(tǒng)寄存器間接尋址的尋址范圍如下:(1) 內(nèi)部RAM的低128字節(jié)。對內(nèi)部RAM的低128字節(jié)單元的間接尋址,只能使用R0或R1作間接尋址寄存器,其通用形式為Ri(i=0或1)。(2) 外部RAM的64 K字節(jié)。對外部RAM的64 K字節(jié)的間接尋址,使用DPTR作間接尋址寄存器,其形式為DPTR。例如:MOVX A,DPTR,其功能是把由DPTR指定的外部RAM單元的內(nèi)容送到累加器A中。第3章MCS-51指令系統(tǒng)(3) 外部RAM的低256

22、字節(jié)。外部RAM的低256字節(jié)是一個特殊的尋址區(qū),除了可以使用DPTR作間接尋址寄存器外,還可以使用R0或R1作間接尋址寄存器,例如MOVX A,R0,即把由R0指定的外部RAM單元的內(nèi)容傳送到累加器A中。實(shí)訓(xùn)3中,采用寄存器間接尋址的指令如下:MOV P1,R0;將R0所指的存儲單元的內(nèi)容送P1口第3章MCS-51指令系統(tǒng)5. 變址尋址變址尋址變址尋址是指將基址寄存器與變址寄存器的內(nèi)容相加,結(jié)果作為操作數(shù)的地址。DPTR或PC是基址寄存器,累加器A是變址寄存器。該類尋址方式主要用于查表操作。例如,指令MOVC A,A+DPTR執(zhí)行的操作是將累加器A和基址寄存器DPTR的內(nèi)容相加,相加結(jié)果作為

23、操作數(shù)存放的地址,再按照該地址將操作數(shù)取出來送到累加器A中。設(shè)累加器A=02H,DPTR=0300H,外部ROM中,0302H單元的內(nèi)容是55H,則指令MOVC A,A+DPTR的執(zhí)行結(jié)果是累加器A的內(nèi)容為55H。該指令的執(zhí)行過程如圖3.5所示。第3章MCS-51指令系統(tǒng)圖3.5 變址尋址示意圖 第3章MCS-51指令系統(tǒng)對變址尋址方式說明如下:(1) 變址尋址是專門針對程序存儲器的尋址方式,所以只能對程序存儲器進(jìn)行尋址,尋址范圍為64 K字節(jié)。(2) 變址尋址的指令只有2條:MOVC A,A+DPTRMOVC A,A+PC(3) 盡管變址尋址比較復(fù)雜,但變址尋址的指令都是一字節(jié)指令。第3章M

24、CS-51指令系統(tǒng)6. 相對尋址相對尋址相對尋址是指將程序計(jì)數(shù)器PC的當(dāng)前內(nèi)容與指令中的操作數(shù)相加,其結(jié)果作為跳轉(zhuǎn)指令的轉(zhuǎn)移地址(也稱目的地址)。該類尋址方式主要用于跳轉(zhuǎn)指令。第3章MCS-51指令系統(tǒng)例如,指令SJMP 54H執(zhí)行的操作是將PC當(dāng)前的內(nèi)容與54H相加,結(jié)果再送回PC中,成為下一條將要執(zhí)行指令的地址。設(shè)指令SJMP 54H的機(jī)器碼80H 54H存放在2000H處,當(dāng)執(zhí)行到該指令時,先從2000H和2001H單元取出指令,PC自動變?yōu)?002H;再把PC的內(nèi)容與操作數(shù)54H相加,形成目標(biāo)地址2056H,再送回PC,使得程序跳轉(zhuǎn)到2056H單元繼續(xù)執(zhí)行。該指令的執(zhí)行過程如圖3.6所

25、示。相對尋址是專門為改變程序執(zhí)行方向而設(shè)置的,程序執(zhí)行的方向由程序計(jì)數(shù)器PC控制,在程序順序執(zhí)行過程中,PC自動加1,按照指令的存放順序逐一執(zhí)行;而相對尋址則會修改PC的值,從而使程序跳轉(zhuǎn)到新的目的地址執(zhí)行。第3章MCS-51指令系統(tǒng)圖3.6 相對尋址示意圖第3章MCS-51指令系統(tǒng)7. 位尋址位尋址位尋址是指按位進(jìn)行的尋址操作,而上述介紹的指令都是按字節(jié)進(jìn)行的尋址操作。MCS-51單片機(jī)中,操作數(shù)不僅可以按字節(jié)進(jìn)行操作,也可以按位進(jìn)行操作。當(dāng)我們把某一位作為操作數(shù)時,這個操作數(shù)的地址稱為位地址。例如,指令SETB 3DH執(zhí)行的操作是將內(nèi)部RAM位尋址區(qū)中的3DH位置1。設(shè)內(nèi)部RAM 27H單

26、元的內(nèi)容是00H,執(zhí)行SETB 3DH后,由于3DH對應(yīng)內(nèi)部RAM 27H的第5位,因此該位變?yōu)?,也就是27H單元的內(nèi)容變?yōu)?0H。該指令的執(zhí)行過程如圖3.7所示。第3章MCS-51指令系統(tǒng)圖3.7 位尋址示意圖內(nèi)部RAM27H二進(jìn)制 10 0 1 0 0 0 0 0第3章MCS-51指令系統(tǒng)位尋址區(qū)包括專門安排在內(nèi)部RAM中的如下兩個區(qū)域:(1) 內(nèi)部RAM的位尋址區(qū),地址范圍是20H2FH,共16個RAM單元,每個單元包括8個位,共計(jì)128個位,位地址為00H7FH。對這128個位有兩種表示方式:一是位地址,例如:SETB 3DH;二是單元地址加位的方式,即點(diǎn)操作符寫法,例如:SETB

27、27H.5。第3章MCS-51指令系統(tǒng)(2) 特殊功能寄存器SFR中的11個寄存器可以位尋址,包括83個位(相關(guān)內(nèi)容可參見有關(guān)章節(jié)中位地址定義的內(nèi)容)。對這些位在指令中有如下4種表示方法: 直接使用位地址,例如:MOV C,0D0H。 點(diǎn)操作符表示法,例如:MOV C,0D0H.0。 位名稱表示法,例如:MOV C,P。 專用寄存器符號與點(diǎn)操作符表示法,例如:MOV C,PSW.0。第3章MCS-51指令系統(tǒng)8. MCS-51單片機(jī)尋址方式小結(jié)單片機(jī)尋址方式小結(jié)以上介紹了MCS-51單片機(jī)的7種尋址方式,每一種尋址方式都有各自不同的尋址區(qū)域和特點(diǎn),在此歸納總結(jié)如表3.2所示。第3章MCS-51

28、指令系統(tǒng)表表3.2 MCS-51單片機(jī)尋址方式小結(jié)單片機(jī)尋址方式小結(jié)尋址方式 定義 尋 址 區(qū) 域 指令舉例 寄存器 尋址 操作數(shù)存放于寄存器中,指令中給出寄存器名 (1) 通用寄存器 R0R7; (2) 部分專用寄存器,例如累加器A、寄存器 B 以及數(shù)據(jù)指針 DPTR 等 MOV A,R1 MOV P1,R4 CLR A 直接尋址 存放操作數(shù)的內(nèi)存單元地址直接寫在指令中 (1) 內(nèi)部 RAM 中的低 128 地址單元,地址范圍為00HFFH; (2) 專用寄存器。專用寄存器除以單元地址形式給出外,還可以以寄存器符號形式給出 MOV A,P1 MOV R1,20H 立即數(shù) 尋址 操作數(shù)直接寫在

29、指令中 源操作數(shù)為立即數(shù),立即數(shù)前面必須加“#”號,以區(qū)別立即數(shù)和直接地址 MOV P1,#55H MOV DPTR, #2000H 寄存器 間接尋址 將存放操作數(shù)的內(nèi)存單元的地址放在寄存器中,指令中只給出該寄存器 (1) 內(nèi)部 RAM 的低 128 字節(jié)。對內(nèi)部 RAM 的低128 字節(jié)單元的間接尋址, 只能使用R0 或 R1 作間接尋址寄存器,其通用形式為Ri(i=0 或 1); (2) 外部 RAM 的 64 K 字節(jié)。對外部 RAM 的 64 K字節(jié)的間接尋址,使用DPTR 作間接尋址寄存器,其形式為DPTR; (3) 外部 RAM 的低 256 字節(jié)。外部 RAM 的低 256字節(jié)是

30、一個特殊的尋址區(qū), 除了可以使用DPTR 作間接尋址寄存器外,還可以使用 R0 或 R1 作間接尋址寄存器 MOV A,R0 MOVX A,DPTR MOVX A,R0 第3章MCS-51指令系統(tǒng)變址尋址 將基址寄存器與變址寄存器 的 內(nèi) 容 相加,結(jié)果作為操作數(shù)的地址 (1) 變址尋址是專門針對程序存儲器的尋址方式,所以只能對程序存儲器進(jìn)行尋址,尋址范圍為 64 K字節(jié); (2) 變址尋址的指令只有 2 條: MOVC A,A+PC MOVC A,A+DPTR MOVC A,A+PC 相對尋址 將程序計(jì)數(shù)器 PC 的當(dāng)前內(nèi)容與指令中的 操 作 數(shù) 相加,其結(jié)果作為跳轉(zhuǎn)指令的轉(zhuǎn)移地址 專門為改

31、變程序執(zhí)行方向而設(shè)置的 SJMP 54H 位尋址 按位進(jìn)行的操作 (1) 內(nèi)部RAM的位尋址區(qū), 地址范圍是20H2FH,共 16 個 RAM 單元,每個單元包括 8 個位,共計(jì) 128個位,位地址為 00H7FH; (2) 特殊功能寄存器 SFR 中的 11 個寄存器可以位尋址,包括 83 個位 MOV C,0D0H MOV C,0D0H.0 MOV C,P MOV C,PSW.0 注:指令舉例中,尋址方式是指源操作數(shù)的尋址方式。第3章MCS-51指令系統(tǒng)3.3 指指 令令 系系 統(tǒng)統(tǒng)MCS-51單片機(jī)指令系統(tǒng)包括111條指令,按功能可以劃分為以下5類: 數(shù)據(jù)傳送指令(29條)。 算術(shù)運(yùn)算指

32、令(24條)。 邏輯運(yùn)算及移位指令(24條)。 控制轉(zhuǎn)移指令(17條)。 位操作指令(17條)。第3章MCS-51指令系統(tǒng)3.3.1 指令系統(tǒng)中的符號說明指令系統(tǒng)中的符號說明指令的書寫必須遵守一定的規(guī)則,為了敘述方便,我們采用表3.3的約定。第3章MCS-51指令系統(tǒng)表表3.3 指令描述約定指令描述約定 符 號 含 義 Rn 表示當(dāng)前選定寄存器組的工作寄存器R0R7 Ri 表示作為間接尋址的地址指針R0R1 #data 表示 8 位立即數(shù),即 00HFFH #data16 表示 16 位立即數(shù),即 0000HFFFFH addr16 表示 16 位地址,用于 64 K 范圍內(nèi)尋址 addr11

33、 表示 11 位地址,用于 2 K 范圍內(nèi)尋址 direct 8 位直接地址,可以是內(nèi)部 RAM 區(qū)的某一單元或某一專用功能寄存器的地址 Rel 帶符號的 8 位偏移量(-128+127) Bit 位尋址區(qū)的直接尋址位 (X) X 地址單元中的內(nèi)容,或 X 作為間接尋址寄存器時所指單元的內(nèi)容 將后面的內(nèi)容傳送到前面去 第3章MCS-51指令系統(tǒng)3.3.2 數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令 數(shù)據(jù)傳送指令是MCS-51單片機(jī)匯編語言程序設(shè)計(jì)中使用最頻繁的指令,包括內(nèi)部RAM、寄存器、外部RAM以及程序存儲器之間的數(shù)據(jù)傳送。 數(shù)據(jù)傳送操作是指把數(shù)據(jù)從源地址傳送到目的地址,源地址內(nèi)容不變,即第3章MCS-

34、51指令系統(tǒng)數(shù)據(jù)傳送類指令分類如圖3.8所示. 圖3.8 數(shù)據(jù)傳送指令分類第3章MCS-51指令系統(tǒng)1. 內(nèi)部內(nèi)部8位數(shù)據(jù)傳送指令位數(shù)據(jù)傳送指令(15條條)內(nèi)部8位數(shù)據(jù)傳送指令共15條,主要用于MCS-51單片機(jī)內(nèi)部RAM與寄存器之間的數(shù)據(jù)傳送。指令基本格式: MOV ,1) 以累加器A為目的地址的傳送指令(4條)助記符格式 機(jī)器碼(B) 相應(yīng)操作 指令說明 機(jī)器周期 MOV A,Rn 11101rrr ARn n=07,rrr=000111 1 MOV A,direct 11100101 direct A (direct) 1 MOV A,Ri 1110011i A (Ri) i=0,1 1

35、 MOV A,#data 01110100 data A #data 1 第3章MCS-51指令系統(tǒng)例3.1 已知相應(yīng)單元的內(nèi)容如下,請指出每條指令執(zhí)行后相應(yīng)單元內(nèi)容的變化。第3章MCS-51指令系統(tǒng)(1) MOV A,#20H (2) MOV A,40H(3) MOV A,R0(4) MOV A,R0解:(1) MOV A,#20H執(zhí)行后A=20H。(2) MOV A,40H執(zhí)行后A=30H。(3) MOV A,R0執(zhí)行后A=50H。(4) MOV A,R0執(zhí)行后A=10H。第3章MCS-51指令系統(tǒng)助記符格式 機(jī)器碼(B) 相應(yīng)操作 指令說明 機(jī)器周期 MOV Rn,A 11111rrr

36、Rn A n=07,rrr=000111 1 MOV Rn,direct 10101rrr direct Rn (direct) n=07,rrr=000111 1 MOV Rn,#data 01111rrr data Rn #data n=07,rrr=000111 1 2) 以Rn為目的地址的傳送指令(3條)第3章MCS-51指令系統(tǒng)3) 以直接地址為目的地址的傳送指令(5條)助記符格式 機(jī)器碼(B) 相應(yīng)操作 指令說明 機(jī)器周期 MOV direct,A 11111010 direct (direct) A 1 MOV direct,Rn 10001rrr direct (direct

37、)Rn n=07, rrr=000111 1 MOV direct2,direct1 10000101 direct1 direct2 (direct2) direct1 2 MOV direct,Ri 1000011i direct (direct )(Ri) i=0,1 2 MOV direct,#data 01110101 direct data (direct)#data 2 注意:以上傳送指令的結(jié)果不影響程序狀態(tài)字寄存器PSW標(biāo)志。第3章MCS-51指令系統(tǒng)4) 以寄存器間接地址為目的地址的傳送指令(3條)助記符格式 機(jī)器碼(B) 相應(yīng)操作 指令說明 機(jī)器周期 MOV Ri,A 11

38、11011i (Ri)A i=0,1 1 MOV Ri,direct 1110011i direct (Ri)(direct) 2 MOV Ri,#data 0111010i data (Ri)#data 1 注意:以上傳送指令的結(jié)果不影響程序狀態(tài)字寄存器PSW標(biāo)志。第3章MCS-51指令系統(tǒng)例3.2 已知相應(yīng)單元的內(nèi)容如下,請指出下列指令執(zhí)行后各單元內(nèi)容相應(yīng)的變化。(1) MOV A,R6 (2) MOV R6,70H(3) MOV 70H,50H(4) MOV 40H,R0(5) MOV R1,#88H第3章MCS-51指令系統(tǒng)第3章MCS-51指令系統(tǒng)解:解:(1) MOV A,R6執(zhí)行

39、后A=30H。(2) MOV R6,70H執(zhí)行后R6=40H。(3) MOV 70H,50H執(zhí)行后(70H)=60H。(4) MOV 40H,R0執(zhí)行后(40H)=60H。(5) MOV R1,#88H執(zhí)行后(66H)=88H。第3章MCS-51指令系統(tǒng)助記符格式 機(jī)器碼(B) 相應(yīng)操作 指令說明 機(jī)器周期 MOV DPTR,#data16 10010000 data158 data70 (DPTR) #data16 把 16 位常數(shù)裝入數(shù)據(jù)指針 2 注意:以上指令結(jié)果不影響程序狀態(tài)字寄存器PSW標(biāo)志。2. 16位數(shù)據(jù)傳送指令位數(shù)據(jù)傳送指令(1條條)第3章MCS-51指令系統(tǒng)3. 外部數(shù)據(jù)傳送

40、指令外部數(shù)據(jù)傳送指令(4條條)助記符格式 機(jī)器碼(B) 相應(yīng)操作 指令說明 機(jī)器周期 MOVX A,DPTR 11100000 A(DPTR) 把DPTR 所對應(yīng)的外部 RAM 地址中的內(nèi)容傳送給累加器 A 2 MOVX A,Ri 1110001i A (Ri) i=0,1 2 MOVX DPTR,A 11110000 (DPTR) A 結(jié)果不影響 P 標(biāo)志 2 MOVX Ri,A 1110001i (Ri) A i=0,1,結(jié)果不影響 P 標(biāo)志 2 注意: 外部RAM只能通過累加器A進(jìn)行數(shù)據(jù)傳送。 累加器A與外部RAM之間傳送數(shù)據(jù)時只能用間接尋址方式,間接尋址寄存器為DPTR、R0、R1。

41、以上傳送指令結(jié)果(未注明的)通常影響程序狀態(tài)字寄存器PSW的P標(biāo)志。第3章MCS-51指令系統(tǒng)例3.3 把外部數(shù)據(jù)存儲器2040H單元中的數(shù)據(jù)傳送到外部數(shù)據(jù)存儲器2560H單元中去。解:MOV DPTR,#2040HMOVX A,DPTR;先將2040H單元的內(nèi)容傳送到累加器A中MOV DPTR,#2560HMOVX DPTR,A;再將累加器A中的內(nèi)容傳送到2560H單元中第3章MCS-51指令系統(tǒng)助記符格式 機(jī)器碼(B) 相應(yīng)操作 指令說明 機(jī)器周期 XCH A,Rn 11001rrr ARn A 與 Rn 內(nèi)容互換 1 XCH A,direct 11000101 direct A(dire

42、ct) 1 XCH A,Ri 1100011i A(Ri) i=0,1 1 注意:以上指令結(jié)果影響程序狀態(tài)字寄存器PSW的P標(biāo)志。2) 低半字節(jié)交換指令(1 條) 助記符格式 機(jī)器碼(B) 相應(yīng)操作 指令說明 機(jī)器周期 XCHD A,Ri 1101011i A30(Ri)30 低 4 位交換,高 4 位不變 1 注意:以上指令結(jié)果影響程序狀態(tài)字寄存器 PSW 的 P 標(biāo)志。 3) 累加器 A 中高 4 位和低 4 位交換(1 條) 助記符格式 機(jī)器碼(B) 相應(yīng)操作 指令說明 機(jī)器周期 SWAP A 11000100 A 30A74 高、低 4 位互相交換 1 注意:以上指令結(jié)果不影響程序狀態(tài)

43、字寄存器 PSW 標(biāo)志。 4. 交換和查表類指令交換和查表類指令(9條條)1) 字節(jié)交換指令(3條)第3章MCS-51指令系統(tǒng)例3.4 設(shè)內(nèi)部數(shù)據(jù)存儲區(qū)2AH、2BH單元中連續(xù)存放有4個BCD碼(1個BCD碼占4位),試編寫一程序把這4個BCD碼倒序排序,即第3章MCS-51指令系統(tǒng)解:MOV R0,#2AH;將立即數(shù)2AH傳送到寄存器R0中 MOV A,R0;將2AH單元的內(nèi)容傳送到累加器A中 SWAP A;將累加器A中的高4位與低4位交換 MOV R0,A;將累加器A的內(nèi)容傳送到2AH單元中 MOV R1,#2BH MOV A,R1;將2BH單元的內(nèi)容傳送到累加器A中 SWAP A ;將累

44、加器A中的高4位與低4位交換XCH A,R0;將累加器A中的內(nèi)容與2AH單元的內(nèi)容交換 MOV R1,A;將累加器A的內(nèi)容傳送到2BH單元第3章MCS-51指令系統(tǒng)助記符格式 機(jī)器碼(B) 相應(yīng)操作 指令說明 機(jī)器周期 MOVC A,A+PC 10000011 A (A+PC) A+PC 所指外部程序存儲單元內(nèi)容送 A 2 MOVC A,A+DPTR 10010011 A (A+DPTR) A+DPTR 所指外部程序存儲單元內(nèi)容送 A 2 注意: 以上指令結(jié)果影響程序狀態(tài)字寄存器PSW的P標(biāo)志。 查表指令用于查找存放在程序存儲器中的表格。4) 查表指令(2條)第3章MCS-51指令系統(tǒng)5) 堆

45、棧操作指令(2條)助記符格式 機(jī)器碼(B) 相應(yīng)操作 指令說明 機(jī)器周期 PUSH direct 11000000 direct SPSP+1 (SP)(direct) 將 SP 加 1,然后將源地址單元中的數(shù)傳送到 SP 所指示的單元中去 2 POP direct 11010000 direct (direct) (SP) SPSP-1 將 SP 所指示的單元中的數(shù)傳送到direct 地址單元中,然后 SPSP-1 2 第3章MCS-51指令系統(tǒng)注意: 堆棧是用戶自己設(shè)定的內(nèi)部RAM中的一塊專用存儲區(qū),使用時一定先設(shè)堆棧指針,堆棧指針缺省為SP=07H。 堆棧遵循后進(jìn)先出的原則安排數(shù)據(jù)。 堆

46、棧操作必須是字節(jié)操作,且只能直接尋址。將累加器A入棧、出棧指令可以寫成:PUSH/POP ACC 或 PUSH/POP 0E0H而不能寫成:PUSH/POP A 堆棧通常用于臨時保護(hù)數(shù)據(jù)及子程序調(diào)用時保護(hù)現(xiàn)場和恢復(fù)現(xiàn)場。 以上指令結(jié)果不影響程序狀態(tài)字寄存器PSW標(biāo)志。第3章MCS-51指令系統(tǒng)例3.5 設(shè)堆棧指針為30H,把累加器A和DPTR中的內(nèi)容壓入,然后根據(jù)需要再把它們彈出,編寫實(shí)現(xiàn)該功能的程序段。解: MOV SP,#30H ;設(shè)置堆棧指針,SP=30H為棧底地址PUSHACC ;SP+1SP,SP=31H,ACC (SP)PUSH DPH ;SP+1SP,SP=32H,DPH (SP

47、)PUSH DPL ;SP+1SP,SP=33H,DPL (SP)POP DPL ;(SP)DPL,SP-1SP,SP=32HPOP DPH;(SP)DPH,SP-1SP,SP=31HPOP ACC;(SP)ACC,SP-1SP,SP=30H第3章MCS-51指令系統(tǒng)3.3.3 算術(shù)運(yùn)算類指令算術(shù)運(yùn)算類指令算術(shù)運(yùn)算類指令分類如圖3.9所示。圖3.9 算術(shù)運(yùn)算類指令分類第3章MCS-51指令系統(tǒng)1. 加、減法指令加、減法指令(22條條)1) 加法指令(8條)助記符格式 機(jī)器碼(B) 相應(yīng)操作 指令說明 機(jī)器周期 ADD A,Rn 00101rrr AA+Rn n=07,rrr=000111 1

48、ADD A,direct 00100101 AA+(direct) 1 ADD A,Ri 0010011i AA+(Ri) i=0,1 1 ADD A,#data 00100100 data AA+#data 1 ADDC A,Rn 00111rrr AA+Rn+CY n=07,rrr=000111 1 ADDC A,direct 00110101 direct AA+(direct)+CY 1 ADDC A,Ri 0011011i AA+(Ri)+CY i=0,1 1 ADDC A,#data 00110100 data AA+#data+CY 1 第3章MCS-51指令系統(tǒng)2) 減法指令(

49、4條)助記符格式 機(jī)器碼(B) 相應(yīng)操作 指令說明 機(jī)器周期 SUBB A,Rn 1001rrr AA-Rn-CY n=07,rrr=000111 1 SUBB A,direct 10010101 direct AA-(direct)-CY 1 SUBB A,Ri 1001011i AA- (Ri)-CY i=0,1 1 SUBB A,#data 10010100 data AA-#data-CY 1 注意: 減法指令中沒有不帶借位的減法指令,所以在需要時,必須先將CY清0。 指令執(zhí)行結(jié)果均在累加器A中。 以上指令結(jié)果均影響程序狀態(tài)字寄存器PSW的CY、OV、AC和P標(biāo)志。第3章MCS-51指

50、令系統(tǒng) 高 8 位 低 8 位 1 2 A 4 H A4H + E7H = 8BH 進(jìn)位 1 + 0 F E 7 H 12H + 0FH + 1 = 22H 2 2 8 B 進(jìn)位 1 1 1 加法指令 ADDC ADD 例3.6 編寫計(jì)算12A4H+0FE7H的程序,將結(jié)果存入內(nèi)部RAM 41H和40H單元,40H存低8位,41H存高8位。解:單片機(jī)指令系統(tǒng)中只提供了8位的加減法運(yùn)算指令,兩個16位數(shù)(雙字節(jié))相加可分為兩步進(jìn)行,第一步先對低8位相加,第二步再對高8位相加。第3章MCS-51指令系統(tǒng) 程序如下:MOV A,#0A4H ;被加數(shù)低8位AADD A,#0E7H ;加數(shù)低8位E7H與

51、之相加,A=8BH,CY=1MOV 40H,A;A(40H),存低8位結(jié)果MOV A,#12H ;被加數(shù)高8位AADDC A,#0FH;加數(shù)高8位+A+CY,A=22HMOV 41H,A;存高8位運(yùn)算結(jié)果第3章MCS-51指令系統(tǒng)注意: 該指令結(jié)果影響程序狀態(tài)字寄存器PSW的CY、OV、AC和P標(biāo)志。3) BCD碼調(diào)整指令(1條)第3章MCS-51指令系統(tǒng) BCD(Binary Coded Decimal)碼是用二進(jìn)制形式表示十進(jìn)制數(shù),例如十進(jìn)制數(shù)45的BCD碼形式為45H。BCD碼只是一種表示形式,與其數(shù)值沒有關(guān)系。BCD碼用4位二進(jìn)制碼表示一位十進(jìn)制數(shù),這4位二進(jìn)制數(shù)的權(quán)為8421,所以B

52、CD碼又稱為8421碼。十進(jìn)制數(shù)碼09所對應(yīng)的BCD碼如表3.4所示。表表3.4 十進(jìn)制數(shù)碼與十進(jìn)制數(shù)碼與BCD碼的對應(yīng)表碼的對應(yīng)表十進(jìn)制數(shù)碼 0 1 2 3 4 5 6 7 8 9 二進(jìn)制碼 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 第3章MCS-51指令系統(tǒng)在表3.4中,用4位二進(jìn)制數(shù)表示一個十進(jìn)制數(shù)位,例如56D和87D的BCD碼表示為0101 0110 (56D)1000 0111 (87D)0001 0100 0011 (143D) DA A指令將A中的二進(jìn)制碼自動調(diào)整為BCD碼。 DA A指令只能跟在ADD或ADDC加法指令

53、后,不適用于減法。第3章MCS-51指令系統(tǒng)例3.7 說明指令MOV A,#05H和ADD A,#08H及DA A的執(zhí)行結(jié)果。解:MOV A,#05H ;05HA ADD A,#08H ;05H+08HA,A=0DH DA A ;自動調(diào)整為BCD碼,A=13H第3章MCS-51指令系統(tǒng)4) 加1減1指令(9條)助記符格式 機(jī)器碼(B) 相應(yīng)操作 指令說明 機(jī)器周期 INC A 00000100 AA+1 影響 PSW 的 P 標(biāo)志 1 INC Rn 00001rrr RnRn+1 n=07,rrr=000111 1 INC direct 00000101 direct (direct)(dir

54、ect)+1 1 INC Ri 0000011i (Ri)(Ri)+1 i=0,1 1 INC DPTR 10100011 DPTRDPTR+1 2 DEC A 00010100 AA-1 影響 PSW 的 P 標(biāo)志 1 DEC Rn 00011rrr RnRn-1 n=07,rrr=000111 1 DEC direct 00010101 direct (direct)(direct)-1 1 DEC Ri 0001011i (Ri)(Ri)-1 i=0,1 1 注意:以上指令結(jié)果通常不影響程序狀態(tài)字寄存器PSW。第3章MCS-51指令系統(tǒng)例3.8 分別指出指令I(lǐng)NC R0和INC R0的執(zhí)

55、行結(jié)果。設(shè)R0=30H,(30H)=00H。解:INC R0 ;R0+1=30H+1=31HR0,R0=31H INC R0 ;(R0)+1=(30H)+1(R0),(30H)=01H,;R0中內(nèi)容不變第3章MCS-51指令系統(tǒng)2. 乘、除法指令乘、除法指令1) 乘法指令(1條)助記符格式 機(jī)器碼(B) 相應(yīng)操作 指令說明 機(jī)器周期 MUL AB 10100100 BAAB 無符號數(shù)相乘,乘積高 8 位存 B,低8 位存 A 4 注意:乘法指令結(jié)果影響程序狀態(tài)字寄存器PSW的OV(積超過0FFH則置1,否則為0)和CY(總是清0)以及P標(biāo)志。第3章MCS-51指令系統(tǒng)2) 除法指令(1條)助記

56、符格式 機(jī)器碼(B) 相應(yīng)操作 指令說明 機(jī)器周期 DIV AB 10000100 AA/B 的商 BA/B 的余數(shù) 無符號數(shù)相除,商存 A,余數(shù)存 B 4 注意: 除法指令結(jié)果影響程序狀態(tài)字寄存器PSW的OV(除數(shù)為0則置1,否則為0)和CY(總是清0)以及P標(biāo)志。 當(dāng)除數(shù)為0時結(jié)果不能確定。第3章MCS-51指令系統(tǒng)3.3.4 邏輯運(yùn)算及移位類指令邏輯運(yùn)算及移位類指令邏輯運(yùn)算及移位類指令邏輯運(yùn)算指令循環(huán)移位指令(4條):RL、RLC、RR、RRC邏輯與指令(6條):ANL邏輯或指令(6條):ORL邏輯異或指令(6條):XRL累加器A清0和取反指令(2條):CLR、CPL邏輯運(yùn)算及移位類指令

57、分類如圖3.10所示。第3章MCS-51指令系統(tǒng)圖3.10 邏輯運(yùn)算及移位類指令分類第3章MCS-51指令系統(tǒng)1. 邏輯運(yùn)算指令邏輯運(yùn)算指令(20條條)1) 邏輯與指令(6條)助記符格式 機(jī)器碼(B) 相應(yīng)操作 指令說明 機(jī)器周期 ANL A,direct 01010101 direct AA(direct) 按位相與 1 ANL A,Rn 01011rrr AARn n=07,rrr=000111 1 ANL A,Ri 0101011i AA(Ri) i=0,1 1 ANL A,#data 01010100 data AA#data 1 ANL direct,A 01010010 direc

58、t (direct)(direct)A 不影響 PSW 的 P 標(biāo)志 1 ANL direct, #data 01010011 direct data (direct)(direct)#data 不影響 PSW 的 P 標(biāo)志 2 注意: 以上指令結(jié)果通常影響程序狀態(tài)字寄存器PSW的P標(biāo)志。 邏輯與指令通常用于將一個字節(jié)中的指定位清0,其它位不變。第3章MCS-51指令系統(tǒng)2) 邏輯或指令(6條)助記符格式 機(jī)器碼(B) 相應(yīng)操作 指令說明 機(jī)器周期 ORL A,direct 01000101 direct AA(direct) 按位相或 1 ORL A,Rn 01001rrr AARn n=0

59、7,rrr=000111 1 ORL A,Ri 0100011i AA(Ri) i=0,1 1 ORL A,#data 01000100 data AA#data 1 ORL direct,A 01000010 direct (direct)(direct)A 不影響 PSW 的 P 標(biāo)志 1 ORL direct,#data 01000011 direct data (direct) (direct)#data 不影響 PSW 的 P 標(biāo)志 2 注意: 以上指令結(jié)果通常影響程序狀態(tài)字寄存器PSW的P標(biāo)志。 邏輯或指令通常用于將一個字節(jié)中的指定位置1,其余位不變。第3章MCS-51指令系統(tǒng)3)

60、 邏輯異或指令(6條)助記符格式 機(jī)器碼(B) 相應(yīng)操作 指令說明 機(jī)器周期 XRL A,direct 01100101 direct AA(direct) 按位相異或 1 XRL A,Rn 01101rrr AARn n=07,rrr=000111 1 XRL A,Ri 0110011i AA (Ri) i=0,1 1 XRL A,#data 01100100 data AA#data 1 XRL direct,A 01100010 direct (direct)(direct)A 不影響 PSW 的 P 標(biāo)志 1 XRL direct,#data 01100011 direct data

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論