2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩187頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、,第 3 章 單片機指令系統(tǒng),教學目標3.1 MCS-51單片機指令系統(tǒng)概述3.2 尋址方式3.3 數(shù)據(jù)傳送類指令3.4 算術與邏輯運算指令3.5 控制轉(zhuǎn)移類指令與位操作類指令本章小結(jié)思考題與習題,教學目標,1. 理解MCS-51指令的基本格式和各組成部分的功能。 2. 了解MCS-51指令分類情況。 3. 熟悉和理解指令系統(tǒng)中常用符號的書寫形式及含義。 4. 理解MCS-

2、51的7種尋址方式的形式、尋址 范圍和特點。 5. 熟悉和掌握MCS-51的111條指令的形式、功能和簡單應用。,1、指令:,2 、指令系統(tǒng):,一種確定的CPU,它可以執(zhí)行什么操作/可執(zhí)行多少種操作,完全由CPU 設計師確定,用戶只能了解、應用這些操作以完成自己的工作。,規(guī)定CPU執(zhí)行何種操作的命令,由二進碼組成,稱為機器碼。指令由操作碼和操作數(shù)兩部分組成。,規(guī)定CPU執(zhí)行操作的全部命令的集合。,3 、程序:,指令按照要求有

3、序排列。,3.1 MCS-51單片機指令系統(tǒng)概述,3.1.1 指令、指令系統(tǒng)的概念,7407 H; 240A H;,編程舉例:設計實現(xiàn)Y=7+10,,指令=操作碼+操作數(shù),MOV A,#07H; ADD A,#0AH ;,用助記符號寫出的二進制代碼(機器語言),稱為CPU的匯編語言。匯編語言與二進碼指令一一對應。,0111010000000111B; 0010010000001010B;,,void jiafa(void)

4、 { unsigned char i; i=7+10; },3.1.2 符號指令的格式,一般格式: [標號:] 操作助記符 [目的操作數(shù)][,源操作數(shù)][;注釋],每條指令通常由操作碼和操作數(shù)兩部分組成操作碼表示計算機執(zhí)行該指令將進行何種操作操作數(shù)表示參加操作的數(shù)的本身或操作數(shù)所在的地址帶方括號【】部分不是每條指令都必須有的,例: MAIN:MOV A,#32H ;將數(shù)3

5、2H送到ACC中,指令=操作碼+操作數(shù),3.1.2 符號指令的格式,注:在兩個操作數(shù)的指令中,通常目的操 作數(shù)寫在左邊,源操作數(shù)寫在右邊。,操作數(shù)個數(shù),,無操作數(shù),單操作數(shù),兩操作數(shù),三操作數(shù),一般格式: [標號:] 操作助記符 [目的操作數(shù)][,源操作數(shù)][;注釋],指令一般有功能、時間和空間三種屬性:功能屬性:時間屬性:空間屬性:,是指每條指令都對應一個特定的操作功能;,是指一條指令執(zhí)行所用

6、的時間,一般用機器周期來表示;,是指一條指令在程序存儲器中存儲所占用的字節(jié)數(shù)。,8,3.1.3 指令的字節(jié)數(shù),指令長度:1字節(jié)(49),2字節(jié)(46),3字節(jié)(16)。,,,MOV A,Rn,,,,,1. 一字節(jié)指令:,9,2. 二字節(jié)指令:,第一字節(jié):操作碼第二字節(jié):操作數(shù)MOV A,#data,,,,,,10,3. 三字節(jié)指令:,第一字節(jié):操作碼第二、三字節(jié):操作數(shù)(數(shù)據(jù)、地址)MOV

7、 direct,#data,,,,,,,,,11,指令字節(jié)數(shù)總結(jié),1、操作碼占一個或者不到一個字節(jié)。,2、一個操作數(shù)占一個或者兩個字節(jié)。,3、一個地址占一個或者兩個字節(jié),或者一個半。,4、A、B、DPTR、Rn、C不單獨占一個字節(jié), 隱藏在操作碼中。,12,,13,3.1.4 指令的分類,MCS-51單片機指令系統(tǒng)具有功能強、指令短、執(zhí)行快等特點,共有111條指令。,數(shù)據(jù)傳送(29條)算術操作(24條)邏輯操作(4條)

8、程序轉(zhuǎn)移(17條)位操作(17條),功能屬性,單字節(jié)指令(49條)雙字節(jié)指令(46條)三字節(jié)指令(16條),空間屬性,單機器周期指令(64條)雙機器周期指令(45條)4個機器周期的指令(2條)(乘法、除法),時間屬性,,,,3.1.5 符號指令及其注釋中常用的符號,(1) Ri和Rn: (2) #data: (3) #data16: (4) rel: (5) addr16和addr11:,,,,

9、,表示當前工作寄存器區(qū)中的工作寄存器。i取0或1,表示R0或R1。n取0~7,表示R0~R7。,表示包含在指令中的8位立即數(shù)。,表示包含在指令中的16位立即數(shù)。,以補碼形式表示的8位相對偏移量,范圍為-128 ~ +127,主要用在相對尋址的指令中。,分別表示16位直接地址和11位直接地址。,3.1.5 符號指令及其注釋中常用的符號,(6) direct: (7) bit: (8) (X): (9) ((X)):

10、 (10) / : (11) → :,,,,,,表示直接尋址的8位直接地址。,表示可位尋址的直接位地址。,表示X單元中的內(nèi)容。,表示以X單元的內(nèi)容為地址的存儲器單元內(nèi)容,即(X)作地址,該地址單元的內(nèi)容用((X))表示。,“/”表示對該位操作數(shù)取反。,“→”表示操作流程,將箭尾一方的內(nèi)容送入箭頭所指另一方的單元中去。,3.2 MCS-51的尋址方式,,1. 尋址方式,共有7種,即:寄存器尋址、直接尋址、

11、 寄存器間接尋址、立即尋址、 變址尋址、 相對尋址和位尋址,如表3.1所示。,,2. 尋址方式的種類,尋找操作數(shù)的方法定義為指令尋址方式。,若不特別聲明,我們后面提到的尋址方式均指源操作數(shù)的尋址方式。,,表3.1 尋址方式及對應的存儲器空間,,,,,,,,1. 操作數(shù)在寄存器中,指令中直接給出該寄存器名稱。具有較高的傳送和運算速度。,3.2.1 寄存器尋址,,例3.1 MOV A,R0

12、; A (R0),2. 尋址空間,,R0~R7,A,B,DPTR,,例3.2 MOV A,R0 ;設(R0)=30H,PSW=00H,求程序執(zhí)行后A、R0內(nèi)容。,,,00H,7FH,30H,,,,30H,,80H,FFH,A,,,,E8H,,FFFFH,MOV A,R0,0000H,ROM,SFR,RAM,結(jié)果:(A)=30H,P C,(R0)=30H,20,采用寄存器尋址的指令如下: MOV P1,A

13、;將累加器A的內(nèi)容送到P1口 MOV P1,R4 ;將寄存器R4的內(nèi)容送到P1口 CLR A;將累加器A清0 CPL A;將累加器A中的內(nèi)容取反  RL A;將累加器A的內(nèi)容循環(huán)左移,1. 操作數(shù)放在地址指示的存儲單元中,操作碼后的字節(jié)是操作數(shù)的直接地址。,,3.2.2 直接尋址,,,2. 尋址空間,,片內(nèi)RAM低 128字節(jié),SFR(常采用符

14、號形式),如:MOV A,50H,如:MOV A,SP,MOV A,81H,,例3.3 MOV A,60H ;設(60H)=2EH,求程序執(zhí)行后A、 60H內(nèi)容。,,,60H,7FH,2EH,,,,2EH,,80H,FFH,A,,,,,FFFFH,MOV A,60H,0000H,ROM,SFR,RAM,結(jié)果:(A)= 2EH,,,00H,23,注意:1、若直接尋址的地址是SFR中的某一個時,可用其物理地址,也可用名稱符號

15、 MOV A,SP ;使用堆棧指針的名稱符號 MOV A,81H;使用堆棧指針的物理地址,24,注意:2、累加器有A、ACC和E0H三種表示形式,尋址方式不一樣,但功能相同INC A ;寄存器尋址INC ACC ;直接尋址INC 0E0H ;直接尋址,25,注意:3、字節(jié)地址和位地址的區(qū)別MOV A,20H;20H字節(jié)地址內(nèi)容送給ASETB 20H ;20H

16、位置1MOV C,20H;20H位地址內(nèi)容送給C,1.操作數(shù)在以寄存器中內(nèi)容為地址的單元中,指令中寄存器前面必須加上符號“@” 。,,3.2.3 寄存器間接尋址,2.尋址空間,,片內(nèi)RAM低128字節(jié),片外RAM,3.間址寄存器,,R0或R1,DPTR,MOV,MOVX,,,,例3.4 MOV A, @R0 ; 設(R0)=50H, (50H)= 6EH,,,E6H,,FFFFH,M

17、OV A, @ R0,0000H,ROM,結(jié)果:(A)=6EH,,,50H,7FH,6EH,,,,6EH,,80H,FFH,A,,SFR,RAM,,50H,R0,,,A ((R0)),28,寄存器間址指令可以拓寬尋址范圍。 @Ri用于片內(nèi)片外256B的RAM尋址。 @DPTR可以覆蓋片外64KB的ROM/RAM.寄存器間址指令不能用于尋址特殊功能寄存器SFR,SFR只能用寄存

18、器尋址或者直接尋址. MOV R0,#81H;SP的物理地址 MOV A,@R0 ;SFR只能直接尋址、寄存器尋址!,注意:,1、操作數(shù)直接出現(xiàn)在指令中,緊跟在操作碼的后面,作為指令的一部分與操作碼一起存放在程序存儲器中,可以立即得到并執(zhí)行,不需要經(jīng)過別的途徑去尋找,故稱為立即尋址。2、匯編指令中,在一個數(shù)的前面冠以"#"符號作前綴,就表示該數(shù)為立即尋址。,,3.2.4 立

19、即尋址,3、尋址空間:ROM,,例3.5 MOV A, #07H ;,,7FH,,,07H,,80H,FFH,A,,,,FFFFH,MOV A,#07H,0000H,ROM,SFR,RAM,結(jié)果:(A)=0 7H,,,,00H,31,采用立即數(shù)尋址的指令如下: MOVP1,#55H;將立即數(shù)55H送P1口 MOV20H,#55H ;將立即數(shù)55H送20H 單元 MOVA,#0F0H

20、;將立即數(shù)0F0H送累加器A MOVR4,#0FH;將立即數(shù)0FH送寄存器R4中 MOVR0,#20H;將立即數(shù)20H送寄存器R0口,以一個基地址加上一個偏移量地址形成 操作數(shù)地址。,,3.2.5 變址尋址,3. 尋址空間:ROM,基址寄存器:,,DPTR,PC,偏移量寄存器:A,,2. 操作數(shù)地址:,33,將基址寄存器與偏移量寄存器的內(nèi)容相加,結(jié)果作為操作數(shù)在ROM中的地址。DPTR或PC是基址寄存器

21、,累加器A是偏移量寄存器。 MOVC A,@A+DPTR ;A (A+DPTR) MOVC A,@A+PC ;A (A+PC) 該類尋址方式主要用于查表操作。,3.2.5 變址尋址,34,MOV A,#02H MOV DPTR, #0300H MOVC A,@A+DPTR,圖3.5 變址尋址示意圖,,例3.6 MO

22、VC A, @A+DPTR ;,,7FH,,,0FH,,80H,FFH,A,,,,FFFFH,MOVC A, @A+DPTR,0000H,ROM,SFR,RAM,結(jié)果:(A)=88H,,93H,,88H,,00H,,24H,,,2400H+0FH= 240FH,240FH,,DPL,DPH,88H,00H,36,指程序計數(shù)器PC的當前內(nèi)容與指令中的操作數(shù)相加,其結(jié)果作為跳轉(zhuǎn)指令的轉(zhuǎn)移地址(也稱目的地址)。該類尋址方式主要用于跳轉(zhuǎn)

23、指令。 SJMP rel ;PC PC+2+rel 將PC當前的內(nèi)容與rel(-128~127)相加,結(jié)果再送回PC中,成為下一條將要執(zhí)行指令的地址。,3.2.6 相對尋址,PC的當前值:讀出該2字節(jié)或3字節(jié)的跳轉(zhuǎn)指令后,PC指向的下條指令的地址。,37,SJMP 54H,圖3.6 相對尋址示意圖,1. 對位地址中內(nèi)容進行操作。操作的是8位 二進制數(shù)中的某

24、一位。,,3.2.7 位尋址,SFR的尋址位常用符號位地址表示,如: CLR ACC.0 MOV 30H,C,2. 尋址空間,,片內(nèi)RAM中位尋址區(qū),SFR中的可尋址位,7 種尋址方式及使用空間,40,3.3 數(shù)據(jù)傳送類指令 數(shù)據(jù)傳送指令是MCS-51單片機匯編語言程序設計中使用最頻繁的指令。 數(shù)據(jù)傳送操作是指把數(shù)據(jù)從源地址傳送到目的地址,源地址內(nèi)容不變。,數(shù) 據(jù)

25、,數(shù) 據(jù),,目的地址 源地址,,41,通用格式: MOV 目的操作數(shù) , 源操作數(shù),源操作數(shù)可以是:累加器A、通用寄存器Rn、直接地址direct、間接地址和立即數(shù);目的操作數(shù)可以是:累加器A、通用寄存器Rn、直接地址direct和間接地址,注: (1) #data(立即數(shù))不能用作目的操作數(shù); 2) 源操作數(shù)與目的操作數(shù)不能相同(除 direct外); 3) 寄存器尋址

26、與寄存器及其間址間不能相互傳送。,,傳送關系,目的操作數(shù),源操作數(shù),A,A,Rn,Rn,direct1,direct2,@Ri,@Ri,#data,…,數(shù)據(jù)傳送類指令(28條),(1)內(nèi)部RAM數(shù)據(jù)傳送指令(15條),(2)外部數(shù)據(jù)傳送指令(7條),(3)堆棧操作指令(2條),(4)數(shù)據(jù)交換指令(4條),44,(1)內(nèi)部RAM數(shù)據(jù)傳送指令(15條),內(nèi)部RAM是數(shù)據(jù)傳送最為頻繁的部分,這其中有寄存器、累加器、RAM單元以及特殊功能寄存器

27、之間的相互數(shù)據(jù)傳送。,立即尋址型傳送指令,MOV A,#data;A?dataMOV Rn,#data; Rn?dataMOV direct,#data;direct ?dataMOV @Ri,#data; (Ri)?data,(1)內(nèi)部RAM數(shù)據(jù)傳送指令(15條),內(nèi)部RAM是數(shù)據(jù)傳送最為頻繁的部分,這其中有寄存器、累

28、加器、RAM單元以及特殊功能寄存器之間的相互數(shù)據(jù)傳送。,MOV A , direct ; A?(direct)MOV Rn, direct ; Rn?(direct)MOV @Ri , direct ; (Ri) ? (direct)MOV direct2 , direct1; direct2 ?(direct1),直接尋址型傳送

29、指令,46,已知:R1=32H、(30H)=AAH、 (31H)=BBH、 (32H)=CCH,執(zhí)行如下指令后A、50H、R6、32H和P1中的內(nèi)容是什么。,,30H,7FH,,,,,80H,FFH,A,SFR,RAM,,00H,01H,,,31H,32H,,,50H,,,,,P1,32H,AAH,BBH,CCH,R0,R1,MOV A,30HMOV 50H,AMOV R6,31HMOV @R1,30H

30、MOV P1 ,32H,A=AAH(50H)=AAH,AAH,AAH,R6=BBH,(32H)=AAH,P1=AAH,47,MOV A, @RiMOV @Ri,AMOV direct , @Ri,寄存器尋址型傳送指令,MOV A , Rn MOV Rn,AMOV direct,A

31、;direct ?AMOV direct , Rn,寄存器間址型傳送指令,48,已知: (40H)=11H、 (41H)=22H、 R0=40H和R1=41H,執(zhí)行如下指令后A、40H、41H和42H中的內(nèi)容是什么。,MOV A, @R0MOV @R1,AMOV 42H , @R1,A=11H、 (40H)=11H、 (41H)=11H

32、和(42H)=11H,49,,dir,@Ri,Rn,#data,A,,,,,,,,,,,MOV A ,,Rn #data dir @Ri,,MOV dir ,,A Rn, @Ri #data dir,,MOV Rn ,,MOV @Ri,,,A dir #data,,內(nèi)部RAM、SFR之間的傳送MOV指令,

33、A dir #data,50,外部程序存儲器ROM數(shù)據(jù)傳送指令,MOVC,(2)外部數(shù)據(jù)傳送指令(7條),MOV DPTR,#data16; DPTR?data16,外部數(shù)據(jù)存儲器RAM數(shù)據(jù)傳送指令,MOVX,51,外部程序存儲器ROM數(shù)據(jù)傳送指令,MOVC A,@A+DPTR; A ? (A+DPTR)MOVC A ,@A+PC ;PC? PC +1,A?(A+PC),專門用作查表,又稱作

34、查表指令。,52,使用Ri進行間接尋址,MOVX A,@Ri; A ? (Ri)(i=0,1)MOVX @Ri,A;(Ri)?(A)(i=0,1),尋址范圍:256字節(jié),注:外部RAM數(shù)據(jù)傳送只能通過累加器A進行,使用DPTR進行間接尋址,MOVX A,@DPTR; A ? (DPTR)MOVX @DPTR,A;(DPTR)?A,外部數(shù)據(jù)存儲器R

35、AM數(shù)據(jù)傳送指令,尋址范圍:64K字節(jié),53,已知外部RAM的88H單元中有一數(shù)x,試編一個能把x傳送到外部RAM的1818H單元的程序。,ORG 2000HMOV R0,#88HMOV DPTR,#1818HMOVX A,@R0MOVX @DPTR,ASJMP $END,54,(3)堆棧操作指令(2條),55,設(30H)=X, (40H)=Y,利用堆棧作為媒體編出30H和40H單元中的內(nèi)容互相交換的程序。,M

36、OV SP,#70HPUSH 30HPUSH 40HPOP 30HPOP 40H,,,,,,,,,,75H74H73H72H71H70H,棧底,X,Y,56,堆棧操作指令是直接尋址指令!PUSH和POP后面只能是直接地址!,PUSH ACCPUSH 00HPOP ACCPOP 00H,PUSH APUSH R0POP A

37、POP R0,57,(4)數(shù)據(jù)交換指令(4條),在內(nèi)部RAM和累加器A之間進行,整字節(jié)交換指令,XCH A,Rn;A?RnXCH A,direct;A ?(direct)XCH A,@Ri;A ?(Ri),半字節(jié)交換指令,字節(jié)單元與累加器進行低4位的半字節(jié)交換。,XCHD A,@Ri;A3~0 ?(Ri)3~0,SWAP A

38、 ;A7~4 ? A3~0,58,外部RAM的20H單元有一數(shù)X,內(nèi)部RAM的20H單元有一數(shù)Y,將它們進行交換。,MOV R1,#20HMOVX A,@R1XCH A ,@R1MOVX @R1, A,59,數(shù)據(jù)傳送指令幾個注意的地方:MOVX A,@DPTR;(外部RAM內(nèi)容送累加器)執(zhí)行此指令,P3.7引腳上輸出/RD 有效信號(低電平),DPTR包含

39、16位地址信息由P0(低8位)、P2口(高8位)提供,數(shù)據(jù)由P0口輸入到累加器。,60,數(shù)據(jù)傳送指令幾個注意的地方:MOVX @DPTR,A;(累加器內(nèi)容送外部RAM)執(zhí)行此指令,P3.6引腳上輸出 /WR有效信號(低電平),DPTR包含16位地址信息由P0(低8位)、P2口(高8位)提供,數(shù)據(jù)由P0口寫入外部RAM。,數(shù)據(jù)傳送類指令(28條),(1)內(nèi)部RAM數(shù)據(jù)傳送指令(15條),(2)外部數(shù)據(jù)傳送指令(7條),(3)堆棧操

40、作指令(2條),(4)數(shù)據(jù)交換指令(4條),表 3.2 數(shù)據(jù)傳送類指令一覽表,表 3.2 數(shù)據(jù)傳送類指令一覽表(續(xù)),課堂師生互動,試按下列要求傳送數(shù)據(jù)1. 將R5中的數(shù)據(jù)傳送到50H。2.將R7中的數(shù)據(jù)傳送到R6。3.將立即數(shù)40H傳送到以R0中內(nèi) 容為地址的存儲單元中。4.將片外RAM50H中的數(shù)據(jù)傳 送到片內(nèi)RAM40H單元中。5.將R1中的數(shù)據(jù)傳送到以R0中 內(nèi)容為地址的存儲單元中。,MOV

41、50H, R5,,,,,MOV A, R7MOV R6, A,MOV @R0, #40H,,,MOV R0 ,#50HMOVX A, @R0MOV 40H, A,,MOV A, R1MOV @R0, A,,3.4.1 算術運算類指令(24條),3.4 算術與邏輯運算指令,3.4.2 邏輯運算與循環(huán)類指令(25條),3.4.1 算術運算類指令(24條),3.4.1 算術運算

42、類指令(24條),大多數(shù)指令用累加器A作為一個源操作數(shù)另一個源操作數(shù)可放在Rn、片內(nèi)RAM、或是立即數(shù)操作結(jié)果一般保留在ACC中大多影響程序狀態(tài)字PSW,例 MOV A, #data,ADD A, Rn,1. 加法指令,(1) 不帶進位的加法指令ADD,影響:CY、AC、OV和P,ADD A, #data; A←A+#data ADD A, direct; A←A+(direc

43、t) ADD A, @Ri; A←A+(Ri) ADD A, Rn; A←A+Rn,例 若 (A)=84H,(30H)=8DH, 執(zhí)行指令 ADD A,30H :,結(jié)果:(A)=11H,(CY)=1,(AC)=1,(OV)=1 (D7有進位,D6無進位),(P)=0。,CY,AC,(2) 帶進位加法指令ADDC,源操作數(shù)與A的內(nèi)容相加再與CY相加,結(jié)果送入目的操作

44、數(shù)A中。,CY是在該指令執(zhí)行之前已存在的值。,ADDC A, #data; A←A+#data+CADDC A, direct; A←A+(direct)+CADDC A, @Ri; A←A+(Ri)+CADDC A, Rn; A←A+Rn+C,( 3) 加1指令INC,源操作數(shù)的內(nèi)容加 1 ,結(jié)果再送回原單元。這些指令中僅 INC A 影響P標志。,INC

45、 A; A←A+1INC direct; direct ←(direct)+1INC @Ri; (Ri) ←(Ri)+1INC Rn; Rn←Rn+1INC DPTR; DPTR←DPTR+1,例如:設R0=7EH,片內(nèi)數(shù)據(jù)RAM中(7EH)=0FFH,(7FH)=40H,則執(zhí)行下列指令:

46、 INC @R0 INC R0 INC @R0執(zhí)行結(jié)果:(7EH)、R0、(7FH)???,(7EH)=00H, R0=7FH,(7FH)=41H,(4) 十進制調(diào)整指令,對A中2個BCD碼加法的結(jié)果調(diào)整,DA A,1) 當A中低4位數(shù)出現(xiàn)了非BCD碼或低4位 產(chǎn)生進位(AC=1),則在低4位加6。,2) 當A中高4位數(shù)出現(xiàn)了非BCD

47、碼或高4位 產(chǎn)生進位(CY=1),則在高4位加6。,調(diào)整后,CY表示結(jié)果的百位值。,79,例:完成56+17的BCD加法程序。 MOV A,#56H ;A存放BCD碼56H MOV B,#17H ;B存放BCD碼17H ADD A, B ;A=6dH DA A ;A=73H SJMP $,56H17H6dH673H,+,+,,,2. 減法

48、指令,,,(1) 帶借位減法指令SUBB,影響:CY、AC、OV和P,注:如要用此組指令完成不帶借位減法,只需先清CY為 0 。,SUBB A, #data; A←A - #data-CSUBB A, direct; A←A – (direct)-CSUBB A, @Ri; A←A - (Ri)-CSUBB A, Rn; A←A - Rn-C,例3.15 若(A)=C9H

49、,(R2)=54H,(CY)=1,執(zhí)行指令 SUBB A,R2 :,即:(A)=74H,(CY)=0,(AC)=0, (OV)=1 (位6有借位,位7無借位), (P)=0。,,,(2) 減1指令,操作數(shù)內(nèi)容減 1 ,結(jié)果再送回原單元。 僅 DEC A 影響P標志。其余指令都不 影響標志位的狀態(tài)。,,DEC,Rn,direct,@Ri,A,3. 乘法指令,MUL AB,例3.16 若(A)=50H,

50、(B)=A0H,執(zhí)行指令 MUL AB 之后,(A)=00H,(B)=32H,(OV)=1,(CY)=0。,當乘積大于FFH時,溢出標志位(OV)=1。標志CY總是被清0。,,,×,A,B,,,,A,B,乘數(shù),被乘數(shù),,積,4. 除法指令,例3.17 若(A) = FBH (251),(B) = 12H (18),執(zhí)行指令 DIV AB 之后,(A) = 0DH,(B) = 11H,(OV) = 0,

51、(CY) = 0。,DIV AB,除數(shù)為0,商的A和B內(nèi)容不確定,且(OV)=1 。 標志CY總是被清0。,,,÷,A,B,,,,A,B,除數(shù),被除數(shù),,整數(shù)部分,商,余數(shù)部分,表 3.3 算術運算類指令一覽表,,表 3.3 算術運算類指令一覽表(續(xù)),,3.4.2 邏輯運算與循環(huán)類指令(25條),1. 邏輯運算:與、或、異或、清0和取反,5. A清0操作對P標志有影響。,2. 對A循環(huán)移位,3. 方

52、向:左、右,4. CY:帶、不帶,3.4 算術與邏輯運算指令,1. 邏輯與、或、異或指令,A與立即數(shù)、內(nèi)部數(shù)據(jù)、存儲器間的邏輯操作 ANL(ORL,XRL) A, #data ANL(ORL,XRL) A, direct ANL(ORL,XRL) A, @Ri ANL(ORL,XRL) A, Rn ANL(ORL,XR

53、L) direct, A ANL(ORL,XRL) direct, #data,思考: 邏輯與、或、異或指令分別有什么作用?,邏輯“或”指令常用來使字節(jié)中某些位置“1”,其它位保持不變。則欲置位的位用"1"與該位相或,保留不變的位用"0" 與該位相或。,邏輯“與”指令常用來使字節(jié)中某些位清“0”,其它位保持不變。則欲清0的位用“0”與該位相與,保留不變的位用“1” 與該位

54、相與。,邏輯"異或"指令常用來使字節(jié)中某些位進行取反操作,其它位保持不變。欲某位取反該位與"1"相異或;欲某位保留則該位與"0" 相異或。還可利用異或指令對某單元自身異或,以實現(xiàn)清零操作。,例 (P1)=C5H=1100 0101B,屏蔽P1口高4位而保留低4位。 執(zhí)行指令:ANL P1,#0FH 結(jié)果為:(P1)=05H=00000

55、101B。,設(A)=AAH,(P1)=BBH,通過編程把累加器A中的低4位送入P1口低4位,P1口高4位保持不變。,ORG 0100HANL A,#0FH ;取出A中低4位ANL P1,#0F0H ;取出P1中高4位ORL P1,A ;字節(jié)裝配SJMP $ ;待機END,2. 累加器清0和取反,(2) 把A的內(nèi)容取反,結(jié)果仍在A中。

56、,CPL A,CLR A,例3.21 若(A)=A5H,執(zhí)行指令 CLR A 之后,(A)=00H。,(1) 把A的內(nèi)容清 0 ,結(jié)果仍在A中。,,ORG0200HMOVA,30HCPLA;取反INCA;加1MOV 31H,ASJMP $END,例:已知正數(shù)X,求-X的補碼,設X放在30H單元,結(jié)果放在31H單元。,表 3.3 算術運算類指令一覽表,,表

57、 3.3 算術運算類指令一覽表(續(xù)),,表3.3 邏輯操作指令表,,,,,3. 累加器循環(huán)移位指令,RL A; 左移RR A; 右移RLC A; 帶進位左移RRC A; 帶進位右移SWAP A; 4位環(huán)移,99,移位指令操作示意圖,RL A,RLC A,RR A,RRC A,100,,,,,,,,,,,,,,CY,,,,,,CY,RR A,RL A,RLC A

58、,RRC A,10010110,00101101,A,A,設,01001011,A,1,CY,11001011,A,0,00101101,A,1,CY,CY,編程實現(xiàn)累加器A內(nèi)容乘2。,例3.22 若(A)= BDH = 1011 1101B, (CY)=0。 執(zhí)行指令 RLC A,結(jié)果為:17AH(378)=2×BDH(189)。,,,,,A,,,PSW,0,1,0,1,1,1,

59、1,0,1,,,,,,CY,RLC A,思考:如何實現(xiàn)“累加器A內(nèi)容乘3”?,例:已知M1和M1+1兩個單元中存有一個16位二進制數(shù)(M1中為低8位,M1+1中為高8位),通過編程將其擴大到二倍。,ORG0200HCLRCMOVR1,#M1MOV A,@R1 ;取低8位數(shù)RLCA ;低8位×2MOV@R1,AINCR1MOV A,@R1 ;取高8位數(shù)RLCA ;高8位

60、15;2MOV@R1,ASJMP$END,,CY,CY,104,SWAP A; 4位環(huán)移交換A中高四位和第四位,不影響標志.例如:MOV A,#A3H SWAP A 結(jié)果:(A)=3AH,105,表3.3 邏輯操作指令表,,,,,3.5.1 控制轉(zhuǎn)移類指令(17條),3.5 控制轉(zhuǎn)移類指令與位操作類指令,3.5.2 位操作類指令(17條),3.5.1

61、 控制轉(zhuǎn)移類指令(17條),控制轉(zhuǎn)移類指令的本質(zhì)是改變程序計數(shù)器PC的內(nèi)容,從而改變程序的執(zhí)行方向。,(1) 程序執(zhí)行是順序的,改變程序執(zhí)行順序,稱作程序轉(zhuǎn)移。,(2) 控制程序轉(zhuǎn)移采用轉(zhuǎn)移指令,1)無條件轉(zhuǎn)移指令2)條件轉(zhuǎn)移指令3)子程序調(diào)用與返回指令4)空操作指令,1. 無條件轉(zhuǎn)移指令(4條),(1) LJMP(長轉(zhuǎn)指令),指令第二、三字節(jié)地址碼分別裝入PC的高8位和低8位中。,可轉(zhuǎn)到64KB ROM空間的任何單元。,LJ

62、MP addr16,LJMP addr16,LJMP指令執(zhí)行后,程序無條件地轉(zhuǎn)向16位目標地址(addr16)處執(zhí)行,不影響標志位??赊D(zhuǎn)移到64 KB程序存儲器地址空間的任意地址,故得名為“長轉(zhuǎn)移/長跳轉(zhuǎn)”。該指令的缺點是字節(jié)多。,(2)AJMP(絕對轉(zhuǎn)移指令),AJMP addr11,注意:① 該指令結(jié)果不影響程序狀態(tài)字寄存器PSW。 ② 該指令轉(zhuǎn)移范圍是2 KB。,AJMP ad

63、dr11,由于11位地址的范圍是000,0000,0000B~111,1111,1111B,(000H~7FFH)即2 KB范圍,而目的地址的高5位是PC當前值,所以程序可轉(zhuǎn)移的位置只能是和PC當前值在同一2 KB范圍內(nèi)。,例如:若AJMP指令地址(PC)=2300H。執(zhí)行指令AJMP 0FFH后程序轉(zhuǎn)向何方?,0010 0011 0000 0000,000 1111 1111,0010 0000 1111 1111,,001

64、0,0010 0011 0000 0010,0010 0011 0000 0010,,→指令所在地址2300H,→ +2,→ 當前PC值2302H,→當前PC值的高5位,→11位直接地址,→轉(zhuǎn)移目的地址(PC) →20FFH,,,,結(jié)果為:轉(zhuǎn)移目的地址(PC)=20FFH,程序向前轉(zhuǎn)到20FFH單元開始執(zhí)行。,,0010 1111 1111 1111,000 1111 1111,0011 0000 1111 1111 →30

65、FFH,,0010,0011 0000 0000 0001,0011 0000 0000 0001,,→指令所在地址,→ +2,→ 當前PC值,當前PC值的高5位→,11位直接地址→,轉(zhuǎn)移目的地址(PC) →,,,若AJMP指令地址(PC)=2FFFH。執(zhí)行指令AJMP 0FFH后程序轉(zhuǎn)向何方?,,結(jié)果為:轉(zhuǎn)移目的地址(PC)=30FFH,程序向后轉(zhuǎn)到30FFH單元開始執(zhí)行。,,若AJMP指令地址(PC)=2FFFH。執(zhí)行指令

66、AJMP 0FFH后,結(jié)果為:轉(zhuǎn)移目的地址(PC)=30FFH,程序向后轉(zhuǎn)到30FFH單元開始執(zhí)行。,由上可見:若addr11相同,則AJMP指令的機器碼相同,但轉(zhuǎn)移的目的地址卻可能不同,這是因為轉(zhuǎn)移的目的地址是由PC當前值的高5位與addr11共同決定的。,,,若AJMP指令地址(PC)=2300H。執(zhí)行指令AJMP 0FFH后,結(jié)果為:轉(zhuǎn)移目的地址(PC)=20FFH,程序向前轉(zhuǎn)到20FFH單元開始執(zhí)行。,結(jié)論:,(3) SJM

67、P(短轉(zhuǎn)指令),SJMP rel,注意:① 該指令結(jié)果不影響程序狀態(tài)字寄存器PSW。 ② 該指令的轉(zhuǎn)移范圍是以本指令的下一條指令為中心的-128~+127字節(jié)以內(nèi)。,1、在實際應用中,LJMP、AJMP和SJMP后面的addr16、addr11或rel都是用標號來代替的,不一定寫出它們的具體地址。,注意,2、LJMP、AJMP和SJMP跳轉(zhuǎn)范圍分別為64K、2K、256B。,注意,(4) JMP(變址尋址轉(zhuǎn)移指

68、令),注意: ① 該指令結(jié)果不影響程序狀態(tài)字寄存器PSW。 ② 該指令通常用于散轉(zhuǎn)(多分支)程序。,例 根據(jù)累加器A的值,轉(zhuǎn)不同處理程序的入口。 MOV DPTR,#TABLE ;表首地址送DPTR JMP @A+DPTR ;根據(jù)A值轉(zhuǎn)移 ·

69、;·········TABLE:AJMP TAB1 ;當(A)=0時轉(zhuǎn)TAB1執(zhí)行 AJMP TAB2 ;當(A)=2時轉(zhuǎn)TAB2執(zhí)行 AJMP TAB3

溫馨提示

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

評論

0/150

提交評論