版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第三章,MCS51單片微機(jī)的指令系統(tǒng),3.1 MCS51指令及其表示方法,指令系統(tǒng)是根據(jù)單片機(jī)硬件電路確定的一組操作編碼,每一條指令完成一個(gè)特定的操作。指令系統(tǒng)設(shè)計(jì)是單片機(jī)設(shè)計(jì)的一個(gè)組成部分,芯片制造廠在推出單片機(jī)的同時(shí)也要提供指令系統(tǒng),我們?yōu)榱耸褂脝纹瑱C(jī)就必須了解和熟悉其指令系統(tǒng)。本節(jié)介紹指令的格式,指令的字節(jié)數(shù)等基本知識(shí)。,一、機(jī)器語(yǔ)言指令與匯編語(yǔ)言指令,和一般的微機(jī)一樣,指令具有兩級(jí)形式,即機(jī)器語(yǔ)言指令和匯編語(yǔ)言指令,指令的集合便是程序。例如作10+20的運(yùn)算可采用下列二進(jìn)制機(jī)器語(yǔ)言程序 : 01110100B 00001010B 16進(jìn)制表示為74H 0AH 00100100B 000
2、10100B 24H 14H 為了使用方便,用助記符來(lái)表示操作性質(zhì),并規(guī)定一定的書(shū)寫(xiě)格式,這樣就形成了匯編語(yǔ)言級(jí)的指令和程序,例如上述程序的匯編語(yǔ)言形式為: MOV A, #0AH ADD A, #14H,操作碼,操作數(shù),上述程序中MOV為助記符,表示操作的性質(zhì)是數(shù)據(jù)傳送,助記符后面的符號(hào)A為累加器ACC,是數(shù)據(jù)傳送的“目的”地址(地址為符號(hào)地址),#0AH中前綴#表示0AH為數(shù)據(jù),處于此位置的數(shù)據(jù)或符號(hào)(或不帶#的數(shù))是數(shù)據(jù)傳送的“源”(或“源”地址)。第二條指令的ADD表示加法操作。根據(jù)上例可知,匯編語(yǔ)言指令的格式為: 標(biāo)號(hào):助記符 操作對(duì)象 指令中的操作對(duì)象可以是寄存器名、存貯器地址、數(shù)
3、據(jù)(帶有前綴#等),操作對(duì)象可以是1個(gè)或2個(gè)、3個(gè),例如上例中兩條指令均為兩個(gè)操作對(duì)象,第一個(gè)為目的操作對(duì)象,第二個(gè)為源操作對(duì)象。,由于匯編語(yǔ)言指令不是機(jī)器代碼,故編制好匯編語(yǔ)言程序后,還需要再翻譯成機(jī)器語(yǔ)言程序(稱(chēng)目標(biāo)程序),然后才能輸入到計(jì)算機(jī)的存貯器中去執(zhí)行。機(jī)器語(yǔ)言程序主要由數(shù)碼組成,它包含兩種不同性質(zhì)的編碼,一種是表示操作性質(zhì)的數(shù)碼操作碼,另一種為表示某個(gè)數(shù)(或地址)的編碼操作數(shù),所以機(jī)器語(yǔ)言指令的格式為: 地址 操作碼 操作數(shù)(02個(gè)) 例如上述機(jī)器碼程序74H、24H為操作碼,0AH、14H為操作數(shù),匯編語(yǔ)言指令與機(jī)器語(yǔ)言指令具有完全確定的關(guān)系,二者可以互相轉(zhuǎn)換。,二、指令的格式
4、,指令是完成一種特定操作的命令。 一條指令由一個(gè)操作碼和幾個(gè)操作數(shù)組成,其中操作數(shù)可以是02個(gè),在計(jì)算機(jī)中以8位二進(jìn)制碼為一個(gè)字節(jié),各種編碼均以字節(jié)為單位(即16進(jìn)制的2位數(shù))。,單字節(jié)指令: 雙字節(jié)指令: 三字節(jié)指令:,操作碼,操作碼,操作數(shù),操作碼,第1操作數(shù),第2操作數(shù),二、指令的格式,例如: 操作內(nèi)容 匯編語(yǔ)言 機(jī)器語(yǔ)言指令 累加器內(nèi)容加1 INC A 00000100(04H) 累加器內(nèi)容取反 CPL A 01011000(18H) MOV A ,Rn(n=07); 機(jī)器碼為11101rrrb 式中 rrr為07的二進(jìn)制碼 MOV data , #data ; 機(jī)器碼為 75H da
5、ta #data,操作碼,操作碼,第一操作數(shù),第二操作數(shù),3.2 尋址方式,一、指令系統(tǒng)中使用的符號(hào) A累加器; B乘、除運(yùn)算寄存器,亦可當(dāng)作一般寄存器使用; Rn工作寄存器n=07; Ri用于存放地址的工作寄存器i=0,1,亦稱(chēng)8位地址指針; DPTR16位數(shù)據(jù)(地址)指針(由DPH,DPL兩個(gè)寄存器組成),存放16位地址; 以寄存器的內(nèi)容為地址的前綴; rrr: R0R7對(duì)應(yīng)的rrr為000111;,dir(direct或data)單片機(jī)內(nèi)地址為dir(direct或data)的通用寄存器; #data8位的數(shù)據(jù); #data1616位的數(shù)據(jù); SP堆棧指針,其內(nèi)容為堆棧棧頂?shù)牡刂罚?bi
6、t位操作中的一個(gè)“位”; CPSW中的最高位,亦稱(chēng)位累加器; addr1111位地址; addr1616位地址; rel相對(duì)地址; (X)以X(R0,R1,DPTR,dir等)的內(nèi)容為地址的該單元內(nèi)容; 其它特殊功能寄存器符號(hào)及其內(nèi)部的“位”符號(hào)。,二、尋址方式,計(jì)算機(jī)的各種操作都涉及到寄存器和存貯器,它們分布在片內(nèi)和片外,數(shù)量很多,因此指令中必須明確指明是哪一個(gè)寄存器或哪一個(gè)存貯單元,尋址方式就是在指令中給出的尋找操作數(shù)或操作數(shù)所在地址的方法。執(zhí)行任何一條指令都需要使用操作數(shù)。MCS51系列單片微機(jī)指令系統(tǒng)中共有以下7種尋址方式。,1.立即尋址,立即尋址是指在指令中直接給出參與操作的數(shù),出現(xiàn)
7、在指令中的這種操作數(shù)稱(chēng)為立即數(shù),這種尋址方式稱(chēng)為立即尋址。為了與直接尋址指令中的直接地址相區(qū)別,在立即數(shù)前面必須加上前綴“#”。 例如:指令 MOV DPTR, #1234H 其中1234H就是立即數(shù),指令功能是把16位立即數(shù)1234H送入數(shù)據(jù)指針DPTR中。,1.立即尋址,例如:指令 MOV DPTR, #1234H 機(jī)器語(yǔ)言指令: 90 12 34,程序存儲(chǔ)器,PC,PC+1,PC+2,特殊功能寄存器,DPH,DPL,12,34,2.直接尋址,直接尋址是指在指令中直接給出操作數(shù)單元的地址。 例如:指令 MOV A, 3AH 其功能是把片內(nèi)RAM中3AH單元內(nèi)的數(shù)據(jù)傳送給累加器A。直接尋址方
8、式只能給出8位地址,因此這種尋址方式的尋址范圍只限于片內(nèi)RAM。具體地說(shuō): (1)低128單元,在指令中直接以單元地址形式給出。 (2)特殊功能寄存器,這時(shí)除可以單元地址形式給出外,還可以寄存器符號(hào)形式給出。雖然特殊功能寄存器可以使用符號(hào)標(biāo)志,但在指令代碼中還是按地址進(jìn)行編碼的。 例如:指令 MOV A,B ; MOV A,F0H ;,2.直接尋址,(3)位地址空間。 特殊功能寄存器和位地址空間只能用直接尋址方式來(lái)訪問(wèn)。 例:指令: MOV A,45H ; 機(jī)器代碼:E5 45,程序存儲(chǔ)器,E5,45,PC,PC+1,片內(nèi)RAM,XX,45H,XX,A,3.寄存器尋址,寄存器尋址是指在指令中將
9、指定寄存器的內(nèi)容作為操作數(shù)。因此指定了寄存器就能得到操作數(shù)。 寄存器尋址方式中,用符號(hào)名稱(chēng)來(lái)表示寄存器。 例如:指令I(lǐng)NC R0 其功能是把寄存器R0的內(nèi)容加1,再送回R0中。由于操作數(shù)在R0中,指定了R0,也就得到了操作數(shù)。 寄存器尋址方式的尋址范圍包括: (1)在指令中只能使用當(dāng)前寄存器組。因此在使用中要通過(guò)指定PSW中的RS1、RS0,以選擇使用的當(dāng)前寄存器組。 (2)部分特殊功能寄存器。例如累加器A、B寄存器、CY以及數(shù)據(jù)指針DPTR。,3.寄存器尋址,例如:指令 MOV A,R3; 機(jī)器代碼:EB 設(shè)累加器A 的內(nèi)容為28H,R3的內(nèi)容為58H。PSW中RS1,RS0分別為:1、0。
10、則R3的地址為13H。,程序存儲(chǔ)器,EB,PC,片內(nèi)RAM,58,13H (R3),28 H,A,58H,4.寄存器間接尋址,寄存器間接尋址是指在指令中給出的寄存器內(nèi)容是操作數(shù)的地址,從該地址中取出的才是操作數(shù)。寄存器間接尋址也需以寄存器符號(hào)名稱(chēng)的形式表示,為了區(qū)別寄存器尋址和寄存器間接尋址,在寄存器間接尋址中,應(yīng)在寄存器的名稱(chēng)前面加前綴“”。 例如:指令 MOV A , R0 ;機(jī)器代碼 E6,程序存儲(chǔ)器,片內(nèi)RAM,5E,00H (R0),XX,A,5EH,XX,寄存器間接尋址的尋址范圍: (1)片內(nèi)RAM的低128單元,只能采用R0或R1作為間址寄存器,其形式為Ri(i=0,1),例:
11、MOV A,R0; (2)片外RAM的64KB單元,使用DPTR作為間址寄存器,其形式為DPTR,例如:MOVX A,DPTR,其功能是把DPTR指定的片外RAM單元的內(nèi)容送累加器A。 (3)片外RAM的256單元,除了可使用DPTR作為間址寄存器外,也可使用R0或R1作間址寄存器。例如MOVX A,R0; (4)堆棧區(qū):堆棧操作指令(PUSH和POP)也應(yīng)算作是寄存器間接尋址,即以堆棧指針(SP)作間址寄存器的間接尋址方式。,5.變址尋址,變址尋址是指以DPTR或PC作基址寄存器,累加器A作變址寄存器,以?xún)烧邇?nèi)容相加,形成的16位程序存儲(chǔ)器地址作為操作數(shù)地址,又稱(chēng)基址寄存器+變址寄存器間接尋
12、址。 有效地址=基址寄存器PC(或DPTR)+A 例如:指令 MOVC A,A+DPTR 機(jī)器代碼 93 假定指令執(zhí)行前(A)=54H, (DPTR)=1256H 變址尋址形成的操作數(shù)地址為1256H+54H=12AAH,若12AAH單元的內(nèi)容為00H,則該指令執(zhí)行的結(jié)果是A的內(nèi)容為00H。,程序存儲(chǔ)器,54,A,93,PC,SFR,56,DPL,DPH,12,1256H,54H,12AAH,12AAH,00,00,例如:指令 MOVC A, A+DPTR 機(jī)器代碼 93,變址尋址指令有: MOVC A , A+DPTR; (A+DPTR) A MOVC A , A+PC; PC+1 PC,(
13、 A+PC ) A JMP A+DPTR; ( A+DPTR ) PC 變址尋址方式用于查表操作。,6.相對(duì)尋址,相對(duì)尋址是僅用于相對(duì)轉(zhuǎn)移指令的一種尋址方式。與其他尋址方式不同,這種尋址方式是要尋找指令地址,即尋找下一條要執(zhí)行指令的地址。相對(duì)尋址的有效地址D(目的地址)為: D=PC+rel PC的當(dāng)前值稱(chēng)為源地址,它是相對(duì)轉(zhuǎn)移指令操作碼的地址;rel是相對(duì)地址,它是目的地址與源地址的差值。 相對(duì)地址的機(jī)器碼稱(chēng)為偏移量,記為disp,它與rel的關(guān)系是: dipsrel-b 目的地址=源地址+轉(zhuǎn)移指令字節(jié)數(shù)+dips 若轉(zhuǎn)移指令為2字節(jié),則b2;若轉(zhuǎn)移指令為3字節(jié),則b=3。偏移量為一字節(jié)二進(jìn)
14、制補(bǔ)碼數(shù),取值范圍為-128一+127。相對(duì)地址取值范圍為-126+129。在源程序中,相對(duì)地址rel一般用標(biāo)號(hào)表示。,6.相對(duì)尋址,例如:指令 JC 18H ;設(shè)CY=1,操作碼的地址為1000H。 機(jī)器代碼 40 16,程序存儲(chǔ)器,16,1001H,1000,PC,1000H,40,16H,1000H+2,1018H,1018H,1018H,6.相對(duì)尋址,例: 設(shè)有如下一段程序,試寫(xiě)出與JNZ RET0相對(duì)應(yīng)的機(jī)器代碼。 地址 機(jī)器代碼 標(biāo)號(hào) 源程序 0152H 70 XX JNZ RET0(A0, PC 016CH ) 016CH DO E0 RET0: POP A,解:源地址=0152
15、H,目的地址=016CH,rel=D-PC=016CH-0152H=1AH,disp=rel-2=1AH-2=18H,18,6.相對(duì)尋址,例: 設(shè)有如下一段程序,試寫(xiě)出與DJNZ R7,ML2相對(duì)應(yīng)的機(jī)器代碼。 地址 機(jī)器代碼 標(biāo)號(hào) 源程序 0110H CO DO ML2: PUSH PSW 011BH DF XX DJNZ R7,ML2,解:源地址= 011BH ,目的地址= 0110H,rel=D-PC= 0110H - 011BH = - 0BH - 0BH補(bǔ)=F5H,disp=rel-2=F5H-2=F3H,F3,7.位尋址,8051有位處理功能,可以對(duì)數(shù)據(jù)位進(jìn)行操作,因此就有相應(yīng)的位
16、尋址方式,位尋址的尋址范圍: (1)RAM中的位尋址區(qū) 片內(nèi)RAM中的單元地址20H-2FH,共16個(gè)單元128位,為位尋址區(qū),位地址是00H-7FH。對(duì)這128個(gè)位的尋址使用直接位地址表示。 例如 MOV C,2BH 指令的功能是把位尋址區(qū)的2BH位的值送累加位C。 SETB 3AH;(給3A位置1) (2)可位尋址的特殊功能寄存器位 可供位尋址的特殊功能寄存器共有11個(gè),有尋址位83位。,3.3 指令系統(tǒng),MCS51的指令系統(tǒng),共有111條指令,按其功能可分為五大類(lèi): (1)數(shù)據(jù)傳送類(lèi)指令(28條) (2)算術(shù)運(yùn)算類(lèi)指令(24條) (3)邏輯運(yùn)算類(lèi)指令(25條) (4)控制轉(zhuǎn)移類(lèi)指令(17
17、條) (5)布爾操作(位)類(lèi)指令(17條)。,3.3.1 數(shù)據(jù)傳送類(lèi)指令,一、片內(nèi)數(shù)據(jù)傳送指令 片內(nèi)數(shù)據(jù)傳送指令的助記符為MOV,大部分的傳送方式都是雙向的,現(xiàn)以目的寄存器為序列列出如下: 1.以累加器A為目的操作數(shù)的指令組 指令 操作內(nèi)容 MOV A ,Rn; ARn MOV A, direct; A(direct) MOV A, Ri; A(Ri) MOV A, #data; Adata,1.以累加器A為目的操作數(shù)的指令組 例:R1=20H,(20H)=55H;MOV A,R1執(zhí)行后,A=55H。 例:已知A=40H,R6=50H,(6FH)=32H,R0=18H,(18H)=10H,執(zhí)行
18、下列程序段: MOV A, R6 ; A 50H MOV A, 6FH ; A (6FH) MOV A, R0 ; A (R0) 執(zhí)行后,A=10H。,2.以工作寄存器Rn為目的操作數(shù)的指令組 指令 操作內(nèi)容 MOV Rn, A ; RnA MOV Rn, direct ; Rn(direct) MOV Rn, #data ; Rndata 這組指令的功能是把源操作數(shù)的內(nèi)容送入當(dāng)前工作寄存器區(qū)的R0-R7中的某一個(gè)寄存器,源操作數(shù)有寄存器尋址、直接尋址和立即尋址等尋址方式。 例:已知A=3FH,(4EH)=2FH,R1=20H,R3=30H,執(zhí)行下列程序段: MOV A,#2EH ; A 2E
19、H MOV R1 ,A ; R1 A MOV R2 ,4EH ; R2 ( 4EH ) MOV R3 ,#6FH ; R3 6FH 執(zhí)行后,A=2EH,R2=2FH,R3=6FH,3.以直接地址direct為目的操作數(shù)的指令組 指令 操作內(nèi)容 MOV direct, A ; (direct)A MOV direct, Rn ; (direct)Rn MOV direct1, direct 2 ; (direct1)(direct2) MOV direct, Ri ; (direct)(Ri) MOV direct, #data ; (direct) data 這組指令的功能是把源操作數(shù)的內(nèi)容送
20、入由直接地址指出的存儲(chǔ)單元。源操作數(shù)有寄存器尋址、直接尋址、寄存器間接尋址和立即尋址等尋址方式。,例如: MOV A,80H ; 表示把片內(nèi)RAM中地址為80H單元(即P1口)中的內(nèi)容送A。 MOV 80H,#88H ; 表示把立即數(shù)88H送到片內(nèi)RAM中的80H地址單元中去。 MOV 80H, E0H ; 表示把E0H單元的內(nèi)容送到80H單元中去。這是片內(nèi)數(shù)據(jù)存儲(chǔ)單元中的直接地址單元之間數(shù)據(jù)的直接傳送。,4間接地址為目的操作數(shù)的指令 指令 操作內(nèi)容 MOV Ri , A ; (Ri) A MOV Ri , direct ; (Ri) (direct) MOV Ri , #data ; (Ri
21、) data 例:A=30H,R1=40H, MOV R1 , A ; 執(zhí)行后, (40H)=30H。,二、16位數(shù)目標(biāo)地址傳送指令,MOV DPTR, #data16; 該指令把16位常數(shù)裝入數(shù)據(jù)指針DPTR,即數(shù)據(jù)高八位送入DPH寄存器,數(shù)據(jù)低八位送入DPL寄存器。16位常數(shù)在指令的第二、第三字節(jié)中(第二字節(jié)為高位字節(jié)DPH,第三字節(jié)為低位字節(jié)DPL)。此操作不影響標(biāo)志位。 例:執(zhí)行指令 MOV DPTR,#1234H 執(zhí)行結(jié)果:(DPH)=12H, (DPL)=34H,三、堆棧操作指令 PUSH direct:SPSP+1,(SP) (direct) POP direct:(direct
22、) (SP),SP SP-1 例如:設(shè)SP=30H,(50H)=80H,指令如下: PUSH 50H ; SP SP+1,(31H) (50H) POP 40H ;(40H) (31H),SP SP- 1 程序執(zhí)行過(guò)程中如圖所示。,四、查表指令,MOVC A,A+PC ;PC PC+1,A ( A+PC) MOVC A,A+DPTR ;A (A+DPTR) 例如,在程序存儲(chǔ)器中,數(shù)據(jù)表格為: 1010H:01 1011H:02 1012H:03 執(zhí)行程序: 1000H:MOV A,#0DH ; A 0DH 1002H:MOVC A,A+PC ; A(0DH+1003H) 結(jié)果:A=01H,PC
23、=1003H。,例如:在程序存儲(chǔ)器中,數(shù)據(jù)表格為: 2000H:01H 2001H:23H 2002H:45H 2003H:67H 執(zhí)行程序: 1000H:MOV A, #03H 1002H:MOV DPTR , #2000H 1005H:MOVC A, A+DPTR 結(jié)果:A=67H,DPTR=2000H。,五、片外數(shù)據(jù)傳送指令,片外數(shù)據(jù)傳送指令的助記符為MOVX,片外數(shù)據(jù)傳送必須使用累加器A,另一操作對(duì)象采用間接尋址方式。 指令 操作內(nèi)容 MOVX A , Ri ; A (Ri) MOVX A , DPTR ; A (DPTR) MOVX Ri , A ; (Ri ) A MOVX DPT
24、R , A ; (DPTR) A,例如:DPTR=2000H,(2000H)=18H 指令 MOVX A, DPTR;執(zhí)行后 A=18H,例如,把片內(nèi)RAM40H單元中內(nèi)容送到片外RAM 2000H單元中去。程序如下: MOV A, 40H ;A(40H) MOV DPTR, #2000H ;DPTR2000H MOVX DPTR, A ;(2000H)A 例如,把片外RAM2100H單元內(nèi)容傳送2120H 單元中去,程序如下: MOV DPTR, #2100H MOVX A, DPTR MOV DPTR, #2120H MOVX DPTR, A,六、交換指令,1、字節(jié)交換指令 XCH A,
25、Rn ; A Rn XCH A, direct ; A (direct) XCH A, Ri ; A (Ri) 上述指令的功能是,將累加器A的內(nèi)容與源操作數(shù)所指出的數(shù)據(jù)互相交換。 例如,已知R0=10H,A=4EH,(10H)=5FH;執(zhí)行指令:XCH A, R0 ; 結(jié)果:A=5FH,(10H)=4EH。,2、半字節(jié)交換指令 XCHD A ,Ri ;A.3-A.0 (Ri.3-Ri.0) 該指令的功能是,將累加器A中低4位與Ri間接尋址單元內(nèi)容的低4位相互交換,而各自的高4位內(nèi)容不變。 例如,已知R0=10H,A=35H,片內(nèi)RAM(10H)=46H; 執(zhí)行指令:XCHD A , R0; 結(jié)
26、果:A=36H,(10H)=45H。,3、累加器A的高4位與低4位內(nèi)容互換指令 SWAP A ; A.3-A.0 A.7-A.4 該指令的功能是,將A的高、低兩半字節(jié)相互交換。 例:設(shè)A=86H,程序如下: MOV R3,#4FH ; R3 4FH XCH A,R3 ; A R3 SWAP A ; A.7- A.4 A.3-A.0 XCH A,R3 ; A R3 結(jié)果:A=86H,R3=F4H,3.3.2 算術(shù)運(yùn)算類(lèi)指令,MCS51算術(shù)運(yùn)算指令,主要是對(duì)8位無(wú)符號(hào)二進(jìn)制數(shù)進(jìn)行加法、減法、乘法和除法四則運(yùn)算;增1、減1運(yùn)算; 可以實(shí)現(xiàn)對(duì)壓縮BCD碼加減運(yùn)算和對(duì)帶符號(hào)二進(jìn)制數(shù)進(jìn)行2的補(bǔ)碼運(yùn)算。 算
27、術(shù)運(yùn)算指令共有24條。在加法、帶進(jìn)位加法和帶借位減法的指令中,累加器A中總是存放目的操作數(shù),并存放操作的中間結(jié)果;而源操作數(shù)則可以是立即數(shù)、工作寄存器內(nèi)容、間接或直接尋址片內(nèi)RAM內(nèi)容。這些指令都影響程序狀態(tài)字PSW的進(jìn)位位C、溢出位OV、半進(jìn)位位AC和奇偶標(biāo)志位P。僅當(dāng)源操作數(shù)為A時(shí),加1、減1指令才對(duì)標(biāo)志位P有影響。乘法、除法指令影響標(biāo)志位OV和P。,一、加法類(lèi)指令,1、加法指令(4條) ADD A,Rn ; A A+Rn ADD A,direct ; A A+(direct) ADD A, Ri ; A A+(Ri) ADD A, #data ; A A+data 這組指令的功能是,把源
28、操作數(shù)所指出的內(nèi)容和累加器A的內(nèi)容相加,其結(jié)果存放在累加器A中。,例如,設(shè)A=85H,R0=20H,(20H)=9EH 執(zhí)行指令: ADD A,R0; 其操作如下: 1000 0101 +)1001 1110 10010 0011 結(jié)果:A=23H、Cy=1、AC=1、OV=1、P=1。,2、帶進(jìn)位加法指令(4條),ADDC A ,Rn ; A A+Rn+Cy ADDC A ,direct ; A A+(direct)+Cy ADDC A ,Ri ; A A+(Ri)+Cy ADDC A ,#data ; A A+data+Cy 這是一組帶進(jìn)位的加法指令。其功能是,把源操作數(shù)所指出的內(nèi)容和累加
29、器A的內(nèi)容以及進(jìn)位標(biāo)志Cy相加,結(jié)果存放在A中。帶進(jìn)位加法指令常用于多字節(jié)加法運(yùn)算。,例如,設(shè)A=4EH,R0=20H,(20H)=9EH,Cy=1: 執(zhí)行指令:ADDC A,R0; 其操作如下: 0100 1110 1001 1110 +) 1 1110 1101 結(jié)果:A=EDH,Cy=0,AC=1,OV=0,P=0。,3、加1指令(5條),INC A ; A A+1 INC Rn ; Rn Rn+1 INC direct ; (direct) (direct)+1 INC DPTR ; DPTR DPTR+1 INC Ri ; (Ri) (Ri)+1 這組指令的功能是,把操作數(shù)所指定單元
30、的內(nèi)容加1。其操作除第一條指令影響奇偶標(biāo)志位外,其余指令操作均不影響PSW。 當(dāng)用上述指令對(duì)并行I/O口的內(nèi)容加1時(shí),其原來(lái)的數(shù)據(jù)不是從I/O口的引腳上讀入,而是從I/O口的輸出鎖存器中讀入,加1后仍保存于輸出鎖存器下,即對(duì)I/O進(jìn)行讀改寫(xiě)操作。,4. 二十進(jìn)制調(diào)整指令(1條),DA A ; 十進(jìn)制修正 這條指令的功能是,對(duì)BCD碼加法運(yùn)算的結(jié)果自動(dòng)進(jìn)行修正,以便得到正確的BCD碼運(yùn)算結(jié)果。 如前所述,09的BCD碼是用4位二進(jìn)制數(shù)(00001001)表示的,進(jìn)行加法運(yùn)算時(shí),兩位BCD數(shù)之間應(yīng)逢十進(jìn)位。但是,計(jì)算機(jī)中加法運(yùn)算都是按二進(jìn)制規(guī)則進(jìn)行的,所以對(duì)于用4位二進(jìn)制數(shù)表示的1位BCD數(shù)實(shí)際上
31、是逢十六進(jìn)位,顯然不符合十進(jìn)制運(yùn)算的要求,可能產(chǎn)生錯(cuò)誤的結(jié)果。因此,在BCD碼加法運(yùn)算后,必須進(jìn)行十進(jìn)制調(diào)整,這樣才可以得到正確的BCD碼結(jié)果。,例如:設(shè)A=(00111000)BCD(即38) data=(01001001)BCD(即49):執(zhí)行指令:ADD A, #data; 其操作如下: 0011 1000 +) 0100 1001 1000 0001 由于計(jì)算機(jī)中是按二進(jìn)制進(jìn)行運(yùn)算的,BCD碼結(jié)果為81,這顯然是錯(cuò)誤的。如果在ADD A, #data;指令執(zhí)行之后,再執(zhí)行一條指令DA A;即 1000 0001 +) 0000 0110(+6修正) 1000 0111 所得結(jié)果為87,
32、即調(diào)整后得到的BCD碼結(jié)果是正確的。,DA A; 指令的操作過(guò)程是:測(cè)試?yán)奂悠鰽的低4位及輔助進(jìn)位位AC,若A中的低4位值大于9或AC=1,則累加器A的低4位加6修正;測(cè)試?yán)奂悠鰽的高4位及進(jìn)位位CY,若A中的高4位值大于9或CY=1,則A的高4位加6修正;否則,不修正。 需要注意的是:DA A;指令只對(duì)累加器A起作用,它不能單獨(dú)使用,且必須在加法指令A(yù)DD和ADDC之后,也不適用于減法指令。,例,編寫(xiě)6位BCD碼加法程序。 解:設(shè)被加數(shù)存于片內(nèi)RAM的30H32H單元中,加數(shù)存于40H42H單元中,低位在前,高位在后,各單元中均為壓縮BCD碼。結(jié)果和分別存入50H52H單元中。程序如下: M
33、OV A,30H ADD A,40H; A (30H)+(40H) DA A MOV 50H,A ; 低2位BCD碼之和存入50H中 MOV A,31H ADDC A,41H; A (31H)+(41H)+Cy DA A MOV 51H,A;中間2位BCD碼及低位進(jìn)位之和存51H中 MOV A ,32H ADDC A,42H; A (32H)+(42H)+C DA A MOV 52H,A: 高2位BCD碼及進(jìn)位之和存入52H中,二、減法類(lèi)指令,1.帶借位的減法指令(4條) SUBB A, Rn ; A A-Rn-Cy SUBB A, direct ; A A-(direct)-Cy SUBB
34、A, Ri ; A A-(Ri)-Cy SUBB A, #data ; A A-data-Cy 這組指令的功能是,將累加器A中的數(shù)減去源操作數(shù)所指出的數(shù)和進(jìn)位位Cy(有借位時(shí)Cy =1),其差值存入A中。 MCS51指令系統(tǒng)中,只有帶借位的減法指令,在進(jìn)行單字節(jié)或多字節(jié)減法運(yùn)算時(shí),應(yīng)先將進(jìn)位標(biāo)志位Cy清0。,例:編寫(xiě)多字節(jié)減法運(yùn)算程序。 解:設(shè)被減數(shù)在片內(nèi)RAM30H32H單元中,減數(shù)在40H42H單元中,低位數(shù)對(duì)應(yīng)低位地址,高位數(shù)對(duì)應(yīng)高位地址,其差值存入50H52H單元中。程序如下: CLR C ; CY清0 MOV A,30H SUBB A,40H ;A (30H)-(40)-CY MOV
35、 50H,A MOV A,31H SUBB A,41H ;A (31H)-(41H)-CY MOV 51H,A MOV A ,32H SUBB A,42H ;A (32H)-(42H)-CY MOV 52H, A,例:編寫(xiě)十進(jìn)制減法程序。 解:由于MCS51沒(méi)有十進(jìn)制減法指令,為了能借用DA A 指令,可采用減法變成補(bǔ)碼相加的辦法,用9AH減去減數(shù),即得以10為模的減數(shù)的補(bǔ)碼。 設(shè)被減數(shù)和減數(shù)均為壓縮BCD碼,分別存于R3、R4中,其差值也存入R3中,程序如下: BCDSUB:CLR C MOV A,#9AH ;求減數(shù)的補(bǔ)碼 SUBB A,R4 ADD A,R3 ;補(bǔ)碼相加 DA A MOV
36、R3,A,2、減1指令(4條) DEC A ; A A-1 DEC Rn ; Rn Rn-1 DEC direct ; (direct) (direct)-1 DEC Ri ; (Ri) (Ri)-1 這組指令的功能是,把操作數(shù)所指定的單元的內(nèi)容減1,其操作除第一條指令影響奇偶標(biāo)志外,其余指令操作均不影響PSW標(biāo)志。 與加1指令一樣,對(duì)并行I/0口的輸出內(nèi)容進(jìn)行減1操作時(shí),其原來(lái)口數(shù)據(jù)的值將從1/0口的輸出鎖存器讀入,減1后的值仍保存于輸出鎖存器中,而不是對(duì)該輸出口的引腳上內(nèi)容進(jìn)行減1操作。,三、乘法指令(1條),MUL AB ;BA AXB 這條指令的功能是,把累加器A和寄存器B中的兩個(gè)8位
37、無(wú)符號(hào)數(shù)相乘,所得16位乘積的低字節(jié)放在A中,高字節(jié)放在B中。如果乘積大于255(FFH),則溢出標(biāo)志位OV置I,否則清0,CY總是為0。 例如,設(shè)A=40H,B=5EH; 執(zhí)行指令:MUL AB 結(jié)果:A=80H,B=17H,乘積是1780H。,四、除法指令(1條),DIV AB ;AB的商 A,余數(shù) B 這條指令的功能是將累加器A中8位無(wú)符號(hào)整數(shù)除以寄存器B中8位無(wú)符號(hào)整數(shù)。所得商的整數(shù)部分存于A中,余數(shù)存于B中。 如果除數(shù)為0,則指令執(zhí)行結(jié)果為不定值,即A和B中內(nèi)容不確定, 即0不能作除數(shù)。此時(shí),OV置I。否則清0 。 例如,設(shè)A=F8H,B=12H; 執(zhí)行指令;DIV AB 結(jié)果:A=
38、0DH(商),B=0EH(余數(shù))。,例:編寫(xiě)將累加器A中二進(jìn)制數(shù)轉(zhuǎn)換成3位BCD碼程序,結(jié)果的百位數(shù)存于R7,十位數(shù)和個(gè)位數(shù)存于R6。 解:應(yīng)用除法指令,將待轉(zhuǎn)換的數(shù)除以100,得百位數(shù),再將余數(shù)除以10,得十位數(shù),最后的余數(shù),即為個(gè)位數(shù),編寫(xiě)程序如下: MOV B,#100 DIV AB ;A中商為百位數(shù) MOV R7,A ;百位數(shù)送R7 MOV A , #10 XCH A,B ;B中余數(shù)與A中除數(shù)10互換 DIV AB ;A中得十位數(shù),B中得個(gè)位數(shù) SWAP A ADD A,B ;組合成2位BCD碼 MOV R6,A ;十位、個(gè)位數(shù)送R6,3.3.3 邏輯運(yùn)算類(lèi)指令,這類(lèi)指令主要用于對(duì)8位
39、數(shù)進(jìn)行邏輯運(yùn)算,包括邏輯與、邏輯或、邏輯異或、取反、清零以及循環(huán)移位指令。 邏輯運(yùn)算指令共有24條,下面分別予以介紹。 一、邏輯與指令(6條) ANL A, Rn ; A ARn ANL A, direct ; A A(direct) ANL A, Ri ; A A(Ri) ANL A, #data ; A Adata ANL direct, A ; (ditect) (ditect)A ANL direct, #date ; (ditect) (ditect)data,上述前四條指令的目的操作數(shù)是累加器A,源操作數(shù)可以是工作寄存器、片內(nèi)RAM和立即數(shù)。指令的功能是,將A中的內(nèi)容和源操作數(shù)所指
40、定的內(nèi)容按位邏輯與,結(jié)果存入目的操作數(shù)A中。 后兩條指令的目的操作數(shù)是直接尋址單元內(nèi)容,源操作數(shù)是累加器A或立即數(shù),兩個(gè)操作數(shù)的內(nèi)容按位邏輯與,結(jié)果存入直接尋址單元中。 當(dāng)直接尋址并行I/0口時(shí),其情況與算術(shù)運(yùn)算指令類(lèi)同。其原來(lái)的數(shù)據(jù)不是從I/O口的引腳上讀入,而是從I/O口的輸出鎖存器中讀入,即對(duì)I/O進(jìn)行讀改寫(xiě)操作。,例如,已知A=8DH,R0=7EH; 執(zhí)行指令:ANL A,R0 其操作如下: 1000 1101 (8DH) )0111 1110 (7EH) 0000 1100 (0CH) 結(jié)果:A=0CH。 邏輯與指令常用于屏蔽某些位,如上例所示,將A的D7位和D0位變?yōu)?,即屏蔽了。
41、由此可見(jiàn),用ANL指令屏蔽某些位,方法是將需屏蔽的位和0相與。,二、邏輯或指令(6條),ORL A, Rn ; A AVRn ORL A, direct ; A AV(direct) ORL A, Ri ; A AV(Ri) ORL A, #data ; A AVdata ORL direct , A ; (direct) (direct)VA ORL direct, #data ; (direct) (direct)Vdata 這組指令的目的操作數(shù)和源操作數(shù)跟邏輯與指令的相同,兩個(gè)操作數(shù)指定的內(nèi)容按位相或運(yùn)算。前四條指令結(jié)果存入A中;后兩個(gè)指令結(jié)果存入直接尋址單元中。對(duì)并行I/O口的操作跟邏
42、輯與操作類(lèi)同。,例如,已知A=DAH,R0=25H; 執(zhí)行指令:ORL A,R0; 其操作如下: 11011010(DHA) V)00100101(25H) 11111111(FFH) 結(jié)果A=FFH 由上例可以看出,兩個(gè)操作數(shù)中任一位只要有一個(gè)是1,該位操作結(jié)果為1;而只有兩位均為0時(shí),結(jié)果才為0。因此,可采用邏輯或指令實(shí)現(xiàn)對(duì)某些位置位的功能,同時(shí)邏輯或指令也可用于組合信息。,例如,將累加器A的D7、D5、D3、D1置1,其余位置0,送入外部數(shù)據(jù)存儲(chǔ)器2000H單元。編寫(xiě)程序如下 ORL A,#10101010B ;A的D7、D5、D3、D1位置1 ANL A,#10101010B ;A的D
43、6、D4、D2、D0位屏蔽 MOV DPTR,#2000H MOVX DPTR,A ;存數(shù),三、邏輯異或指令(6條),兩個(gè)操作數(shù)所指定的內(nèi)容按位異或。前四條指令結(jié)果存入A中;后兩條指令結(jié)果存入直接尋址單元中。對(duì)并行I/O口的異或操作跟邏輯與操作類(lèi)同。利用上述所令,可對(duì)目的操作數(shù)的某些位取反,只需將取反的位與1相異或,這時(shí)源操作數(shù)常用立即數(shù)。,XRL A, Rn ; A AVRn XRL A, direct ; A AV(direct) XRL A, Ri ; A AV(Ri) XRL A, #data ; A AVdata XRL direct , A ; (direct) (direct)V
44、A XRL direct, #data ; (direct) (direct)Vdata,例如,已知A=A5H,要求對(duì)高4位取反 執(zhí)行指令:XRL A,#11110000B。 其操作如下: 1010 0101(A5H) )1111 0000(F0H) 0101 0101(55H) 結(jié)果:A=55H。,四、累加器A清零指令(1條) CLR A ;A 0 這條指令的功能是將累加器A的內(nèi)容清0。 五、累加器A取反指令(1條) CPL A ;A A 這條指令的功能是將累加器A的內(nèi)容逐位取反。,六、累加器A循環(huán)移位指令(4條),前兩條指令的功能是,分別將累加器A的內(nèi)容循環(huán)左移或右移一位;后兩條指令的功能
45、是,分別將累加器A的內(nèi)容連同進(jìn)位位CY循環(huán)左移或右移一位。,3.3.4 控制轉(zhuǎn)移類(lèi)指令,控制轉(zhuǎn)移類(lèi)指令屬于程序控制指令。其作用是,改變程序執(zhí)行的方向,或調(diào)用子程序,或從子程序返回。這些都是通過(guò)改變程序計(jì)數(shù)器PC中的內(nèi)容來(lái)實(shí)現(xiàn)的。這類(lèi)指令可分為轉(zhuǎn)移指令、調(diào)用子程序指令和返回指令。下面分別予以介紹。,一、轉(zhuǎn)移類(lèi)指令,轉(zhuǎn)移類(lèi)指令通過(guò)改變PC的內(nèi)容,以改變正在執(zhí)行的指令順序,轉(zhuǎn)向新的地址繼續(xù)執(zhí)行下去,從而實(shí)現(xiàn)程序分支。根據(jù)指令轉(zhuǎn)移的條件,轉(zhuǎn)移指令可分為無(wú)條件轉(zhuǎn)移指令和條件轉(zhuǎn)移指令。前者CPU無(wú)條件地轉(zhuǎn)移到指定位置執(zhí)行程序,后者只有當(dāng)條件滿(mǎn)足時(shí)才能實(shí)現(xiàn)程序的轉(zhuǎn)移,否則繼續(xù)執(zhí)行下一條指令。條件轉(zhuǎn)移指令是使
46、CPU能夠進(jìn)行邏輯判斷的主要手段。,1、無(wú)條件轉(zhuǎn)移指令(4條) LJMP addr16 ;PC addr16 AJMP addr11 ;PC PC+2,PC.10-PC.0 addr11 JMP A+DPTR ;PC (A+DPTR) SJMP rel ;PC PC +rel 第一條指令叫長(zhǎng)轉(zhuǎn)移指令,執(zhí)行結(jié)果是,將16位地址addrl6送程序計(jì)數(shù)器PC中。 第二條指令叫絕對(duì)轉(zhuǎn)移指令,指令中只提供了低11位地址,PC當(dāng)前值的高5位不變,程序只能轉(zhuǎn)移到下一條指令開(kāi)始的2K字節(jié)范圍內(nèi)執(zhí)行,其機(jī)器碼為: a10 a9 a8 00001 ;其中00001為操作碼 a7 a6 a5 a4 a3 a2 a1
47、 a0 ;a10-a0為11位數(shù) 第三條指令是變址尋址(間接)轉(zhuǎn)移指令,它是將累加器A中的8位數(shù)和數(shù)據(jù)指針DPTR中的16位數(shù)相加,形成16位的轉(zhuǎn)移目標(biāo)地址送給PC,而不改變A和DPTR的內(nèi)容,不影響標(biāo)志位。 第四條指令叫短轉(zhuǎn)移指令是兩字節(jié)無(wú)條件相對(duì)轉(zhuǎn)移指令,該指令執(zhí)行后,程序便轉(zhuǎn)移到當(dāng)前PC值與rel值之和所指示的地址單元。,例如: 地址 指令 1030H: AJMP addr11 設(shè)add11=00110000101B,指令的機(jī)器碼: 001 00001 10000101 指令執(zhí)行后:PC=00010 001 10000101 PC=1185H 程序轉(zhuǎn)到1185H處執(zhí)行。 例如:設(shè)累加器A
48、中內(nèi)容為0-6之間的偶數(shù),程序存儲(chǔ)器中存放著標(biāo)號(hào)為JPTBL的轉(zhuǎn)移表。執(zhí)行下面程序,將根據(jù)A的內(nèi)容轉(zhuǎn)到相應(yīng)的分支處理程序。 MOV DPTR ,#JPTBL JMP A+DPTR JPTBL:AJMP LABEL0 ;轉(zhuǎn)LABEL0分支程序 AJMP LABEL1 ;轉(zhuǎn)LABEL1分支程序 AJMP LABEL2 ;轉(zhuǎn)LABEL2分支程序 AJMP LABEL3 ;轉(zhuǎn)LABEL3分支程序,2、條件轉(zhuǎn)移指令(10條),在多數(shù)情況下,程序的轉(zhuǎn)移是有條件的,由條件轉(zhuǎn)移指令來(lái)實(shí)現(xiàn)。根據(jù)給定的條件進(jìn)行檢測(cè),若條件得到滿(mǎn)足,則程序轉(zhuǎn)向指定的目標(biāo)地址去執(zhí)行;否則,不轉(zhuǎn)移,繼續(xù)往下執(zhí)行程序。這類(lèi)條件轉(zhuǎn)移指令都
49、是相對(duì)轉(zhuǎn)移指令,其轉(zhuǎn)移的范圍是以轉(zhuǎn)移指令的下一條指令的第一個(gè)字節(jié)地址為起始地址的-128+127個(gè)字節(jié)內(nèi)。 下面按不同的檢測(cè)條件分四種情況加以介紹。,1)判零轉(zhuǎn)移指令 JZ rel JNZ rel 這兩條指令都是對(duì)累加器A的內(nèi)容進(jìn)行檢測(cè),根據(jù)A中的內(nèi)容是否為零來(lái)決定程序是否轉(zhuǎn)移,指令執(zhí)行后,A的內(nèi)容不變。指令執(zhí)行過(guò)程如圖所示。,2)判C、轉(zhuǎn)移指令 JC rel JNC rel 這兩條指令是以PSW中的進(jìn)位標(biāo)志CY作為檢測(cè)條件,根據(jù)CY標(biāo)志的情況來(lái)決定程序是否轉(zhuǎn)移。指令執(zhí)行過(guò)程如圖所示。CY也是布爾(位)處理器的累加器,所以也可作為位處理CY轉(zhuǎn)移指令,用于位處理方式。,3.比較轉(zhuǎn)移指令 CJNE
50、 A, direct, rel CJNE A, #data, rel CJNE Rn, #data, rel CJNE Ri, #data, rel 指令的功能是,比較兩個(gè)操作數(shù)的大小,如果它們的值不相等,則程序轉(zhuǎn)移,轉(zhuǎn)移的目標(biāo)地址是PC+rel;如果它們的值相等,則不轉(zhuǎn)移,程序繼續(xù)往下(PC+3)執(zhí)行。若第一操作數(shù)大于第二操作數(shù),則CY=0;若第一操作數(shù)小于第二操作數(shù),則CY=1。指令執(zhí)行不影響任何一個(gè)操作數(shù)的內(nèi)容。指令執(zhí)行過(guò)程如圖所示,圖中S1、S2分別表示第一操作數(shù)和第二操作數(shù)。,CJNE是三字節(jié)指令,指令匯編后的機(jī)器語(yǔ)言格式如 下: 操作碼 data rel-3 例如:指令 CJNE
51、A,#45H,40H 機(jī)器代碼 B4 45 3D 三字節(jié)相對(duì)轉(zhuǎn)移指令的偏移量計(jì)算規(guī)則如下: 向后轉(zhuǎn)移:偏移量=目的地址-(源地址+3) 向前轉(zhuǎn)移:偏移量=(目地地址+0100H)-(源地址+3),例:已知程序段如下,試計(jì)算偏移量disp。 地址 機(jī)器碼 源程序 2000H B4 80 disp CJNE A,#80H ,ADDR 2006H 24 38 ADDR: ADD A,#38H 解:目的地址大于源地址,這是向后轉(zhuǎn)移的情況,所以 disp=2006H-(2000H+3)=03H,例:已知程序段如下,試計(jì)算偏移量disp。 地址 機(jī)器碼 源程序 204DH 24 OF ADDR:ADD A
52、,#OFH 205DH B4 80 disp CJNE A,#80H,ADDR 解:目的地址小于源地址,這是向前轉(zhuǎn)移的情況,所以 disp=(204DH+0100H)(205DH+3)=EDH,4)循環(huán)轉(zhuǎn)移指令 DJNZ Rn,rel DJNZ direct,rel 指令執(zhí)行示意圖所示。,例:累加器A的內(nèi)容由0遞增,加到100,其結(jié)果存在累加器A中,試編寫(xiě)該程序。 解:程序如下: 地址 機(jī)器碼 源程序 2000H E4 CLR A ;A清0 2001H 75 50 64 MOV 50H,#64H ;設(shè)循環(huán)次數(shù) 2004H 04 L1:INC A ;累加 2005H D5 50 FC DJNZ
53、50H,L1 ;不為0,轉(zhuǎn)L1 ;否則,順序執(zhí)行,二、調(diào)用子程序及返回指令,1、調(diào)用子程序指令(2條) LCALL addrl6 ; PC PC+3,SP SP+1,(SP) PC7-0 SP SP+1,(SP) PC15-8,PC addrl6 ACALL addr11 ;PC PC+2,SP SP+1,(SP) PC7-0 SP SP+1(SP) PC15-8,PC10-0 addr11 第一條指令LCALL為長(zhǎng)調(diào)用指令,addr16是子程序入口地址。執(zhí)行時(shí),先將斷口地址壓入堆棧。然后將子程序入口地址裝入PC,CPU轉(zhuǎn)去執(zhí)行子程序。 由于該指令提供了16位的子程序入口地址addr16,所以
54、可調(diào)用64KB范圍內(nèi)所指定的子程序。LCALL指令為三字節(jié)指令,其匯編后機(jī)器語(yǔ)言格式為:12 addr15-8 addr7-0即緊接操作碼12H后,16位地址先高位后低位,按順序排列。,第二條指令A(yù)CALL為短調(diào)用指令(雙字節(jié)指令)。其執(zhí)行過(guò)程類(lèi)似于LCALL指令。 但是,由于指令只提供了11位程序入口地址,因此被調(diào)用的子程序入口地址必須與調(diào)用指令A(yù)CALL的下一條指令的第一個(gè)字節(jié)在相同的2KB存儲(chǔ)區(qū)內(nèi)。,2.返回指令(2條),RET ; PC15-8 (SP),SP SP-1 PC7-0 (SP),SP SP-1 RETI ; PC15-8 (SP),SP SP-1 PC7-0 (SP),S
55、P SP-1 第一條指令是子程序返回指令。指令的功能是,將堆棧內(nèi)的斷口地址彈出送入PC,使CPU返回到原斷口地址處,繼續(xù)執(zhí)行原程序。 第二條指令是中斷返回指令。這條指令除了執(zhí)行RET指令的功能外,還清除內(nèi)部相應(yīng)的中斷狀態(tài)寄存器(該寄存器由CPU響應(yīng)中斷時(shí)置位)的內(nèi)容。它只能用于中斷服務(wù)程序,RETI與RET不能互換使用。返回指令只能置于子程序或中斷服務(wù)程序的末尾,表示子程序或中斷服務(wù)程序的結(jié)束。,三、空操作指令(1條),NOP ;PC PC+1 這是一條單字節(jié)指令。執(zhí)行時(shí),不作任何操作(即空操作),僅將程序計(jì)數(shù)器PC的內(nèi)容加1,使CPU指向下一條指令繼續(xù)執(zhí)行程序。這條指令常用于產(chǎn)生一個(gè)機(jī)器周期的延遲或在程序中補(bǔ)空,便于程序調(diào)試時(shí)指令的增刪。,3.3.5 位操作類(lèi)指令,MCS-51單片機(jī)從硬件到軟件構(gòu)成了完整的按位操作的布爾處理器,或稱(chēng)位處理器。它與一般微處理器的主要區(qū)別在于:CPU不是以字節(jié)或字而是以位作為處理對(duì)象進(jìn)行操作的。進(jìn)行位操作時(shí),以進(jìn)位標(biāo)志Cy作為位累加器,具有一套按位處理指令集,包括位數(shù)據(jù)傳送、位邏輯運(yùn)算和位條件控制轉(zhuǎn)移等指令。 在MCS-51單片機(jī)內(nèi)部數(shù)據(jù)存儲(chǔ)器中,有兩部分按位尋址的存儲(chǔ)地址空間:一部分是片內(nèi)RAM的20H-2FH共16個(gè)字節(jié)單元128位,其位地址為00H-
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 軟件質(zhì)量保證流程
- 工業(yè)智能制造技術(shù)實(shí)踐指南
- 2026年文學(xué)鑒賞與文學(xué)理論考試題集
- 2026年移動(dòng)支付呼叫中心業(yè)務(wù)測(cè)試題
- 2026年行政事業(yè)單位移民業(yè)務(wù)考試題目
- 胃炎患者的日常飲食管理
- 2026年一級(jí)建造師考試實(shí)務(wù)科目試題解析
- 2026年全民健身運(yùn)動(dòng)會(huì)測(cè)試卷身體素質(zhì)鍛煉題型
- 2026年交通運(yùn)輸崗位應(yīng)聘考核題及解答參考
- 2026年國(guó)際關(guān)系專(zhuān)業(yè)綜合知識(shí)模擬題
- 2025大模型安全白皮書(shū)
- 2026國(guó)家國(guó)防科技工業(yè)局所屬事業(yè)單位第一批招聘62人備考題庫(kù)及1套參考答案詳解
- 工程款糾紛專(zhuān)用!建設(shè)工程施工合同糾紛要素式起訴狀模板
- 2026湖北武漢長(zhǎng)江新區(qū)全域土地管理有限公司招聘3人筆試備考題庫(kù)及答案解析
- 110(66)kV~220kV智能變電站設(shè)計(jì)規(guī)范
- (正式版)DB44∕T 2784-2025 《居家老年人整合照護(hù)管理規(guī)范》
- 2025年美國(guó)心臟病協(xié)會(huì)心肺復(fù)蘇和心血管急救指南(中文完整版)
- (2025年)教育博士(EdD)教育領(lǐng)導(dǎo)與管理方向考試真題附答案
- 1、湖南大學(xué)本科生畢業(yè)論文撰寫(xiě)規(guī)范(大文類(lèi))
- 基于多源數(shù)據(jù)融合的深圳市手足口病時(shí)空傳播模擬與風(fēng)險(xiǎn)預(yù)測(cè)模型構(gòu)建及應(yīng)用
- 咯血的急救及護(hù)理
評(píng)論
0/150
提交評(píng)論