單片機(jī)與嵌入式系統(tǒng)原理第三章課件_第1頁
單片機(jī)與嵌入式系統(tǒng)原理第三章課件_第2頁
單片機(jī)與嵌入式系統(tǒng)原理第三章課件_第3頁
單片機(jī)與嵌入式系統(tǒng)原理第三章課件_第4頁
單片機(jī)與嵌入式系統(tǒng)原理第三章課件_第5頁
已閱讀5頁,還剩68頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第三章 MCS-51指令系統(tǒng)3-1 指令格式3-2 尋址方式3-3 數(shù)據(jù)傳送指令3-4 算術(shù)運算指令3-5 邏輯運算指令3-6 位操作指令3-7 控制轉(zhuǎn)移指令第三章 MCS-51指令系統(tǒng)3-1 指令格式 一、 匯編語言指令格式標(biāo)號: 操作碼 操作數(shù)1,操作數(shù)2 ,操作數(shù)3 ;注釋 例: LOOP: MOV A,#40H ;40H - A 標(biāo)號: 指令地址的標(biāo)志符號。以字母開始,后跟18個字母或數(shù)字或“_”,并以冒號“:”結(jié)尾。 操作碼:指明指令功能。25個字母。MOV 傳送ANL 邏輯與MUL 乘法RR 右循環(huán)SJMP 短跳轉(zhuǎn)RET 子程序返回例:第三章 MCS-51指令系統(tǒng)3-1 指令格式

2、一、 匯編語言指令格式標(biāo)號: 操作碼 操作數(shù)1,操作數(shù)2;注釋 例: LOOP: MOV A,#40H ;40H - A 操作數(shù):指令操作的對象,可以是數(shù)據(jù)、地址、寄存器名及約定符號。 注釋行:說明指令在程序中的作用。 操作碼和操作數(shù)是指令主體。第三章 MCS-51指令系統(tǒng)3-1 指令格式 一、 匯編語言指令格式 注意以下一些常用符號:data 立即數(shù) direct 直接地址 Ri 以Ri里面的內(nèi)容為物理地址的存儲單元(i=0、1) Rn 工作寄存器(n=07)第三章 MCS-51指令系統(tǒng)1.定位偽指令 格式: ORG m 例3-3 ORG 0000H START: SJMP MAIN ORG

3、 0030H MAIN: MOV SP,# 30H 以START開始的程序匯編為機(jī)器碼后從0000H存貯單元開始連續(xù)存放。 3-1 指令格式二、 偽指令 匯編時不產(chǎn)生機(jī)器碼2.匯編結(jié)束偽指令 格式: END第三章 MCS-51指令系統(tǒng)3.定義字節(jié)偽指令 格式: DB X1,X2,Xn 例3-4 ORG 7F00H DB 01110010B,16H,45,8,A 匯編后存貯單元內(nèi)容為: (7F00H)=72H (7F01H)=16H (7F02H)=2DH (7F03H)=38H (7F04H)=40H 4.定義字偽指令 格式: DW Y1,Y2,Yn高高八位放入低地址單元,低八位放入高地址單元

4、!3-1 指令格式二、 偽指令 匯編時不產(chǎn)生機(jī)器碼第三章 MCS-51指令系統(tǒng)5定義空間偽指令:DS表達(dá)式 例3-6 ORG 0F00H DS10H DB20H,40H 匯編后,從0F00H開始,保留16個字節(jié)的內(nèi)存單元, 然后從0F10H開始,按照下一條DB偽指令給內(nèi)存單元賦值, 得(0F10H)=20H,(0F11H)=40H。3-1 指令格式二、 偽指令 匯編時不產(chǎn)生機(jī)器碼DB、DW、DS偽指令都只對ROM起作用!第三章 MCS-51指令系統(tǒng) 例3-7 ORG 8500H AA EQU R1 A10 EQU 10H DELAY EQU 87E6H MOV R0, A10 ;R0(10H)

5、 MOV A, AA ;A(R1) LCALL DELAY;調(diào)用起始地址為87E6H的子程序 END3-1 指令格式二、 偽指令 匯編時不產(chǎn)生機(jī)器碼6等值偽指令:EQU數(shù)據(jù)或匯編符EQU賦值后,AA為寄存器R1,A10為8位直接地址10H,DELAY為16位地址87E6H。字符名稱必須先賦值后使用,通常在源程序的開頭賦值!第三章 MCS-51指令系統(tǒng)7數(shù)據(jù)地址賦值偽指令 格式: DATA 表達(dá)式 3-1 指令格式二、 偽指令 匯編時不產(chǎn)生機(jī)器碼8位地址賦值偽指令 格式: BIT 位地址 第三章 MCS-51指令系統(tǒng)一、立即尋址方式指令中給出實際操作數(shù)據(jù)(立即數(shù)),以指令字節(jié)的形式存放在ROM中

6、。一般用于為寄存器或存儲器賦常數(shù)初值。 例: 8位立即數(shù): MOV A,#40H ;A40H 16位立即數(shù): MOV DPTR,#2100H ;DPTR2100H DPH 21H DPL 00H3-2 指令尋址方式(指令如何給出參與運算的操作數(shù))尋找操作數(shù)的方法叫尋址方式。第三章 MCS-51指令系統(tǒng)二、直接尋址方式 指令操作數(shù)是存儲器單元地址,數(shù)據(jù)在存儲器單元中。 MOV A,40H;A(40H) 例:設(shè)存儲器兩個單元的內(nèi)容如圖所示, 執(zhí)行指令 MOV A,40H 后(A)= ? 直接尋址方式對數(shù)據(jù)操作時,地址是固定值,而地址所指 定的單元內(nèi)容為變量形式。 SFR只能采用直接尋址方式訪問,可

7、以用 物理地址,也可以用寄存器標(biāo)號(推薦)。 例:累加器A E0H ACC 程序狀態(tài)字 D0H PSW56H 第三章 MCS-51指令系統(tǒng) 三、寄存器尋址方式 指令操作數(shù)為寄存器名(Rn),數(shù)據(jù)在寄存器中。 例: MOV A,R0;A(R0) 設(shè)指令執(zhí)行前 (A)=20H,(R0)=40H, 執(zhí)行指令后,(A)= ?,(R0)= ?40H40H四、寄存器間接尋址方式 指令的操作數(shù)為寄存器名,寄存器中為數(shù)據(jù)地址。 存放地址的寄存器稱為間址寄存器或數(shù)據(jù)指針。 例: MOV A,R0;A (R0) 設(shè)指令執(zhí)行前(A)=20H,(R0)=40H,地址為40H存儲器單元內(nèi)容如圖所示。執(zhí)行指令后, (A)

8、= ? ,(R0)= ? , (40H)= ?34H40H34H第三章 MCS-51指令系統(tǒng)五、變址間接尋址方式數(shù)據(jù)在存儲器中,指令給出的寄存器中為數(shù)據(jù)的基地址和偏移量。數(shù)據(jù)地址 = 基地址 + 偏移量。例:MOVC A,A+DPTR;A(A)+(DPTR) 設(shè)指令執(zhí)行前 (A)=09H,(DPTR)=2000H,存儲器單元內(nèi)容如圖所示。 執(zhí)行指令后,(A)= ? (DPTR)= ? 12H2000H第三章 MCS-51指令系統(tǒng)注意: (1)寄存器間址可拓寬單片機(jī)尋址范圍,如:Ri可用于對片內(nèi)RAM尋址(00H-7FH)(MOV指令),也可用于對 片外RAM尋址(00H-0FFH)(MOVX指

9、令); DPTR可尋址片外ROM/RAM的全部64KB區(qū)域(MOVC/MOVX指令)。 (2)寄存器間址指令不能用于尋址SFR。第三章 MCS-51指令系統(tǒng)六、相對尋址方式 以PC的內(nèi)容作為基地址,加上偏移量,所得結(jié)果送PC寄存器作為轉(zhuǎn)移地址。偏移量在128 +127之間。 例:SJMP 81H;短跳轉(zhuǎn) 第三章 MCS-51指令系統(tǒng) 指令給出位地址。數(shù)據(jù)在存儲器位尋址區(qū)的某一位。 例: MOV C,40H;Cy(位地址40H) 設(shè)指令執(zhí)行前(Cy)=1,位地址40H存儲器單元如圖, 執(zhí)行指令后,(Cy)= ?028H 0110001029H 11010111位尋址區(qū)七.位尋址方式第三章 MCS

10、-51指令系統(tǒng)MCS-51指令系統(tǒng)中共有111條指令,按功能可分為以下四大類: 數(shù)據(jù)傳送類 算術(shù)操作類 邏輯操作類 控制轉(zhuǎn)移類 3-3 指令的類型、字節(jié)和周期第三章 MCS-51指令系統(tǒng)指令的字節(jié)和周期:寄存器名可隱含或包含在操作碼中;操作數(shù)為直接地址或立即數(shù)則必需單獨占用一個字節(jié);注意: 凡指令碼中含有直接地址或立即數(shù)的指令,其字節(jié)數(shù)應(yīng)在原有基礎(chǔ)上分別加1。 執(zhí)行每條指令所需的機(jī)器周期數(shù)既取決于指令所含字節(jié)數(shù),也取決于CPU在每個機(jī)器周期內(nèi)最多能進(jìn)行兩次讀操作、每次一個字節(jié)的特性。第三章 MCS-51指令系統(tǒng)實現(xiàn)累加器、寄存器、存儲器之間的數(shù)據(jù)傳送。1、內(nèi)部傳送指令2、位傳送指令3、外部傳送

11、指令4、交換指令5、堆棧操作指令6、查表指令3-4 數(shù)據(jù)傳送指令第三章 MCS-51指令系統(tǒng)1. 內(nèi)部傳送指令:實現(xiàn)片內(nèi)數(shù)據(jù)存儲器中數(shù)據(jù)傳送。 指令格式: MOV 目的操作數(shù),源操作數(shù) 尋址方式:立即尋址、直接尋址、 寄存器尋址、寄存器間址。MOV A,Rn ;A(Rn),n=07 MOV A,direct ;A(direct)MOV A,Ri ;A(Ri),i=0或1MOV A,#data ;AdataMOV Rn, direct ;Rn(direct)MOV Ri, direct ;(Ri)(direct)MOV direct1,direct2 ;direct1(direct2)MOV D

12、PTR,#data16 ;DPTRdata16(唯一的1條16位數(shù)據(jù)傳送指令)第三章 MCS-51指令系統(tǒng)操作碼目的源操作內(nèi)容字節(jié)數(shù)執(zhí)行時間MOVA,#datadirectRiRnA#dataA(direct)A(Ri)A(Rn)22111111Rn,#datadirectARn#dataRn(direct)Rn(A)221121direct,#dataAdirectRiRndirect#datadirect(A)direct(direct)direct(Ri)direct(Rn)3232221221Ri,#datadirectA(Ri)#data(Ri)(direct)(Ri) (A)221

13、121第三章 MCS-51指令系統(tǒng) 例:順序執(zhí)行下列指令序列,求每一步執(zhí)行結(jié)果。MOV A,#30H;MOV 4FH,A;MOV R0,#20H ;MOV R0,4FH ;MOV 21H,20H ;(A)= 30H(4FH)= 30H(R0)= 20H(20H)= 30H(21H)= 30H第三章 MCS-51指令系統(tǒng)說明: 1. 一條指令中不能同時出現(xiàn)兩個工作寄存器:非法指令:MOV R1,R2 MOV R2,R0 2. 間址寄存器只能使用 R0、R1。 非法指令: MOV A,R2 3. SFR區(qū)只能直接尋址,不能用寄存器間接尋址。 錯誤指令: MOV R0,#80H MOV A,R0 該

14、指令是把52子系列單片機(jī)片內(nèi)RAM中80H單元內(nèi)容送累加器A。 4. 目的操作數(shù)不能采用立即尋址。 非法指令: MOV #80H,R2 第三章 MCS-51指令系統(tǒng)2. 位傳送指令:MOV C, bit ;C(bit)MOV bit, C ;bit(C)其中一個操作數(shù)必須為位累加器C(即PSW中的Cy)。例:將位地址20H中的內(nèi)容傳送到位地址30H中: MOV C,20H MOV 30H,C錯:MOV 30H,20H ;此為字節(jié)傳送指令0第三章 MCS-51指令系統(tǒng) 3. 外部傳送指令 實現(xiàn)片外數(shù)據(jù)存儲器和A累加器之間的數(shù)據(jù)傳送。 指令格式:MOVX 目的操作數(shù),源操作數(shù) 尋址方式:片外數(shù)據(jù)存

15、儲器用寄存器間址方式。 1).DPTR作16位數(shù)據(jù)指針,尋址64KB片外RAM空間 MOVX A,DPTR;A(DPTR) MOVX DPTR,A;(DPTR)(A) 2).Ri作8位數(shù)據(jù)指針,尋址256B片外RAM空間 MOVX A,Ri;A(Ri) MOVX Ri,A ;(Ri)(A) 第三章 MCS-51指令系統(tǒng)例:實現(xiàn)片外數(shù)據(jù)存儲器數(shù)據(jù)傳送 (2000H)(2100H)。 MOV DPTR,#2000HMOVX A,DPTRMOV DPTR,#2100HMOVX DPTR,A;(DPTR)= 2000H; (A)= X;(DPTR)= 2100H; (2100H)= X片外數(shù)據(jù)存儲器不

16、能直接尋址。 下列為非法指令: MOVX A,2000H MOVX 2100H,2000H第三章 MCS-51指令系統(tǒng)3. 查表指令 實現(xiàn)從程序存儲器讀取數(shù)據(jù)到A累加器,只能使用變址間接尋址方式。 多用于查常數(shù)表程序,可直接求取常數(shù)表中的函數(shù)值。 1DPTR為基址寄存器MOVCA,A+DPTR ;A(A+DPTR) 查表范圍為 64KB ROM任意空間,稱為遠(yuǎn)程查表指令 。 2. PC為基址寄存器MOVCA,A+PC;A(A)+(PC)+1) 常數(shù)表只能在查表指令后256B范圍內(nèi)。 (PC內(nèi)容為下一條指令的起始地址。)第三章 MCS-51指令系統(tǒng)例:查表法求Y=X2。設(shè)X(0X15)在片內(nèi)RA

17、M的20H單元中,要求通過查表求Y,存入片內(nèi)RAM21H單元。1)ORG 1000HSQU:MOV DPTR,#TAB ;確定表首地址(基地址)MOV A,20H ;取X(偏移量)MOVC A,A+DPTR;查表求Y=X2MOV 21H,A ;保存YRET ;子程序結(jié)束 ;其它程序段ORG 3000H ;常數(shù)表格首地址TAB:DB 00,01,04,09,225;平方表第三章 MCS-51指令系統(tǒng)例:查表法求Y=X2。設(shè)X(0X15)在片內(nèi)RAM的20H單元中,要求將查表求Y,存入片內(nèi)RAM的21H單元。2)指令地址 源程序 ORG 1000H ;程序起始地址 1000H SQU:MOV A,

18、20H ;取X 1002H ADD A,#3 ;修正偏移量 1004H MOVC A,A+PC ;查表求Y=X2 1005H MOV 21H,A ;存結(jié)果 1007H RET ;子程序結(jié)束 1008H TAB:DB 00,01,04 ;平方表 100BH DB 09,225 第三章 MCS-51指令系統(tǒng)(待修)4. 堆棧操作指令 入棧指令:PUSH n ;SPSP+1,(SP)(n) 出棧指令:POP n ;(n)(SP),SPSP-1例:設(shè) A=02,B=56H,執(zhí)行下列指令后,SP= ? ,A= ? ,B= ?30H02H56H SBR: MOV SP,#30H ;設(shè)棧底 PUSH ACC

19、 PUSH B MOV A,#0 MOV B,#01 POP B POP ACC只有壓棧指令會改變堆棧區(qū)中的數(shù)據(jù)。 SP SP 02 SP 56H 02 56H SP 02 02HA00H02H00H02H02H SP 第三章 MCS-51指令系統(tǒng) 5. 交換指令(累加器專用交換指令) 實現(xiàn)片內(nèi)RAM區(qū)的數(shù)據(jù)雙向傳送。1. 字節(jié)交換指令 XCH A,Rn ;(A)(Rn) XCH A,Ri;(A)(Ri) XCH A,direct ;(A)(direct)例:設(shè)A= 29H,執(zhí)行指令 XCH A,2AH后,A= ?(2AH)= ?38H29H29H第三章 MCS-51指令系統(tǒng) 2. 半字節(jié)交換

20、指令 XCHD A,Ri ;(A)03 (Ri)03 SWAP A ;(A)47 (A)03例:將片內(nèi)RAM 2AH和2BH單元中的BCD碼轉(zhuǎn)換成壓縮式BCD碼存入20H單元。MOV A,#0 MOV R0,#2AH MOV R1,#2BHXCHD A,R0SWAP AXCHD A,R1XCH A,20H第三章 MCS-51指令系統(tǒng)例:已知(10H)=5EH,(2BH)=1DH,(40H)=2BH,(60H)=3CH,執(zhí)行下列程序段后,寫出對應(yīng)寄存器和地址單元的運行結(jié)果。 MOV 20H,60HMOV R1, 20HMOV A, 40HXCH A, R1 XCH A, 60HXCH A, R1

21、MOV R0,#10H XCHD A,R0(A)= 、(10H)= 、(2BH)= 、(40H)= 、第三章 MCS-51指令系統(tǒng) 與數(shù)據(jù)傳送指令不同,多數(shù)算術(shù)運算指令會影響標(biāo)志位的狀態(tài),即CPU執(zhí)行算術(shù)運算指令后,根據(jù)數(shù)據(jù)操作情況自動設(shè)置標(biāo)志位的狀態(tài)。 狀態(tài)標(biāo)志 MCS-51 的程序狀態(tài)字寄存器 PSW 為標(biāo)志寄存器。 其格式如下:3-5算術(shù)運算指令CyACF0RS1RS0OVP第三章 MCS-51指令系統(tǒng)1標(biāo)志位(自動設(shè)置狀態(tài))1)Cy:進(jìn)位標(biāo)志位保存運算后最高位的進(jìn)位/借位狀態(tài),當(dāng)有進(jìn)位/借位,Cy=1,否則Cy=0。2)AC:輔助進(jìn)位標(biāo)志位保存低半字節(jié)的進(jìn)位/借位狀態(tài),當(dāng)D3產(chǎn)生進(jìn)位/

22、借位,AC=1,否則AC=0。用于十進(jìn)制調(diào)整。3)OV:溢出標(biāo)志位OV=Cy7Cy6,補(bǔ)碼運算產(chǎn)生溢出OV=1,否則OV=0。4)P:奇偶標(biāo)志位反映累加器A中數(shù)據(jù)的奇偶性。當(dāng)1的個數(shù)為奇數(shù),P=1,否則P=0。第三章 MCS-51指令系統(tǒng) 2用戶選擇位(編程設(shè)置狀態(tài))1)F0:用戶自定義標(biāo)志位。2)RS1、RS0: 工作寄存器區(qū)選擇位。復(fù)位時,PSW=00H例:復(fù)位后,設(shè)置使用工作寄存 器3區(qū),其余標(biāo)志位不變。RS1 RS0工作寄存區(qū)0 00區(qū)0 11區(qū)1 02區(qū)1 13區(qū)CyACF0RS1RS0OVP 解: MOV PSW,#18H第三章 MCS-51指令系統(tǒng) 3-5-1 加減指令 完成源操

23、作數(shù)和 累加器A 中數(shù)據(jù)的加減運算。 1.加法指令 1)不帶進(jìn)位加法:(ADD A,源操作數(shù)) ADD A,Rn ADD A,direct ADD A,Ri ADD A,#data 影響Cy、OV、AC、P第三章 MCS-51指令系統(tǒng)例:A=3BH,PSW=0,執(zhí)行指令 ADD A,#3BH求:A= ? ,Cy= ? ,OV= ? ,AC= ? ,P= ? , PSW= ?01000001= 41H 0011 1011 + 0011 1011 0111 0110CyACF0RS1RS0OVP76H0110第三章 MCS-51指令系統(tǒng) 2)帶進(jìn)位加法: ADDC A,源操作數(shù) ADDC A,Rn

24、 ADDC A,direct ADDC A,Ri ADDC A,#data 影響Cy、OV、AC、P例:A= 9AH,R2= E3H,PSW= 0,執(zhí)行指令A(yù)DDC A,R2 后求:A= ? ,Cy= ? ,OV= ?,AC= ?,P= ?,PSW= ?10000100 = 84H 1001 1010 1110 0011 + 0 1 0111 1101CyACF0RS1RS0OVP7DH1100 注意: 上例中,若將兩個操作數(shù)看作是無符號數(shù),則操作結(jié)果正確;若將它們看作帶符號數(shù),則根據(jù)PSW中(OV)=1可知加法運算產(chǎn)生了溢出,累加器A中的結(jié)果顯然是錯誤的。 因此,采用加法指令編寫帶符號數(shù)的加

25、法運算程序時,要想判斷累加器A中獲得的結(jié)果是否正確就必須檢測PSW中標(biāo)志位OV的狀態(tài)。第三章 MCS-51指令系統(tǒng) 帶進(jìn)位加法指令A(yù)DDC用于多字節(jié)運算例:設(shè)雙字節(jié)數(shù) X 存在片內(nèi)RAM 40H、41H單元,Y存在42H、43H單元,編程求 Z=X+Y,并存入片內(nèi)RAM單元44H、45H、46H。ADDS:CLR C MOV A,40HADD A,42HMOV 44H,AMOV A,41HADDC A,43HMOV 45H,AMOV A,#0ADDC A,#0MOV 46H,ARET;取被加數(shù)低字節(jié);加上加數(shù)低字節(jié);保存和的低字節(jié);取被加數(shù)高字節(jié);加上加數(shù)高字節(jié);保存和的高字節(jié);求高字節(jié)進(jìn)位;

26、子程序結(jié)束第三章 MCS-51指令系統(tǒng)3)BCD碼十進(jìn)制調(diào)整指令:DAA; 對 A 中加法結(jié)果進(jìn)行調(diào)整通常緊跟; AC=1或A309,則A=(A)+06H ; Cy=1或A749,則A=(A)+60H在一條普通加法指令之后,用以實現(xiàn)BCD加法。 十進(jìn)制加法指令:ADD A,源操作數(shù)DA A 帶進(jìn)位十進(jìn)制加法指令:ADDC A,源操作數(shù)DA A第三章 MCS-51指令系統(tǒng) 例3-39:編制8559的BCD加法程序,并對其工作過程進(jìn)行分析。 解:相應(yīng)BCD加法程序為: MOV A,#85H;A85H ADD A,#59H;A85H+59H= 0DEH DA A ;A44,Cy=1第三章 MCS-5

27、1指令系統(tǒng)二進(jìn)制加法和進(jìn)制調(diào)整過程為: 85 1000 0101 +) 59 0101 1001 144 (0)1101 1110 110;低4位9,加6調(diào)整 1110 0100 110 ;高4位9,加60H調(diào)整 (1) 0100 0100運算結(jié)果為(A)=44H,Cy=1 即十進(jìn)制的144。 第三章 MCS-51指令系統(tǒng)2減法指令(只有帶Cy的減法) SUBB A,源操作數(shù);帶借位減法指令 SUBB A,Rn ;A(A)-(Rn)-(Cy) SUBB A,direct SUBB A,Ri SUBB A,#data 影響:Cy、OV、AC、P例:(A)= 5AH,(R2)= 5AH,(Cy)=

28、 0,執(zhí)行下列指令SUBB A,R2求:A= 0,Cy= 0,OV= 0,P= 0,AC= 0.第三章 MCS-51指令系統(tǒng)例3-36設(shè)(A)=0C9H,(R0)=60H,(60H)=54H,Cy=1,執(zhí)行指令:SUBB A,R0 結(jié)果為 (A)=74H 標(biāo)志位為Cy=0,0V=1,AC=0,P=0 01110 1 借位 1100 1001 (A) 0101 0100 (R0) - 1 Cy 0111 0100第三章 MCS-51指令系統(tǒng)3. 增量、減量指令增量指令: INC 單操作數(shù) INC A INC Rn INC direct INC Ri INC DPTR除對A操作影響標(biāo)志位P以外,不

29、影響標(biāo)志位狀態(tài)。第三章 MCS-51指令系統(tǒng) 減量指令:DEC 單操作數(shù) DEC A DEC direct DEC Ri DEC Rn 除對A操作影響標(biāo)志位P以外,不影響標(biāo)志位狀態(tài)。 注意:沒有指令 DEC DPTR 可用指令 DEC DPL 代替第三章 MCS-51指令系統(tǒng)3-5-2.乘除指令 MUL AB;BAAB,Cy0,B高字節(jié),A低字節(jié); 當(dāng)積高字節(jié)B=0,OV0;B0,則OV1 DIV AB ;AB,A商,B余數(shù),Cy0, 當(dāng)除數(shù)B=0,OV1;B0,則OV0。例:(A)= 96(60H), (B)= 192(0C0H),執(zhí)行指令 MUL AB后, 求:A= ,B= ,Cy= ,O

30、V= ,P= . 解: 96 192 = 18432(4800H)例: (A)= 158(F6H),(B)= 13(0DH),執(zhí)行指令 DIV AB后 求:A= ,B= ,Cy= ,OV= ,P= 解: 158 13 = 12(0CH),余數(shù)= 2(02H)。00H 48H 0 1 00CH 02H 0 0 0第三章 MCS-51指令系統(tǒng)3-6 邏輯運算指令一、單操作數(shù)指令(A累加器為操作數(shù))1. A清0指令: CLR A ;A02. A取反指令:CPL A ;A/A 3. 循環(huán)移位指令: 1)8位循環(huán)指令: RL A ;A循環(huán)左移一位 RR A ;A循環(huán)右移一位 2)9位循環(huán)指令: RLC

31、A;帶Cy循環(huán)左移一位 RRC A;帶Cy循環(huán)右移一位第三章 MCS-51指令系統(tǒng)例:設(shè) A= 11000101,Cy= 0,分別執(zhí)行下列單條指令: CPL A ;A= ,Cy= RL A ;A= ,Cy= RLC A ;A= ,Cy= 00111010 0 10001011 0 10001010 1第三章 MCS-51指令系統(tǒng) 用9位循環(huán)指令實現(xiàn)多字節(jié)移位例:編程將寄存器 R6R5 中的雙字節(jié)數(shù)X左移一位。0CyR6R5CyCLR CMOV A,R5RLC AMOV R5,AMOV A,R6RLC AMOV R6,A;Cy=0, 設(shè) R6= 55H ,R5= AAH;R6=01010101,

32、R5=10101010,Cy=0;R6=01010101,R5=01010100,Cy=1;R6=10101011,R5=01010100,Cy=0第三章 MCS-51指令系統(tǒng)二、雙操作數(shù)邏輯運算指令(對位進(jìn)行邏輯運算):ANL、ORL、XRL(各有6條,以A或direct為目的地址)以ANL指令為例:ANL A,Rn ANL A,direct ANL A,Ri ANL A,#data ANL direct,AANL direct,#data邏輯與指令常用于清零字節(jié)中的某些位。邏輯或指令常用于置1字節(jié)中的某些位。邏輯異或指令通常用來對某些位取反。第三章 MCS-51指令系統(tǒng)二、雙操作數(shù)邏輯運算

33、指令(對位進(jìn)行邏輯運算):例 A=01B,表示隨機(jī)狀態(tài),為1或0, 執(zhí)行下述一組指令執(zhí)行后A的值如何? ANL A,#0E7H; ORL A,#03H; ; XRL A,#0C0H;解 :執(zhí)行上述指令后,A=100011B。將累加器A的內(nèi)容D4、D3清0將累加器A的內(nèi)容D1、D0置1將累加器A的內(nèi)容D7、D6取反第三章 MCS-51指令系統(tǒng)三、位邏輯操作指令 位清0、置1、取反: CLR、SETB、CPL例:CLR C ;Cy0, CLR 40H;位地址40H 0第三章 MCS-51指令系統(tǒng)三雙位變量邏輯運算:ANL、ORL: ANL C,40H ;CC(40H) ANL C,/40H ;CC

34、/(40H)例:設(shè) (Cy)=0,(位地址40H)=1,執(zhí)行指令 ANL C,/40H 后, Cy= ? , (位地址40H)= ? 位地址表示法: 位地址 40H,位寄存器 F0,字節(jié)加位 ACC.001第三章 MCS-51指令系統(tǒng)3-7 控制轉(zhuǎn)移指令 轉(zhuǎn)移指令通過改寫PC的當(dāng)前值,從而改變CPU執(zhí)行程序的順序,使程序發(fā)生跳轉(zhuǎn)。按轉(zhuǎn)移條件分類:1)無條件轉(zhuǎn)移:執(zhí)行無條件轉(zhuǎn)移指令,程序無條件轉(zhuǎn)移到指定處。2)條件轉(zhuǎn)移:指令中給出轉(zhuǎn)移條件,執(zhí)行指令時,先測試條件, 若滿足條件,則程序發(fā)生轉(zhuǎn)移,否則,仍順序執(zhí) 行程序。第三章 MCS-51指令系統(tǒng)按轉(zhuǎn)移方式分類:1)絕對轉(zhuǎn)移:指令給出轉(zhuǎn)移目的的絕對

35、地址 nn,執(zhí)行指令后, PCnn。 例: 地址 源程序 1000H LJMP 2000H 1003H 2000H ;轉(zhuǎn)移目的指令2)相對轉(zhuǎn)移:指令給出轉(zhuǎn)移目的與轉(zhuǎn)移指令的相對偏移量e,執(zhí) 行指令后,PCPC + e 。 例: 地址 源程序 1000H SJMP 02 1004H ;轉(zhuǎn)移目的指令第三章 MCS-51指令系統(tǒng)一.無條件轉(zhuǎn)移指令 1.長轉(zhuǎn)移指令:LJMP addr16 ;PC addr16 指令轉(zhuǎn)移范圍:64KB,無條件轉(zhuǎn)移,不影響任何標(biāo)志位, addr16往往采用標(biāo)號表示(如LOOP、LOOP1等) 2.絕對轉(zhuǎn)移指令: AJMP addr11 ;PCPC+2;PC100addr1

36、1 ;PC1511不變 指令轉(zhuǎn)移范圍:2KB,目標(biāo)地址必須與下一條指令的存放地址(PC)+2,即AJMP指令取出后的PC中的地址)在同頁( 2KB)內(nèi)。 轉(zhuǎn)移時要求轉(zhuǎn)移前后保持 PC1511不變。第三章 MCS-51指令系統(tǒng)例:以下是一程序片段,左邊為存儲器地址,其后一 條AJMP指令在匯編時出錯: 07FEH AJMP K11;轉(zhuǎn)移到K11處,在0800H0FFFH頁內(nèi) 0800H 。 。 0E00HK11:。 。 0F80HK12:。 。 0FFEH AJMPK12;匯編此處時報錯 1000H 。第三章 MCS-51指令系統(tǒng)3.短轉(zhuǎn)移指令: SJMP e ;PCPC+2,PCPC+e相對偏

37、移量 e為8位補(bǔ)碼。 指令轉(zhuǎn)移范圍:前126后129字節(jié)相對偏移量 e 的計算式:e = 目的指令地址 -(轉(zhuǎn)移指令地址+指令字節(jié)數(shù)) = 目的地址 - PC當(dāng)前值編程時,用標(biāo)號代替轉(zhuǎn)移目的地址,轉(zhuǎn)移指令的操作數(shù)交給匯編程序計算。LJMP NEXT AJMP NEXT SJMP NEXT NEXT: 第三章 MCS-51指令系統(tǒng)例:計算轉(zhuǎn)移指令的相對偏移量 e ,并判斷是否超出轉(zhuǎn)移范圍。 指令地址 源程序 2130H SJMP NEXT 2150HNEXT:MOV A,R2 相對偏移量 = 2150H -(2130H+2)= 001EH, 只取低8位:e = 1EH例:求原地踏步指令的代碼碼。

38、 HERE: SJMP HERE ; 或 HERE: SJMP $ 偏移量匯編時自動計算出為0FEH,即-2 的補(bǔ)碼。第三章 MCS-51指令系統(tǒng)4散轉(zhuǎn)指令(多分支轉(zhuǎn)移指令) JMP A+DPTR. ;PC(A)+(DPTR) 指令轉(zhuǎn)移范圍64KB。應(yīng)用:處理功能鍵。要求不同功能鍵執(zhí)行不同程序段。設(shè)每個功能鍵對應(yīng)一個鍵值 X(0XFH)。設(shè)X已存入片內(nèi)RAM的40H單元中。若X=0,則執(zhí)行程序段FUNC0若X=1,則執(zhí)行程序段FUNC1。KEY: MOV DPTR,#KTAB MOV A,40H ADD A,40H JMP A+DPTRKTAB: AJMP FUNC0 AJMP FUNC1 F

39、UNC0: FUNC1: 第三章 MCS-51指令系統(tǒng)二條件轉(zhuǎn)移指令 條件轉(zhuǎn)移指令形成程序的分支,賦予計算機(jī)判斷決策能力,轉(zhuǎn)移條件:1)標(biāo)志位的狀態(tài) 2)位地址中的狀態(tài) 1.判零轉(zhuǎn)移指令 JZ e ;PC(PC)+2, ;若(A)=00H,PC(PC)+e(轉(zhuǎn)移), ;若(A)00H,PC不變(不轉(zhuǎn)移) JNZ e ;PC(PC)+2,若A00H, ;PC (PC) + e(轉(zhuǎn)移) ;若(A)=00H,PC不變(不轉(zhuǎn)移) 2.判Cy轉(zhuǎn)移指令 JC e ;Cy=1則轉(zhuǎn)移,Cy=0不轉(zhuǎn)移 JNC e ;Cy=0則轉(zhuǎn)移,Cy=1不轉(zhuǎn)移第三章 MCS-51指令系統(tǒng)3.判位轉(zhuǎn)移指令JB bit,e ;(

40、b)=1轉(zhuǎn)移,否則不轉(zhuǎn)移 JNB bit,e ;(b)=0轉(zhuǎn)移,否則不轉(zhuǎn)移4.判位清0轉(zhuǎn)移指令: JBC bit,e ;(b)=1轉(zhuǎn)移,且b0,否則不轉(zhuǎn)移5. 比較不相等轉(zhuǎn)移指令: CJNE 操作數(shù)1,操作數(shù)2,e CJNE A,n,e ;PC(PC)+3;若A(n),則PC(PC)+e ;且當(dāng)(A)(n),Cy0,當(dāng)(A)(n),Cy1 ;若(A) =(n),PC不變,且(Cy)=0。 相當(dāng)于兩個操作數(shù)相減,僅影響標(biāo)志狀態(tài),不保存結(jié)果。 相對轉(zhuǎn)移范圍:下一條指令始地址的前128后127。第三章 MCS-51指令系統(tǒng)例:以下程序中,執(zhí)行第一條比較不相等轉(zhuǎn)移指令后,將根據(jù)R4的內(nèi)容大于35H、等

溫馨提示

  • 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

提交評論