第章MCS-1系列單片機(jī)的指令系統(tǒng)及匯編語言程序設(shè)計ppt課件_第1頁
第章MCS-1系列單片機(jī)的指令系統(tǒng)及匯編語言程序設(shè)計ppt課件_第2頁
第章MCS-1系列單片機(jī)的指令系統(tǒng)及匯編語言程序設(shè)計ppt課件_第3頁
第章MCS-1系列單片機(jī)的指令系統(tǒng)及匯編語言程序設(shè)計ppt課件_第4頁
第章MCS-1系列單片機(jī)的指令系統(tǒng)及匯編語言程序設(shè)計ppt課件_第5頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、主要內(nèi)容主要內(nèi)容尋址方式尋址方式指令系統(tǒng)指令系統(tǒng)傳送與交換指令傳送與交換指令算術(shù)運(yùn)算、邏輯運(yùn)算指令算術(shù)運(yùn)算、邏輯運(yùn)算指令控制轉(zhuǎn)移指令控制轉(zhuǎn)移指令位操作指令位操作指令偽指令偽指令程序設(shè)計舉例程序設(shè)計舉例第第3章章 MCS-51系列單片機(jī)的指令系統(tǒng)系列單片機(jī)的指令系統(tǒng)及匯編言語程序設(shè)計及匯編言語程序設(shè)計 計算機(jī)經(jīng)過執(zhí)行程序完成人們指定的義務(wù),計算機(jī)經(jīng)過執(zhí)行程序完成人們指定的義務(wù),程序由一條一條指令構(gòu)成,能為程序由一條一條指令構(gòu)成,能為CPUCPU識別并執(zhí)行的識別并執(zhí)行的指令的集合就是該指令的集合就是該CPUCPU的指令系統(tǒng)。的指令系統(tǒng)。 MCS-51MCS-51單片機(jī)匯編言語指令格式單片機(jī)匯編言語

2、指令格式: :操作符操作符 目的操作數(shù),源操作數(shù)目的操作數(shù),源操作數(shù) 操作符指明該指令完成什么操作;操作符指明該指令完成什么操作; 操作數(shù)是指明該指令的操作對象。操作數(shù)是指明該指令的操作對象。 目的操作數(shù)是存放結(jié)果的。目的操作數(shù)是存放結(jié)果的。 指令中操作數(shù)提供的方式稱為尋址方式。指令中操作數(shù)提供的方式稱為尋址方式。 指令中的常用符號指令中的常用符號Rn: 表示當(dāng)前任務(wù)存放器表示當(dāng)前任務(wù)存放器R0R7中的一個。中的一個。Ri: 代表代表R0和和R1存放器中的一個,用作間接尋址存放器。存放器中的一個,用作間接尋址存放器。dir : 8 位直接字節(jié)地址片內(nèi)位直接字節(jié)地址片內(nèi) RAM 和和 SFR #

3、data: 8位立刻數(shù),即位立刻數(shù),即8位常數(shù)??梢詾槲怀?shù)??梢詾?進(jìn)制進(jìn)制B、 10進(jìn)制、進(jìn)制、16進(jìn)制進(jìn)制H、 字符字符 #data16: 表示表示16位立刻數(shù),即位立刻數(shù),即16位常數(shù),取值范圍為位常數(shù),取值范圍為: #0000H#0FFFFHaddr16 : 表示表示16位地址位地址 addr11 : 表示表示11位地址位地址rel : 相對偏移量為一字節(jié)補(bǔ)碼用于相對轉(zhuǎn)移指令中相對偏移量為一字節(jié)補(bǔ)碼用于相對轉(zhuǎn)移指令中bit : 位地址,在位地址空間中。位地址,在位地址空間中。$: 表示當(dāng)前指令的地址。表示當(dāng)前指令的地址。 指令中直接給出操作數(shù)的尋址方式。在指令中直接給出操作數(shù)的尋址方

4、式。在5151系列單片機(jī)的指令系統(tǒng)中,立刻數(shù)用一個系列單片機(jī)的指令系統(tǒng)中,立刻數(shù)用一個前面加前面加 “# #號的號的8 8位數(shù)位數(shù)(#data(#data,如,如#30H)#30H)或或1616位數(shù)位數(shù)(#data16(#data16,如,如#2052H)#2052H)表示。立刻尋表示。立刻尋址中的數(shù),稱為立刻數(shù)。址中的數(shù),稱為立刻數(shù)。 例如指令:例如指令:MOV AMOV A,#58H#58H;58HA58HA3.1 尋址方式3.1.1 立刻尋址 操作數(shù)的地址直接出如今指令中。操作數(shù)的地址直接出如今指令中。 尋址對象:尋址對象: 內(nèi)部數(shù)據(jù)存貯器:運(yùn)用它的地址。內(nèi)部數(shù)據(jù)存貯器:運(yùn)用它的地址。

5、特殊功能存放器:既可運(yùn)用它的地址,也可以直接運(yùn)用特殊功能存放器:既可運(yùn)用它的地址,也可以直接運(yùn)用存放器名。存放器名。 位地址空間位地址空間 程序存儲器空間程序存儲器空間例:例:MOV AMOV A,40H ;40H ;40H40HAA MOV 40H MOV 40H,41H ;41H ;41H41H40H40H MOV P0 MOV P0,#45H ; 45HP0#45H ; 45HP0 MOV 80H MOV 80H,#45H ; 45HP0#45H ; 45HP0 MOV C MOV C,18H ; 18H ; 位地址位地址18HC18HC3.1.2 3.1.2 直接尋址直接尋址操作數(shù)存放

6、在存放器中。操作數(shù)存放在存放器中。 尋址對象:尋址對象:A A,B B,C,DPTRC,DPTR,R0R0R7 R7 。 B B僅在乘除法指令中為存放器尋址,在僅在乘除法指令中為存放器尋址,在其他指令中為直接尋址。其他指令中為直接尋址。 A A可以存放器尋址又可以直接尋址,直可以存放器尋址又可以直接尋址,直接尋址時寫作接尋址時寫作ACCACC 例如:例如:MOV AMOV A,R0 R0 ;R0AR0A MUL AB MUL AB ;A A* *BBABBA ADD A ADD A,ACC ACC ;A+AAA+AA3.1.3 3.1.3 存放器尋址存放器尋址 操作數(shù)存放在以存放器內(nèi)容為地址的

7、單元中,用做間址操作數(shù)存放在以存放器內(nèi)容為地址的單元中,用做間址的存放器為的存放器為RiRii=0i=0,1 1、DPTRDPTR。 對片內(nèi)的間接尋址用對片內(nèi)的間接尋址用RiRii=0i=0,1 1 如:如: MOV R0 MOV R0,#20H#20H MOV R0 MOV R0,A A ;A(20H)A(20H) 對片外的間接尋址可用對片外的間接尋址可用RiRii=0i=0,1 1或或DPTRDPTR 如:如: MOVX DPTR MOVX DPTR,A A ;AA以以DPTRDPTR的內(nèi)容為地址的外部的內(nèi)容為地址的外部RAMRAM中中 MOVX R1,A MOVX R1,A ;AA以以P

8、2 R1P2 R1內(nèi)容為地址的外部內(nèi)容為地址的外部RAMRAM中中 PUSH PUSH和和POPPOP指令的源操作數(shù)是以指令的源操作數(shù)是以SPSP間接尋址間接尋址 留意:存放器間接尋址不能訪問留意:存放器間接尋址不能訪問SFRSFR MOV R1,#81H MOV R1,#81H MOV A,R1 MOV A,R1 ;不能訪問;不能訪問SPSP,只能用,只能用 MOV A,SP MOV A,SP3.1.4 3.1.4 存放器間址存放器間址 變址尋址只能訪問程序存儲器。操作數(shù)所在位置變址尋址只能訪問程序存儲器。操作數(shù)所在位置的地址由的地址由DPTRDPTR或或PCPC存放器與存放器與A A的內(nèi)容

9、相加后構(gòu)成。其的內(nèi)容相加后構(gòu)成。其中累加器中累加器A A內(nèi)容是可變的。變址尋址只需三條指令。內(nèi)容是可變的。變址尋址只需三條指令。 MOVC A, A+DPTR MOVC A, A+DPTR ;(A+DPTR)A(A+DPTR)A MOVC A, A+PC MOVC A, A+PC ;(A+PC)A(A+PC)A JMP A+DPTR JMP A+DPTR ;A+DPTRPCA+DPTRPC留意:留意:A A的內(nèi)容是無符號數(shù)。的內(nèi)容是無符號數(shù)。 PCPC值是指令的當(dāng)前值是指令的當(dāng)前PCPC值,即下條指令的值,即下條指令的PCPC值值3.1.5 3.1.5 變址尋址變址尋址3.1.6 3.1.6

10、相對尋址相對尋址 變址尋址只能訪問程序存儲器。相對尋址是將程序計數(shù)器變址尋址只能訪問程序存儲器。相對尋址是將程序計數(shù)器PC的當(dāng)前值與指令第二字節(jié)給出的偏移量相加,從而構(gòu)成轉(zhuǎn)的當(dāng)前值與指令第二字節(jié)給出的偏移量相加,從而構(gòu)成轉(zhuǎn)移的目的地址。移的目的地址。 如:如:JZ 61H留意:留意: 相對偏移量是一字節(jié)有符號數(shù),用補(bǔ)碼表示,偏移范圍相對偏移量是一字節(jié)有符號數(shù),用補(bǔ)碼表示,偏移范圍是:是:-128+127。 PC值是指令的當(dāng)前值是指令的當(dāng)前PC值,即下條指令的值,即下條指令的PC值。值。 源程序中偏移量常用符號地址表示。源程序中偏移量常用符號地址表示。 對可位尋址的位地址尋址。包括片內(nèi)對可位尋址

11、的位地址尋址。包括片內(nèi)RAMRAM的位地址空間和可位尋址的的位地址空間和可位尋址的SFRSFR地址能被地址能被8 8整整除除如:如:MOV CMOV C,20H 20H ;位尋址;位尋址 MOV AMOV A,20H 20H ;字節(jié)尋址;字節(jié)尋址 以上兩條指令終究是位尋址還是字節(jié)尋址,以上兩條指令終究是位尋址還是字節(jié)尋址,根據(jù)兩操作數(shù)類型一致的原那么,由另一個操根據(jù)兩操作數(shù)類型一致的原那么,由另一個操作數(shù)決議。作數(shù)決議。 3.1.7 3.1.7 位尋址位尋址立即立即尋址尋址直接直接尋址尋址寄存器寄存器尋址尋址寄存器寄存器間接尋址間接尋址變址變址尋址尋址相對相對尋址尋址位尋址位尋址片內(nèi)片內(nèi)RAM

12、RAM低低128B128B單元單元工作寄存器工作寄存器組組R0R0R7R7特殊功特殊功能寄存能寄存器器SFRSFRA A、B B、DPTRDPTR、C C程序存儲器程序存儲器片外片外RAMRAM位地址空間位地址空間尋址方式與存儲空間的對應(yīng)關(guān)系尋址方式與存儲空間的對應(yīng)關(guān)系 dirRi Rn#dataAMOV A , Rn #data dir RiMOV dir ,A Rn, Ri #data dir MOV Ri,A dir #data內(nèi)部內(nèi)部RAM、SFR之間的傳送之間的傳送MOV指令指令MOV Rn , A dir #data3.2 3.2 指令系統(tǒng)指令系統(tǒng)3.2.1 3.2.1 數(shù)據(jù)傳送與

13、交換指令數(shù)據(jù)傳送與交換指令例例 R1=20HR1=20H,20H20H=55H=55H, MOV AMOV A,R1 R1 執(zhí)行后,執(zhí)行后,A=55HA=55H。例例 40H40H=30H=30H, MOV R7MOV R7,40H 40H 執(zhí)行后,執(zhí)行后,R7=30HR7=30H。例例 MOV R7MOV R7,40H 40H 執(zhí)行后,執(zhí)行后,R7=40HR7=40H。留意:留意:存放器之間無傳送;存放器之間無傳送;存放器間址和存放器之間無傳送;存放器間址和存放器之間無傳送;立刻數(shù)不能做目的地址;立刻數(shù)不能做目的地址; Ri , A DPTR , A A , Ri A , DPTRMOVXM

14、OVCA , A+PCA , A+DPTR2. 外部存儲器和外部存儲器和A累加器之間的傳送累加器之間的傳送MOVXA 外部數(shù)據(jù)外部數(shù)據(jù)存儲器存儲器程序程序存儲器存儲器MOVC 利用 MOVX 實(shí)現(xiàn)片外數(shù)據(jù)存儲器數(shù)據(jù)傳送 (2000H)(2100H)MOV DPTR,#2000HMOVX A,DPTRMOV DPTR,#2100HMOVX DPTR,A; DPTR= 2000H; DPTR= 2100H ; A X;(2100H) Xx片外數(shù)據(jù)存儲器不能直接尋址。以下為非法指令:片外數(shù)據(jù)存儲器不能直接尋址。以下為非法指令: MOVX A,2000H MOVX 2100H,2000H 利用利用Ri

15、間址來實(shí)現(xiàn)將間址來實(shí)現(xiàn)將(2000H)(2100H) MOV P2,#20H;高位地址;高位地址 MOV R0,#00 ;低位地址;低位地址 MOVX A,R0 ;讀片外;讀片外RAM MOV P2,#21H;改動高位地址;改動高位地址 MOVX R0,A ;寫片外;寫片外RAM 利用利用 MOVC 指令實(shí)現(xiàn)查表功能指令實(shí)現(xiàn)查表功能注:只能從程序存儲器讀取數(shù)據(jù)到注:只能從程序存儲器讀取數(shù)據(jù)到A累加器。累加器。 只能運(yùn)用變址間接尋址方式只能運(yùn)用變址間接尋址方式1DPTR為基址存放器為基址存放器MOVC A,A+DPTR ;A(A+DPTR) 查表范圍為查表范圍為 64KB 程序存儲器恣意空間。程

16、序存儲器恣意空間。2PC為基址存放器為基址存放器MOVC A,A+PC;A (A+PC)常數(shù)表只能在查表指令后常數(shù)表只能在查表指令后 256B 范圍內(nèi)。范圍內(nèi)。例例 查表法求查表法求 Y=X2。設(shè)。設(shè) X(0X15)在片內(nèi)在片內(nèi) RAM 20H單單 元,要求將查表求元,要求將查表求 Y,存入片內(nèi),存入片內(nèi) RAM 21H單元單元1用用DPTR作基址存放器作基址存放器 ORG 0100HSQU: MOV DPTR,#TAB ;確定表首地址;確定表首地址 MOV A,20H ;??;取 X MOVC A,A+DPTR ;查表求;查表求 Y=X2 MOV 21H,A ;保管;保管Y RET ;子程序終

17、了;子程序終了 ;其它程序段;其它程序段 ORG 0200H ;常數(shù)表格首地址;常數(shù)表格首地址TAB: DB 00,01,04,09,225 ;平方表;平方表 指令地址指令地址 源程序源程序 ORG 0100H;程序起始地址;程序起始地址 0100HSQU: MOV A,20H ;??;取X 0102H ADD A,#3;修正偏移量;修正偏移量 0104HMOVC A,A+PC ;查表求;查表求Y=X2 0105H MOV 21H,A ;存結(jié)果;存結(jié)果 0107HRET ;子程序終了;子程序終了 0108HTAB: DB 00,01,04 ;平方表;平方表 010BHDB 09,225 思索題:

18、當(dāng)思索題:當(dāng)0X255時,如何用查表法編程求時,如何用查表法編程求Y=X22用用PC作基址存放器作基址存放器 3. 3.交換指令交換指令實(shí)現(xiàn)片內(nèi)實(shí)現(xiàn)片內(nèi)RAMRAM區(qū)的數(shù)據(jù)雙向傳送區(qū)的數(shù)據(jù)雙向傳送1 1 字節(jié)交換指令字節(jié)交換指令XCH AXCH A,Rn Rn ;ARnARn XCH A XCH A,Ri Ri ;A(Ri) A(Ri) XCH A XCH A,dir dir ;A(dir)A(dir)2 2 半字節(jié)交換指令半字節(jié)交換指令XCHD AXCHD A,Ri Ri ;A0A03(Ri)03(Ri)03 3 SWAP A SWAP A ;A4A47A07A03 3 dirRi RnA

19、4. 堆棧操作指令堆棧操作指令 入棧指令:入棧指令:PUSH dir ;SPSP+1,(SP)(dir ) 出棧指令:出棧指令:POP dir ;(dir )(SP),SPSP-1 RiA74743030A74 30 dirRi Rn#dataA dirRi Rn#dataAA , Rn, Ri #data dirADDADDCSUBBANLORLXRL加加進(jìn)位加進(jìn)位加借位減借位減與與或或異或異或1. 以以A為目的操作數(shù)的算術(shù)、邏輯運(yùn)算指令為目的操作數(shù)的算術(shù)、邏輯運(yùn)算指令24條條3.2.2 3.2.2 算術(shù)運(yùn)算和邏輯運(yùn)算指令算術(shù)運(yùn)算和邏輯運(yùn)算指令2. 以以dir為目的操作數(shù)邏輯運(yùn)算指令為目的操

20、作數(shù)邏輯運(yùn)算指令6條條A#data dir與與 ANL或或 ORL異或異或 XRLdir ,#dataA3. 加加1、減、減1指令指令RiAdirRnDPTRINCRiAdirRnDEC 4. 十進(jìn)制調(diào)整指令十進(jìn)制調(diào)整指令 DA A ;僅對存于;僅對存于A中的加法結(jié)果進(jìn)展十進(jìn)制調(diào)整中的加法結(jié)果進(jìn)展十進(jìn)制調(diào)整 假設(shè)需完成十進(jìn)制減法運(yùn)算,那么應(yīng)變減法運(yùn)假設(shè)需完成十進(jìn)制減法運(yùn)算,那么應(yīng)變減法運(yùn)算為補(bǔ)碼的加法運(yùn)算即可,其減數(shù)算為補(bǔ)碼的加法運(yùn)算即可,其減數(shù)X的補(bǔ)碼經(jīng)過的補(bǔ)碼經(jīng)過 (99-X)+1再再DA A后得到。后得到。 原那么:和低原那么:和低4位大于位大于9或有半進(jìn)位,那么低或有半進(jìn)位,那么低4位

21、加位加6 和高和高4位大于位大于9或有或有 進(jìn)位,那么高進(jìn)位,那么高4位加位加6例:例:(DATA)-(DATA+1)=(DATA+2)(DATA)-(DATA+1)=(DATA+2)Y-X=Y-X+100 - Y-X=Y-X+100 - 有效位為有效位為2 2位十進(jìn)制,模為位十進(jìn)制,模為100100 =Y+(99-X)+1 =Y+(99-X)+15. 乘、除法指令乘、除法指令MUL AB;ABBADIV AB;AB商在商在A中,余數(shù)在中,余數(shù)在B中中6. 專對專對A的指令的指令CPL ACLR A; 0 A;A AMOV A,#99H DA AMOV A,#99H DA ACLR C ADD

22、 A,DATACLR C ADD A,DATASUBB A,DATA+1 DA ASUBB A,DATA+1 DA AADD A,#1 MOV DATA+2,AADD A,#1 MOV DATA+2,ACYRR ARL ARLC ARRC A移位指令僅對移位指令僅對 A )00101101A01001011ACY11001011A000101101A1CY10010110A設(shè)設(shè)1CYCY 1. 1.調(diào)用程序和前往類指令調(diào)用程序和前往類指令 1 1長調(diào)用長調(diào)用 LCALL addr16 LCALL addr16 ;addr16PC0addr16PC015 15 指令功能同指令功能同80X8680

23、X86中的中的CALLCALL,調(diào)用范圍,調(diào)用范圍64KB64KB全全部空間,指令的機(jī)器碼為三字節(jié)。部空間,指令的機(jī)器碼為三字節(jié)。 2 2短調(diào)用短調(diào)用 ACALL addr11 ;addr11PC0 ACALL addr11 ;addr11PC01010 指令的功能同前,主要區(qū)別為:指令的功能同前,主要區(qū)別為: addr11PC0 addr11PC010,10,而而PC11PC111515堅(jiān)持原值不變,堅(jiān)持原值不變,故其調(diào)用范圍為故其調(diào)用范圍為2KB2KB,即子程序入口距當(dāng)前,即子程序入口距當(dāng)前PCPC不得不得超越超越2KB2KB地址范圍。本指令的機(jī)器碼為二字節(jié)。地址范圍。本指令的機(jī)器碼為二字

24、節(jié)。3.2.3 3.2.3 控制轉(zhuǎn)移類指令控制轉(zhuǎn)移類指令3 3子程序前往指令從棧頂彈出斷點(diǎn)到子程序前往指令從棧頂彈出斷點(diǎn)到PCPC RET RET ;從調(diào)用子程序前往。;從調(diào)用子程序前往。 RETI RETI ;從中斷效力程序前往并恢復(fù);從中斷效力程序前往并恢復(fù) 中斷優(yōu)先級形狀觸發(fā)器。中斷優(yōu)先級形狀觸發(fā)器。2. 2. 轉(zhuǎn)移指令轉(zhuǎn)移指令 1 1無條件轉(zhuǎn)移指令無條件轉(zhuǎn)移指令1 1短轉(zhuǎn)移短轉(zhuǎn)移 AJMP addr11 AJMP addr11 ;addr11PC0addr11PC01010 轉(zhuǎn)移范圍:轉(zhuǎn)移范圍:2KB 2KB 機(jī)器碼為機(jī)器碼為2 2字節(jié)字節(jié)2 2長轉(zhuǎn)移長轉(zhuǎn)移 LJMP addr16 L

25、JMP addr16 ;addr16PC0addr16PC01515 轉(zhuǎn)移范圍:轉(zhuǎn)移范圍:64KB 64KB 機(jī)器碼為機(jī)器碼為3 3字節(jié)。字節(jié)。3 3間接轉(zhuǎn)移間接轉(zhuǎn)移 JMP A+DPTR JMP A+DPTR ;A+DPTRPC A+DPTRPC 分析以下程序段,說出當(dāng)分析以下程序段,說出當(dāng)A A分別為分別為0 0和和2 2時,程序轉(zhuǎn)置時,程序轉(zhuǎn)置何處?該程序段的功能是什么?何處?該程序段的功能是什么? MOV DPTR MOV DPTR,#TABLE#TABLE JMP A+DPTR JMP A+DPTR TABLE TABLE: AJMP PROC0 AJMP PROC0 AJMP PR

26、OC1 AJMP PROC1 AJMP PROC2 AJMP PROC2 AJMP PROC3 AJMP PROC3 4 4無條件相對轉(zhuǎn)移無條件相對轉(zhuǎn)移 SJMP rel SJMP rel ;PC+relPCPC+relPC, 即即AsAs2 2relPCrelPC,機(jī)器碼為,機(jī)器碼為2 2字節(jié)字節(jié) As As為源地址本指令的首地址,執(zhí)行本指令時當(dāng)為源地址本指令的首地址,執(zhí)行本指令時當(dāng)前前PCPCAs+2As+2,rel rel 為轉(zhuǎn)移的偏移量,轉(zhuǎn)移可以向前轉(zhuǎn)為轉(zhuǎn)移的偏移量,轉(zhuǎn)移可以向前轉(zhuǎn)目的地址小于源地址,也可以向后轉(zhuǎn)目的地址大目的地址小于源地址,也可以向后轉(zhuǎn)目的地址大于源地址,因此偏移量于

27、源地址,因此偏移量rel rel 是是 1 1 字節(jié)有符號數(shù),用字節(jié)有符號數(shù),用補(bǔ)碼表示補(bǔ)碼表示128128127127,所以指令轉(zhuǎn)移范圍在離源,所以指令轉(zhuǎn)移范圍在離源地址地址AsAs的的126126129129字節(jié)之間。字節(jié)之間。 2 2條件轉(zhuǎn)移指令條件轉(zhuǎn)移指令1 1累加器為零非零轉(zhuǎn)移累加器為零非零轉(zhuǎn)移 JZ/JNZ rel JZ/JNZ rel ;A=0/(A0) A=0/(A0) 那么轉(zhuǎn)移,否那么順序那么轉(zhuǎn)移,否那么順序 執(zhí)行程序執(zhí)行程序2 2減減 1 1 不等于零轉(zhuǎn)移不等于零轉(zhuǎn)移 DJNZ Rn/dir,rel DJNZ Rn/dir,rel 功能為:功能為:Rn(dir)-1Rn(d

28、ir)Rn(dir)-1Rn(dir) 相減結(jié)果相減結(jié)果00轉(zhuǎn),轉(zhuǎn), 否那么順序執(zhí)行程序否那么順序執(zhí)行程序 3 3比較轉(zhuǎn)移指令比較轉(zhuǎn)移指令 CJNE A,dir,relCJNE A,dir,rel CJNE A,#data,rel CJNE A,#data,rel CJNE Rn,#data,rel CJNE Rn,#data,rel CJNE Ri,#data,rel CJNE Ri,#data,rel操作數(shù)操作數(shù)1 1不等于操作數(shù)不等于操作數(shù)2 2那么轉(zhuǎn),否那么順序執(zhí)行。那么轉(zhuǎn),否那么順序執(zhí)行。1例:例:Y=-1XZX Z Z X YDATA+2 DATA+1DATA MOV DATA+2

29、 MOV DATA+2,#0FFH#0FFH MOV A MOV A,DATADATA CJNE A CJNE A,DATA+1DATA+1,NEXTNEXTNEXT: JC NEXT1NEXT: JC NEXT1 MOV DATA+2 MOV DATA+2,#1#1NEXT1:RETNEXT1:RET dirRi Rn#dataA1. 1. 位傳送指令位傳送指令 MOV C MOV C,bit ;bit ;bitbitCYCY MOV bit MOV bit,C C ;CYbitCYbit2. 2. 位形狀控制指令位形狀控制指令 CLR C CLR C ;0CY0CY CLR bit CLR

30、 bit ;0bit0bit SETB C SETB C ;1CY1CY SETB bit SETB bit ;1bit1bit CPL C CPL C ;CYCYCYCY CPL bit CPL bit ;bitbitbitbit3.2.4 3.2.4 位操作指令位操作指令3.3.位邏輯運(yùn)算指令位邏輯運(yùn)算指令 ANL C ANL C,bit bit ;CYCYbitbitCYCY ANL C ANL C,/bit /bit ;CYCYbitbitCYCY ORL C ORL C,bit bit ;CYCYbitbitCYCY ORL C ORL C,/bit /bit ;CYCYbitbit

31、CYCY 4. 4.位轉(zhuǎn)移位轉(zhuǎn)移 位轉(zhuǎn)移根據(jù)位的值決議轉(zhuǎn)移,均為相對轉(zhuǎn)移指位轉(zhuǎn)移根據(jù)位的值決議轉(zhuǎn)移,均為相對轉(zhuǎn)移指令。令。JC rel ;CY=1JC rel ;CY=1,那么轉(zhuǎn)移,否那么順序,那么轉(zhuǎn)移,否那么順序執(zhí)行程序執(zhí)行程序JNC rel ;CY=0, JNC rel ;CY=0, 那么轉(zhuǎn)移,否那么順序那么轉(zhuǎn)移,否那么順序執(zhí)行程序執(zhí)行程序JB bitJB bit,rel ;(bit)=1,rel ;(bit)=1,那么轉(zhuǎn)移,否那么順那么轉(zhuǎn)移,否那么順序執(zhí)行程序序執(zhí)行程序JNB bitJNB bit,rel ;(bit)=0,rel ;(bit)=0,那么轉(zhuǎn)移,否那么順那么轉(zhuǎn)移,否那么順序

32、執(zhí)行程序序執(zhí)行程序JBC bitJBC bit,rel ;(bit)=1,rel ;(bit)=1,那么轉(zhuǎn)移,且該位清那么轉(zhuǎn)移,且該位清零,否那么零,否那么 順序執(zhí)行程序順序執(zhí)行程序1.1.定義:定義: 匯編控制指令,沒有指令代碼,不能被匯編控制指令,沒有指令代碼,不能被CPUCPU執(zhí)執(zhí)行,只用于匯編過程,為匯編程序提供匯編信息。行,只用于匯編過程,為匯編程序提供匯編信息。2.2.常用偽指令常用偽指令1 1ORGORGORGORG是設(shè)置起始地址偽指令,其格式是:是設(shè)置起始地址偽指令,其格式是:ORGORG1616位地址或標(biāo)號位地址或標(biāo)號2 2ENDENDENDEND是終了匯編偽指令,其格式是:

33、是終了匯編偽指令,其格式是:ENDEND3 3DBDBDBDB是定義字節(jié)偽指令,其格式是:是定義字節(jié)偽指令,其格式是: 標(biāo)號:標(biāo)號: DB DB 字節(jié)型數(shù)表字節(jié)型數(shù)表4 4DWDWDWDW是定義字偽指令,其格式是:是定義字偽指令,其格式是: 標(biāo)號:標(biāo)號: DW DW 字型數(shù)表字型數(shù)表3.3 3.3 偽指令偽指令5 5DSDSDSDS是定義存儲空間偽指令,其格式是:是定義存儲空間偽指令,其格式是: 標(biāo)號:標(biāo)號: DS DS 表達(dá)式表達(dá)式6 6EQUEQUEQUEQU是賦值偽指令,其格式是:是賦值偽指令,其格式是:字符稱號字符稱號EQUEQU數(shù)據(jù)或匯編符號數(shù)據(jù)或匯編符號7 7DATADATADAT

34、ADATA是數(shù)據(jù)地址賦值偽指令,其格式是:是數(shù)據(jù)地址賦值偽指令,其格式是:字符稱號字符稱號DATADATA表達(dá)式表達(dá)式8 8BITBITBITBIT是位地址賦值偽指令,其格式是:是位地址賦值偽指令,其格式是:字符稱號字符稱號BITBIT位地址位地址 詳見表詳見表3.3 MCS-513.3 MCS-51中的偽指令中的偽指令進(jìn)制間的轉(zhuǎn)換進(jìn)制間的轉(zhuǎn)換1.1.十進(jìn)制十進(jìn)制二進(jìn)制整數(shù)二進(jìn)制整數(shù)任何十進(jìn)制數(shù)有:任何十進(jìn)制數(shù)有:dn-1dn-110n-110n-1 dn-2 dn-210n-2 10n-2 d1 d1101 101 d0 d0100100 (dn-1(dn-110 10 dn-2) dn-2

35、)10 10 d1) d1)1010 d0 d0規(guī)律:規(guī)律: di di1010 di-1 di-1 (i=1,2,n-1)(i=1,2,n-1)按二進(jìn)制運(yùn)算規(guī)那么運(yùn)算那么得二進(jìn)制按二進(jìn)制運(yùn)算規(guī)那么運(yùn)算那么得二進(jìn)制數(shù)數(shù)3.4 3.4 程序設(shè)計舉例程序設(shè)計舉例例:將位十進(jìn)制數(shù)例:將位十進(jìn)制數(shù)D3D2D1D0D3D2D1D0轉(zhuǎn)換成二進(jìn)制數(shù),設(shè)轉(zhuǎn)換成二進(jìn)制數(shù),設(shè)位位 十進(jìn)制數(shù)十進(jìn)制數(shù)D3D2D1D0D3D2D1D0按分別按分別BCDBCD碼方式存放,要求結(jié)碼方式存放,要求結(jié) 果的高位存放在果的高位存放在R3R3中,結(jié)果的低位存放在中,結(jié)果的低位存放在R2R2中。中。方法:方法:D3D2D1D0=(0

36、D3D2D1D0=(010+D3)10+D3)10+D2)10+D2)1010D1)D1)10+D010+D0結(jié)果:結(jié)果:1616位二進(jìn)制數(shù)位二進(jìn)制數(shù)0D30D30D20D20D10D10D00D0DATADATA流程:流程: 設(shè)置指針指向設(shè)置指針指向DATA計數(shù)器初始計數(shù)器初始R7=3DiDi初始初始結(jié)果單元結(jié)果單元結(jié)果單元內(nèi)容結(jié)果單元內(nèi)容10+Di-1 結(jié)果單元結(jié)果單元修正指針修正指針計數(shù)器計數(shù)器-1計數(shù)器計數(shù)器計數(shù)器計數(shù)器=0?返返 回回Y YN NR3R3R2R2R2R20AH0AHR3R30AH0AH0 0A A0 00 00 0R3R3R2R2MOV A,R2MOV B,#0AHM

37、UL ABMOV R2,AMOV A,BXCH A,R3MOV B,#0AHMUL ABADDA,R3MOV R3,ARETMUL10:結(jié)果單元乘結(jié)果單元乘1010子程序子程序由于由于4 4位位1010進(jìn)制進(jìn)制99999999小于小于1616位位2 2進(jìn)制進(jìn)制6553565535,所以,所以轉(zhuǎn)換結(jié)果不會大于轉(zhuǎn)換結(jié)果不會大于1616位位MOV R0,#DATAMOV R7,#03HMOV A,R0MOV R2,AMOV R3,#0ACALL MUL10INC R0MOV A, R0 ADD A,R2MOV R2,AMOV A,R3ADDC A,#0MOV R3,ADJNZ R7,BCDB1RET

38、BCDB:BCDB1:0D30D30D20D20D10D10D00D0DATADATA2. 2. 十進(jìn)制十進(jìn)制二進(jìn)制小數(shù)二進(jìn)制小數(shù) 1010進(jìn)制乘進(jìn)制乘2 2取整取溢出取整取溢出例:例:0.625 = 2-1+2-3 = 0.10100000B0.625 = 2-1+2-3 = 0.10100000Ba.a.小數(shù)點(diǎn)位數(shù)由乘小數(shù)點(diǎn)位數(shù)由乘2 2次數(shù)定,結(jié)果單元字節(jié)數(shù)次數(shù)定,結(jié)果單元字節(jié)數(shù) 也由此定也由此定b.b.第一次的整數(shù)權(quán)最高第一次的整數(shù)權(quán)最高=2-1=2-1c.c.乘乘2 2是是1010進(jìn)制的乘進(jìn)制的乘2 2,本身相加再,本身相加再DA ADA A調(diào)整調(diào)整D = b-1D = b-12-1

39、+ b-22-1+ b-22-22-2b-mb-m2-m 2-m 例:設(shè)入口時例:設(shè)入口時1010進(jìn)制數(shù)在進(jìn)制數(shù)在A A中,要求結(jié)果放在中,要求結(jié)果放在R2R2中中(8(8位二位二進(jìn)制小數(shù)進(jìn)制小數(shù)結(jié)果單元清結(jié)果單元清0 0次數(shù)計數(shù)器初始次數(shù)計數(shù)器初始十進(jìn)制小數(shù)單元乘十進(jìn)制小數(shù)單元乘2 2整數(shù)移入結(jié)果單元整數(shù)移入結(jié)果單元計數(shù)器計數(shù)器-1-1計數(shù)器計數(shù)器計數(shù)器計數(shù)器=0=0?返返 回回Y YN NBCDBPBCDBP: MOVMOV R2 R2,#0#0 MOV MOV R6 R6,#8#8BCDBP1BCDBP1:ADD AADD A,ACCACC DA A DA A XCH XCH A A,R

40、2R2 RLC RLC A A XCH XCH A A,R2R2 DJNZ R6 DJNZ R6,BCDBP1BCDBP1 RET RET;結(jié)果單元清;結(jié)果單元清0 0;次數(shù)初始;次數(shù)初始;10102 2;將整數(shù)移入結(jié)果單元;將整數(shù)移入結(jié)果單元溢出在進(jìn)位位中溢出在進(jìn)位位中3. 3. 二進(jìn)制二進(jìn)制十進(jìn)制整數(shù)十進(jìn)制整數(shù) 按權(quán)展開按權(quán)展開以以8 8位為例:位為例:b7b6b5b4b3b2b1b0=b7b7b6b5b4b3b2b1b0=b727+b627+b626+b026+b02020 =(0 =(02+b7)2+b7)2+b6)2+b6)2+)2+)2+b02+b0將二進(jìn)制數(shù)逐漸左移得:將二進(jìn)制數(shù)逐漸左移得:b7b7,b6b6,b5b5,b4b4,b3b3,b2b2,b1b1,b0b0結(jié)果單元字節(jié)數(shù)結(jié)果單元字節(jié)數(shù) :二進(jìn)制:二進(jìn)制1 1字節(jié)字節(jié)(255) (255) 十進(jìn)制十進(jìn)制2 2字節(jié)字節(jié) 二進(jìn)制二進(jìn)制2 2字節(jié)字節(jié)(655

溫馨提示

  • 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

提交評論