![微機(jī)控制系統(tǒng)與應(yīng)用3_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/12/2caa10ac-5394-4ed5-96fa-f9c48aa6c483/2caa10ac-5394-4ed5-96fa-f9c48aa6c4831.gif)
![微機(jī)控制系統(tǒng)與應(yīng)用3_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/12/2caa10ac-5394-4ed5-96fa-f9c48aa6c483/2caa10ac-5394-4ed5-96fa-f9c48aa6c4832.gif)
![微機(jī)控制系統(tǒng)與應(yīng)用3_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/12/2caa10ac-5394-4ed5-96fa-f9c48aa6c483/2caa10ac-5394-4ed5-96fa-f9c48aa6c4833.gif)
![微機(jī)控制系統(tǒng)與應(yīng)用3_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/12/2caa10ac-5394-4ed5-96fa-f9c48aa6c483/2caa10ac-5394-4ed5-96fa-f9c48aa6c4834.gif)
![微機(jī)控制系統(tǒng)與應(yīng)用3_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/12/2caa10ac-5394-4ed5-96fa-f9c48aa6c483/2caa10ac-5394-4ed5-96fa-f9c48aa6c4835.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第三章 尋址方式與指令系統(tǒng)3.1 MCS-513.1 MCS-51單片機(jī)的尋址方式單片機(jī)的尋址方式3.2 3.2 指令系統(tǒng)簡介指令系統(tǒng)簡介3.3 3.3 偽指令偽指令3.4.3.4.程序設(shè)計(jì)舉例程序設(shè)計(jì)舉例1 指令指令 :控制計(jì)算機(jī)完成指定操作的命令,由操作碼和操作數(shù)組成??刂朴?jì)算機(jī)完成指定操作的命令,由操作碼和操作數(shù)組成。 機(jī)器指令:機(jī)器指令:指令的指令的1616進(jìn)制代碼形式。例如:進(jìn)制代碼形式。例如:74H 37H74H 37H 匯編指令:匯編指令:助記符形式的指令。例如:助記符形式的指令。例如:MOV AMOV A,#37H#37H 操作碼操作碼 :說明計(jì)算機(jī)應(yīng)該完成的操作內(nèi)容說明計(jì)算機(jī)
2、應(yīng)該完成的操作內(nèi)容, ,采用助記符表示。采用助記符表示。 操作數(shù)操作數(shù) :指令操作的對象。指令操作的對象。指令格式指令格式:操作碼助記符操作碼助記符 目的操作數(shù),源操作數(shù)目的操作數(shù),源操作數(shù)5151指令系統(tǒng)中描述操作數(shù)的符號如下:指令系統(tǒng)中描述操作數(shù)的符號如下:RnRn:表示通用寄存器:表示通用寄存器R R0 0-R-R7 7。RiRi:表示通用寄存器中可用作:表示通用寄存器中可用作8 8位地址指針的位地址指針的R R0 0和和R Rl l。directdirect:表示片內(nèi):表示片內(nèi)RAMRAM的的8 8位直接地址。位直接地址。#data/#data16 #data/#data16 :表示:
3、表示8 8位或位或1616位常數(shù)。位常數(shù)。addrl6/addr11addrl6/addr11:表示外部程序存儲(chǔ)器的:表示外部程序存儲(chǔ)器的1616位或位或1111位地址。位地址。relrel:表示:表示8 8位偏移量。位偏移量。bitbit:表示直接位地址。:表示直接位地址。寄存器名:可以由指令訪問的特殊寄存器(寄存器名:可以由指令訪問的特殊寄存器(SFRSFR)。)。2第三章 尋址方式與指令系統(tǒng)3.1 MCS-51單片機(jī)的尋址方式 尋址方式尋址方式 :指令找尋操作數(shù)的存放地址的方式。指令找尋操作數(shù)的存放地址的方式。1 1 立即尋址:立即尋址: 指令中直接給出了運(yùn)算數(shù)據(jù),操作數(shù)存放在緊跟在操作
4、碼之后的指令中直接給出了運(yùn)算數(shù)據(jù),操作數(shù)存放在緊跟在操作碼之后的下一個(gè)字節(jié)中,只適用于操作數(shù)為常數(shù)的情況。下一個(gè)字節(jié)中,只適用于操作數(shù)為常數(shù)的情況。 例如指令例如指令MOV AMOV A,#37H #37H 將常數(shù)將常數(shù)37H37H送往累加器中。送往累加器中。圖3 .1(a) 立 即尋址方式示意圖圖3 .1(a) 立 即尋址方式示意圖0011 01110011 0111PC:PC:0111 01000111 0100程序存儲(chǔ)器程序存儲(chǔ)器A:A:0011 01110011 011133.1 MCS-51單片機(jī)的尋址方式2 2 直接直接尋址尋址 指令中給出了操作數(shù)的存放地址,適用于片內(nèi)指令中給出了
5、操作數(shù)的存放地址,適用于片內(nèi)RAMRAM的低的低128B128B和特和特殊功能寄存器的數(shù)據(jù)操作。殊功能寄存器的數(shù)據(jù)操作。 例如指令例如指令MOV AMOV A,70H 70H 將將RAMRAM中存放在中存放在70H70H單元的數(shù)據(jù)送往累單元的數(shù)據(jù)送往累加器中。加器中。 (MOV A, P0MOV A, P0等價(jià)于等價(jià)于MOV A, 80HMOV A, 80H)圖3 .1(b) 直 接尋址方式示意圖圖3 .1(b) 直 接尋址方式示意圖PC:PC:1110 01011110 0101程序存儲(chǔ)器程序存儲(chǔ)器MOV A,70HMOV A,70H0111 00000111 0000X XX XX XX
6、X數(shù)據(jù)存儲(chǔ)器數(shù)據(jù)存儲(chǔ)器E0HE0H70H70HACCACC43.1 MCS-51單片機(jī)的尋址方式3 3 寄存器尋址寄存器尋址 指令中給出了操作數(shù)存放的寄存器,適用于通用寄存器指令中給出了操作數(shù)存放的寄存器,適用于通用寄存器R0R0 R7R7和和特殊功能寄存器中的特殊功能寄存器中的A A、B B、DPTRDPTR的數(shù)據(jù)操作。的數(shù)據(jù)操作。 例如指令例如指令MOV AMOV A,R0 R0 將將R0R0中存放的數(shù)據(jù)送往累加器中。中存放的數(shù)據(jù)送往累加器中。圖3 .1(c) 寄 存器尋址方式示意圖圖3 .1(c) 寄 存器尋址方式示意圖PC:PC:1110 10001110 1000程序存儲(chǔ)器程序存儲(chǔ)器
7、MOV A,R0MOV A,R0X XX XX XX X數(shù)據(jù)存儲(chǔ)器數(shù)據(jù)存儲(chǔ)器E0HE0H00H00HACCACC53.1 MCS-51單片機(jī)的尋址方式4 4 寄存器間接尋址寄存器間接尋址 指令中給出作為地址指針的寄存器(指令中給出作為地址指針的寄存器(R0R0、R1R1、DPTRDPTR),實(shí)際操),實(shí)際操作數(shù)存放在該寄存器指向的作數(shù)存放在該寄存器指向的RAMRAM單元。單元。 例如設(shè)例如設(shè)DPTR=0123HDPTR=0123H, (0123H)=12H(0123H)=12H,則指令,則指令MOVX AMOVX A,DPTR DPTR 將將0123H0123H中存放的數(shù)據(jù)中存放的數(shù)據(jù)12H1
8、2H送往累加器中。送往累加器中。 63.1 MCS-51單片機(jī)的尋址方式5 5 變址尋址變址尋址 以基址寄存器(以基址寄存器(DPTRDPTR或或PCPC)的值為基地址,加上變址寄存器)的值為基地址,加上變址寄存器ACCACC的值構(gòu)成操作數(shù)的存儲(chǔ)地址,適用于的值構(gòu)成操作數(shù)的存儲(chǔ)地址,適用于ROMROM中的查表操作。中的查表操作。例如:例如: MOV A,#01HMOV A,#01H MOV DPTR,#TABLE MOV DPTR,#TABLE MOVC A,A+DPTR MOVC A,A+DPTR TABLE: DB 30H TABLE: DB 30H DB 31H DB 31H . .73
9、.1 MCS-51單片機(jī)的尋址方式6 6 相對尋址相對尋址 將程序計(jì)數(shù)器將程序計(jì)數(shù)器PCPC的值加上指令中給出的地址相對偏移,結(jié)果作的值加上指令中給出的地址相對偏移,結(jié)果作為轉(zhuǎn)移指令的目標(biāo)地址,適用于相對轉(zhuǎn)移指令為轉(zhuǎn)移指令的目標(biāo)地址,適用于相對轉(zhuǎn)移指令JC relJC rel(relrel的范圍的范圍為為- -128 128 +127 +127 ,以補(bǔ)碼表示)。,以補(bǔ)碼表示)。圖3 .1(f) 相 對尋址方式示意圖圖3 .1(f) 相 對尋址方式示意圖PC:1 000HPC:1 000H0100 00000100 0000程序存儲(chǔ)器程序存儲(chǔ)器0111 01010111 0101.1077H10
10、77HALUALU1002H1002HJC relJC relX XX XPC=1002HPC=1002Hrel=75Hrel=75H83.1 MCS-51單片機(jī)的尋址方式7 7 位尋址位尋址 指令中給出操作數(shù)的可尋址位的直接地址。適用于布爾處理器的指令中給出操作數(shù)的可尋址位的直接地址。適用于布爾處理器的操作(置位、清除、求反、為操作(置位、清除、求反、為0 0或或1 1轉(zhuǎn)移、位與、位或、位傳送等)。轉(zhuǎn)移、位與、位或、位傳送等)。 例如,指令例如,指令MOV CMOV C,P1.0 P1.0 將將P1P1口的第口的第0 0位的值送至進(jìn)位位位的值送至進(jìn)位位CYCY。9表表 3.1 MCS-51
11、單單片片機(jī)機(jī)尋尋址址方方式式 尋尋址址方方式式 相相應(yīng)應(yīng)的的存存儲(chǔ)儲(chǔ)器器空空間間 立立即即尋尋址址 程程序序存存儲(chǔ)儲(chǔ)器器 立立即即數(shù)數(shù) 直直接接尋尋址址 片片內(nèi)內(nèi) RAM 低低 128B,特特殊殊功功能能寄寄存存器器 寄寄存存器器尋尋址址 R0R7,ACC,B,DPTR 寄寄存存器器間間接接尋尋址址 片片內(nèi)內(nèi) RAM(以以R0、R1 為為指指針針) 片片外外 RAM(以以R0、R1、DPTR 為為指指針針) 變變址址尋尋址址 程程序序存存儲(chǔ)儲(chǔ)器器(A+PC、A+DPTR) 相相對對尋尋址址 程程序序存存儲(chǔ)儲(chǔ)器器 轉(zhuǎn)轉(zhuǎn)移移地地址址=PC+rel 位位尋尋址址 片片內(nèi)內(nèi) RAM 及及 SFR 中中
12、的的可可位位尋尋址址空空間間 10立即尋址、變址尋址、相對尋址只用于訪問程序存儲(chǔ)器立即尋址、變址尋址、相對尋址只用于訪問程序存儲(chǔ)器ROMROM。寄存器尋址、直接尋址、位尋址用于訪問內(nèi)部寄存器尋址、直接尋址、位尋址用于訪問內(nèi)部RAMRAM和特殊寄存器和特殊寄存器SFRSFR。寄存器間接尋址用于訪問寄存器間接尋址用于訪問RAMRAM,包括內(nèi)部,包括內(nèi)部RAMRAM和外部和外部RAMRAM。直接尋址是訪問特殊寄存器直接尋址是訪問特殊寄存器SFRSFR的唯一方法。的唯一方法。只有寄存器間接尋址方式能訪問外部只有寄存器間接尋址方式能訪問外部RAMRAM。 以上討論的是源操作數(shù)的尋址方式,目的操作數(shù)的尋址
13、方式與之類似。以上討論的是源操作數(shù)的尋址方式,目的操作數(shù)的尋址方式與之類似。 小結(jié):小結(jié):3.1 MCS-51單片機(jī)的尋址方式3.2 指令系統(tǒng)簡介指令分類:指令分類: 按占用的存儲(chǔ)空間分類:單字節(jié)指令(按占用的存儲(chǔ)空間分類:單字節(jié)指令(4949條)、雙字節(jié)指令(條)、雙字節(jié)指令(4545)、)、 三字節(jié)指令(三字節(jié)指令(1717條)條) 按需要的執(zhí)行時(shí)間分類:單周期指令(按需要的執(zhí)行時(shí)間分類:單周期指令(6464條)、雙周期指令(條)、雙周期指令(4545)、)、 四周期指令(四周期指令(2 2條)條) 按功能分類:數(shù)據(jù)傳送(按功能分類:數(shù)據(jù)傳送(2929條)、算術(shù)運(yùn)算(條)、算術(shù)運(yùn)算(242
14、4條)、邏輯運(yùn)算條)、邏輯運(yùn)算(2424條)、控制轉(zhuǎn)移(條)、控制轉(zhuǎn)移(1717條)、位運(yùn)算(條)、位運(yùn)算(1717條)條)11 數(shù)據(jù)傳送類指令一共有數(shù)據(jù)傳送類指令一共有2929條,主要功能是把源操作數(shù)傳送到目的條,主要功能是把源操作數(shù)傳送到目的操作數(shù)。操作數(shù)。一、內(nèi)部一、內(nèi)部RAMRAM的數(shù)據(jù)傳送指令(的數(shù)據(jù)傳送指令(1616條)條) 內(nèi)部內(nèi)部RAMRAM的數(shù)據(jù)傳送指令包括累加器、工作寄存器、特殊寄存器、的數(shù)據(jù)傳送指令包括累加器、工作寄存器、特殊寄存器、RAMRAM單元之間的相互數(shù)據(jù)傳送。單元之間的相互數(shù)據(jù)傳送。1 1與累加器有關(guān)的數(shù)據(jù)傳送指令與累加器有關(guān)的數(shù)據(jù)傳送指令 MOV A, RnM
15、OV A, Rn; ARn; ARn MOV Rn, AMOV Rn, A; RnA; RnA MOV A, directMOV A, direct; A(direct); A(direct)MOV direct, AMOV direct, A; (direct) A; (direct) AMOV AMOV A,RiRi; A(Ri); A(Ri)MOV Ri, AMOV Ri, A; (Ri)A; (Ri)A3.2 指令系統(tǒng)簡介123.2.1 3.2.1 數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令3.2 指令系統(tǒng)簡介2 2立即數(shù)傳送指令立即數(shù)傳送指令 MOV A, #dataMOV A, #data; A
16、data; AdataMOV direct, #dataMOV direct, #data; (direct)data; (direct)dataMOV Rn, #dataMOV Rn, #data; Rndata; Rndata MOV MOV Ri, #dataRi, #data; (Ri)data; (Ri)dataMOV DPTR, #data16MOV DPTR, #data16 ; DPTRdata16; DPTRdata163 3內(nèi)部內(nèi)部RAMRAM單元之間的數(shù)據(jù)傳送指令單元之間的數(shù)據(jù)傳送指令MOV direct1, direct2MOV direct1, direct2 ; (
17、direct1)(direct2); (direct1)(direct2)MOV direct, RnMOV direct, Rn; (direct)Rn; (direct)RnMOV Rn, directMOV Rn, direct; Rn(direct); Rn(direct)MOV direct, MOV direct, RiRi; (direct)(Ri); (direct)(Ri)MOV Ri, direct MOV Ri, direct ; (Ri)(direct); (Ri)(direct)13二、外部二、外部RAMRAM數(shù)據(jù)傳送指令(數(shù)據(jù)傳送指令(4 4條)條) 外部外部RAM
18、RAM單元采用寄存器間接尋址的方式,與累加器單元采用寄存器間接尋址的方式,與累加器A A進(jìn)行數(shù)據(jù)傳送。進(jìn)行數(shù)據(jù)傳送。MOVX A, MOVX A, DPTRDPTR; A(DPTR); A(DPTR)MOVX MOVX DPTR, ADPTR, A; (DPTR)A; (DPTR)AMOVX A, MOVX A, RiRi; A(Ri); A(Ri)MOVX MOVX Ri, ARi, A; (Ri)A; (Ri)A說明:說明: (1) (1) 前前2 2條采用條采用DPTRDPTR作為作為1616位地址指針,可尋址外部位地址指針,可尋址外部RAMRAM的整個(gè)的整個(gè)64KB64KB空空間。后間
19、。后2 2條采用條采用RiRi作為作為8 8位地址指針,可尋址外部位地址指針,可尋址外部RAMRAM最低的最低的256256個(gè)單元。個(gè)單元。 (2) (2) 指令助記符采用指令助記符采用MOVXMOVX,與內(nèi)部,與內(nèi)部RAMRAM數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令MOVMOV不一樣,表示不一樣,表示MCS-51MCS-51對內(nèi)部對內(nèi)部RAMRAM和外部和外部RAMRAM獨(dú)立編址,采用不同的指令訪問。獨(dú)立編址,采用不同的指令訪問。 (3) (3) 外部外部RAMRAM單元只能與累加器單元只能與累加器A A之間進(jìn)行數(shù)據(jù)傳送。之間進(jìn)行數(shù)據(jù)傳送。 (4)(4)首先將要讀或?qū)懙牡刂匪腿胧紫葘⒁x或?qū)懙牡刂匪腿隓P
20、TRDPTR或或RiRi中,然后再用讀寫命令中,然后再用讀寫命令 3.2 指令系統(tǒng)簡介14例例2 2:將外部將外部RAMRAM中中70H70H單單元中的內(nèi)容送入外部元中的內(nèi)容送入外部RAMRAM中中71H71H單元中。單元中。 MOV R0MOV R0,#70H#70HMOVX AMOVX A,R0R0MOV R0, #71HMOV R0, #71HMOVX R0, AMOVX R0, A 3.2 指令系統(tǒng)簡介15例例1 1:將內(nèi)部將內(nèi)部RAMRAM中中70H70H單單元中的內(nèi)容送入內(nèi)部元中的內(nèi)容送入內(nèi)部RAMRAM中中71H71H單元中。單元中。 MOV 71H, 70HMOV 71H, 7
21、0H 3.2 指令系統(tǒng)簡介三、程序存儲(chǔ)器取數(shù)據(jù)指令(三、程序存儲(chǔ)器取數(shù)據(jù)指令(2 2條)條) 此類指令完成從此類指令完成從ROMROM中讀出數(shù)據(jù),送給累加器中讀出數(shù)據(jù),送給累加器A A。MOVC A, MOVC A, A+DPTRA+DPTR; A(A)+(DPTR); A(A)+(DPTR)MOVC A, MOVC A, A+PCA+PC; A(A)+(PC); A(A)+(PC)說明:說明: (1) (1) 兩條指令都采用了變址尋址方式。兩條指令都采用了變址尋址方式。 (2) (2) 前一條指令采用前一條指令采用DPTRDPTR作為基址寄存器,尋址范圍是整個(gè)程序作為基址寄存器,尋址范圍是整
22、個(gè)程序存儲(chǔ)器的存儲(chǔ)器的64KB64KB空間。后一條指令采用空間。后一條指令采用PCPC作為基址寄存器,只能讀作為基址寄存器,只能讀出以當(dāng)前出以當(dāng)前MOVCMOVC指令為起始的指令為起始的256256個(gè)地址單元之內(nèi)的任一單元。個(gè)地址單元之內(nèi)的任一單元。 (3)(3)這兩條指令常用于查表操作,也稱為查表指令。這兩條指令常用于查表操作,也稱為查表指令。 (4)(4)查找到的結(jié)果被放在查找到的結(jié)果被放在A A中,因此,本條指令執(zhí)行前后,中,因此,本條指令執(zhí)行前后,A A中的中的值不一定相同值不一定相同 16四、數(shù)據(jù)交換指令(四、數(shù)據(jù)交換指令(5 5條)條) 此類指令完成累加器此類指令完成累加器A A與
23、內(nèi)部與內(nèi)部RAMRAM單元之間的字節(jié)或半字節(jié)交換。單元之間的字節(jié)或半字節(jié)交換。1 1累加器累加器A A與內(nèi)部與內(nèi)部RAMRAM單元內(nèi)容的全字節(jié)交換單元內(nèi)容的全字節(jié)交換XCH A, RnXCH A, Rn; ARn; ARnXCH A, directXCH A, direct; A(direc); A(direc)XCH A, RiXCH A, Ri; A(Ri); A(Ri)2 2累加器累加器A A與內(nèi)部與內(nèi)部RAMRAM單元內(nèi)容的低單元內(nèi)容的低4 4位進(jìn)行交換位進(jìn)行交換XCHD A, XCHD A, Ri Ri ; A; A3 30 0(Ri)(Ri)3 30 0 3 3累加器累加器A A的
24、高的高4 4位與低位與低4 4位交換位交換SWAP ASWAP A; A; A3 30 0AA7 74 43.2 指令系統(tǒng)簡介17五、堆棧操作指令(五、堆棧操作指令(2 2條)條)1 1入棧指令,將內(nèi)部入棧指令,將內(nèi)部RAMRAM單元內(nèi)容送入棧頂單元單元內(nèi)容送入棧頂單元PUSH directPUSH direct; SPSP+l, (SP)(direct); SPSP+l, (SP)(direct)2 2出棧指令,將棧頂單元內(nèi)容取出傳送到內(nèi)部出棧指令,將棧頂單元內(nèi)容取出傳送到內(nèi)部RAMRAM單元單元 POP direct POP direct ; (direct)(SP), SPSP-1; (
25、direct)(SP), SPSP-1六、數(shù)據(jù)傳送類指令小結(jié):六、數(shù)據(jù)傳送類指令小結(jié): (1)(1)對不同的存儲(chǔ)器空間采用了不同的指令來訪問,請注意對不同的存儲(chǔ)器空間采用了不同的指令來訪問,請注意MOVMOV、MOVXMOVX、MOVCMOVC的區(qū)別。的區(qū)別。 (2)(2)數(shù)據(jù)傳送類指令不影響狀態(tài)字?jǐn)?shù)據(jù)傳送類指令不影響狀態(tài)字PSWPSW。 (3)MCS-51(3)MCS-51指令系統(tǒng)沒有專用的輸入輸出指令操作,它采用數(shù)據(jù)指令系統(tǒng)沒有專用的輸入輸出指令操作,它采用數(shù)據(jù)傳送指令來進(jìn)行傳送指令來進(jìn)行I/OI/O操作。例如操作。例如 MOV A, P1MOV A, P1; ; MOVX A, DPTR
26、 MOVX A, DPTR3.2 指令系統(tǒng)簡介183.2.2 3.2.2 算術(shù)運(yùn)算類指令算術(shù)運(yùn)算類指令3.2 指令系統(tǒng)簡介 MCS-51 MCS-51的算術(shù)運(yùn)算指令共有的算術(shù)運(yùn)算指令共有2424條,包括了加、減、乘、除等各種運(yùn)條,包括了加、減、乘、除等各種運(yùn)算。全部指令都是算。全部指令都是8 8位數(shù)運(yùn)算。位數(shù)運(yùn)算。一、加法指令(一、加法指令(4 4條)條) 加法指令的被加數(shù)總是累加器加法指令的被加數(shù)總是累加器A A,并且結(jié)果也放在,并且結(jié)果也放在A A中中ADD A, RnADD A, Rn; AA+Rn; AA+RnADD A, directADD A, direct; AA+(direct
27、); AA+(direct)ADD A, ADD A, Ri Ri ; AA+(Ri); AA+(Ri)ADD A,#dataADD A,#data; AA+data; AA+data 加法操作影響加法操作影響PSWPSW中的狀態(tài)位中的狀態(tài)位CYCY,ACAC,OVOV。19 符號數(shù)(符號數(shù)(128128127127)運(yùn)算溢出的判定規(guī)則:)運(yùn)算溢出的判定規(guī)則: 運(yùn)算結(jié)果的最高位運(yùn)算結(jié)果的最高位(D6)(D6)與符號位與符號位(D7)(D7)二者只有一個(gè)產(chǎn)生進(jìn)位(或借位)二者只有一個(gè)產(chǎn)生進(jìn)位(或借位)時(shí),產(chǎn)生溢出,時(shí),產(chǎn)生溢出,OVOV置置1 1。否則,沒有溢出,。否則,沒有溢出,OVOV清清0
28、 0。 例如,例如,A=#49HA=#49H,執(zhí)行加法指令:,執(zhí)行加法指令:ADD AADD A,#6BH #6BH 其結(jié)果其結(jié)果A=#B4H A=#B4H (十進(jìn)制:(十進(jìn)制:180180) 。因?yàn)樽鳛榉枖?shù)時(shí),。因?yàn)樽鳛榉枖?shù)時(shí),49H49H與與6BH6BH都是正數(shù),相加的結(jié)果符號位為都是正數(shù),相加的結(jié)果符號位為1 1,即變成了負(fù)數(shù),顯然結(jié)果不正確。,即變成了負(fù)數(shù),顯然結(jié)果不正確。 0 1 0 0 1 0 0 10 1 0 0 1 0 0 1 + +)0 1 1 0 1 0 1 10 1 1 0 1 0 1 1 1 0 1 1 0 1 0 0 1 0 1 1 0 1 0 0 按照判定規(guī)則,
29、位按照判定規(guī)則,位6 6向上進(jìn)位,而位向上進(jìn)位,而位7 7未產(chǎn)生進(jìn)位,產(chǎn)生溢出,未產(chǎn)生進(jìn)位,產(chǎn)生溢出,OVOV將置將置位為位為1 1 ,與實(shí)際相符合。另外,這條指令的執(zhí)行使,與實(shí)際相符合。另外,這條指令的執(zhí)行使CY=0CY=0,AC=1AC=1。3.2 指令系統(tǒng)簡介20二、帶進(jìn)位加法指令(二、帶進(jìn)位加法指令(4 4條)條)ADDC A, RnADDC A, Rn; AA+Rn+CY; AA+Rn+CYADDC A, directADDC A, direct; AA+(direct)+CY; AA+(direct)+CYADDC A, RiADDC A, Ri; AA+(Ri)+CY; AA+(
30、Ri)+CYADDC A, #dataADDC A, #data; AA+data+CY; AA+data+CY帶進(jìn)位加法指令影響帶進(jìn)位加法指令影響PSWPSW中的狀態(tài)位中的狀態(tài)位CYCY,ACAC,OVOV。帶進(jìn)位。帶進(jìn)位加法指令主要用于多字節(jié)數(shù)的加法運(yùn)算。加法指令主要用于多字節(jié)數(shù)的加法運(yùn)算。 三、加三、加1 1指令(指令(5 5條)條)INC AINC A; AA+1; AA+1( ADD A, #1 )( ADD A, #1 )INC RnINC Rn; RnRn+1; RnRn+1INC directINC direct; (direct)(direct)+1; (direct)(di
31、rect)+1INC INC RiRi; (Ri)(Ri)+1; (Ri)(Ri)+1INC DPTRINC DPTR; DPTRDPTR+1; DPTRDPTR+1加加1 1指令不影響指令不影響PSWPSW中的狀態(tài)位。中的狀態(tài)位。3.2 指令系統(tǒng)簡介21 四、減法指令(四、減法指令(4 4條)條)SUBB A, RnSUBB A, Rn; AA-Rn-CY; AA-Rn-CYSUBB A, directSUBB A, direct; AA-(direct)-CY; AA-(direct)-CYSUBB A, RiSUBB A, Ri; AA-(Ri)-CY; AA-(Ri)-CYSUBB A
32、, #dataSUBB A, #data; AA-data-CY; AA-data-CY 減法操作影響減法操作影響PSWPSW中的狀態(tài)位中的狀態(tài)位CYCY,ACAC,OVOV。 五、減五、減l l指令(指令(4 4條)條)DEC ADEC A; AA-1; AA-1DEC RnDEC Rn; RnRn-1; RnRn-1DEC directDEC direct; direct(direct)-1; direct(direct)-1DEC DEC RiRi; (Ri)(Ri)-1; (Ri)(Ri)-1 與加與加1 1指令一樣,減指令一樣,減1 1指令同樣不影響程序狀態(tài)字指令同樣不影響程序狀態(tài)字
33、PSWPSW的狀態(tài)。的狀態(tài)。MCS-51MCS-51沒有對沒有對DPTRDPTR減減1 1的指令。的指令。3.2 指令系統(tǒng)簡介223.2 指令系統(tǒng)簡介六、乘除指令(六、乘除指令(2 2條)條) 乘法指令和除法指令都是單字節(jié)指令,執(zhí)行時(shí)需乘法指令和除法指令都是單字節(jié)指令,執(zhí)行時(shí)需4 4個(gè)機(jī)器周期。完個(gè)機(jī)器周期。完成成2 2個(gè)個(gè)8 8位無符號整數(shù)的乘法或除法。位無符號整數(shù)的乘法或除法。MUL ABMUL AB; BAA; BAAB BDIV ABDIV AB; AA/B, B; AA/B, B余數(shù)余數(shù) 乘法指令將乘法指令將A A和和B B寄存器中的寄存器中的2 2個(gè)個(gè)8 8位無符號整數(shù)相乘操作,結(jié)
34、果為位無符號整數(shù)相乘操作,結(jié)果為1616位無符號數(shù),高位無符號數(shù),高8 8位存于位存于B B中,低中,低8 8位存于位存于A A中。若乘法結(jié)果大于中。若乘法結(jié)果大于255255,即,即B B的內(nèi)容不為的內(nèi)容不為0 0時(shí),溢出標(biāo)志時(shí),溢出標(biāo)志OVOV置置1 1,否則置,否則置0 0。乘法指令執(zhí)。乘法指令執(zhí)行后,進(jìn)位標(biāo)志行后,進(jìn)位標(biāo)志CYCY總被清總被清0 0。 除法指令中,被除數(shù)在除法指令中,被除數(shù)在A A中,除數(shù)在中,除數(shù)在B B中,兩個(gè)數(shù)均為中,兩個(gè)數(shù)均為8 8位無符號整位無符號整數(shù)。除法運(yùn)算結(jié)果的商存于數(shù)。除法運(yùn)算結(jié)果的商存于A A,余數(shù)存于,余數(shù)存于B B。若除數(shù)為。若除數(shù)為0 0,溢出
35、標(biāo)志,溢出標(biāo)志OVOV置置1 1,否則置,否則置0 0。除法指令執(zhí)行后,進(jìn)位標(biāo)志。除法指令執(zhí)行后,進(jìn)位標(biāo)志CYCY同樣總被清同樣總被清0 0。 乘除指令都只對累加器乘除指令都只對累加器A A和寄存器和寄存器B B操作,影響操作,影響PSWPSW狀態(tài)。狀態(tài)。233.2 指令系統(tǒng)簡介 七、十進(jìn)制調(diào)整指令(七、十進(jìn)制調(diào)整指令(1 1條)條) DA ADA A DA DA指令的功能是對指令的功能是對BCDBCD數(shù)加法運(yùn)算結(jié)果進(jìn)行調(diào)整。數(shù)加法運(yùn)算結(jié)果進(jìn)行調(diào)整。 DADA指令只影響進(jìn)位指令只影響進(jìn)位標(biāo)志標(biāo)志CYCY。調(diào)整規(guī)則:調(diào)整規(guī)則:(1 1)若)若AccAcc低低4 4位大于位大于9 9或或ACAC1
36、 1,則低,則低4 4位加位加6 6(2 2)若)若AccAcc高高4 4位大于位大于9 9或或CYCY1 1,則高,則高4 4位加位加6 6(3 3)若)若AccAcc高高4 4位大于等于位大于等于9 9且低且低4 4位大于位大于9 9,則高四位和低,則高四位和低4 4位均加位均加6 6(4 4)若)若AccAcc最高位因調(diào)整而產(chǎn)生進(jìn)位,則將最高位因調(diào)整而產(chǎn)生進(jìn)位,則將CYCY置置1 1;若不產(chǎn)生進(jìn)位,則保;若不產(chǎn)生進(jìn)位,則保留留CYCY在調(diào)整前的狀態(tài)而不清零。在調(diào)整前的狀態(tài)而不清零。 本指令只能對本指令只能對BCDBCD數(shù)加法結(jié)果進(jìn)行調(diào)整,不能直接對數(shù)加法結(jié)果進(jìn)行調(diào)整,不能直接對BCDBC
37、D數(shù)的減法進(jìn)行數(shù)的減法進(jìn)行調(diào)整。對調(diào)整。對BCDBCD數(shù)減法調(diào)整的方法是用補(bǔ)碼表示減數(shù),將減法化為加法運(yùn)算,數(shù)減法調(diào)整的方法是用補(bǔ)碼表示減數(shù),將減法化為加法運(yùn)算,再進(jìn)行調(diào)整。再進(jìn)行調(diào)整?!綛CDBCD數(shù)補(bǔ)碼】數(shù)補(bǔ)碼】999AH-BCD999AH-BCD數(shù)數(shù)2425八、算術(shù)運(yùn)算類指令小結(jié)八、算術(shù)運(yùn)算類指令小結(jié) (1)(1)算術(shù)運(yùn)算類指令大多影響算術(shù)運(yùn)算類指令大多影響PSWPSW,但應(yīng)注意:,但應(yīng)注意:INCINC和和DECDEC指令不影響標(biāo)志位;指令不影響標(biāo)志位;乘除指令對標(biāo)志位的影響有自己的特殊性;乘除指令對標(biāo)志位的影響有自己的特殊性;DADA指令只影響指令只影響CYCY標(biāo)志。標(biāo)志。 (2)(
38、2)減法運(yùn)其中只有帶借位減法指令。減法運(yùn)其中只有帶借位減法指令。 (3)DA(3)DA指令只能調(diào)整指令只能調(diào)整BCDBCD數(shù)加法運(yùn)算后的結(jié)果,對數(shù)加法運(yùn)算后的結(jié)果,對BCDBCD數(shù)減法要轉(zhuǎn)數(shù)減法要轉(zhuǎn)換為加法后再調(diào)整。換為加法后再調(diào)整。3.2 指令系統(tǒng)簡介263.2 指令系統(tǒng)簡介算術(shù)運(yùn)算類指令舉例算術(shù)運(yùn)算類指令舉例例例1 1:有兩個(gè)雙字節(jié)數(shù),按低字節(jié)在前的順序分別存放在內(nèi)部有兩個(gè)雙字節(jié)數(shù),按低字節(jié)在前的順序分別存放在內(nèi)部RAMRAM的的30H30H、31H31H和和40H40H、41H41H單元中,求兩數(shù)的和并存于單元中,求兩數(shù)的和并存于30H30H、31H31H單元。假定和數(shù)不單元。假定和數(shù)不
39、超過雙字節(jié)。超過雙字節(jié)。MADD: MOV R0, #30HMADD: MOV R0, #30H; ;指向被加數(shù)低字節(jié)單元指向被加數(shù)低字節(jié)單元 R0=30HR0=30H MOV R1, #40H MOV R1, #40H; ;指向加數(shù)低字節(jié)單元指向加數(shù)低字節(jié)單元 R1=40HR1=40H MOV A, R0 MOV A, R0; ;取被加數(shù)低字節(jié)取被加數(shù)低字節(jié) A=(R0)=(30H)A=(R0)=(30H) ADD ADD A, R1 A, R1; ;兩低字節(jié)相加兩低字節(jié)相加 A=A+(40H)=(30H)+(40H)A=A+(40H)=(30H)+(40H) MOV R0, A MOV R
40、0, A; ;存低字節(jié)結(jié)果存低字節(jié)結(jié)果 (30H)=(30H)= (R0)= A(R0)= A INC R0 INC R0; ;指向被加數(shù)高字節(jié)單元指向被加數(shù)高字節(jié)單元 R0=31HR0=31H INC R1 INC R1; ;指向加數(shù)高字節(jié)單元指向加數(shù)高字節(jié)單元 R1=41HR1=41H MOV A, R0 MOV A, R0; ;取被加數(shù)高字節(jié)取被加數(shù)高字節(jié) A=(R0)=(31H)A=(R0)=(31H) ADDC A, R1 ADDC A, R1; ;兩高字節(jié)帶進(jìn)位相加兩高字節(jié)帶進(jìn)位相加;A=A+(41H)=(31H)+(41H)A=A+(41H)=(31H)+(41H) MOV R0
41、, A MOV R0, A; ;存高字節(jié)結(jié)果存高字節(jié)結(jié)果 (31H)=(31H)= (R0)=A(R0)=A273.2 指令系統(tǒng)簡介例例2 2:將存于外部將存于外部RAMRAM中中2000H2000H單元的一字節(jié)二進(jìn)制數(shù)(假定其值小于單元的一字節(jié)二進(jìn)制數(shù)(假定其值小于64H64H)轉(zhuǎn)換為十進(jìn)制數(shù),以兩位轉(zhuǎn)換為十進(jìn)制數(shù),以兩位BCDBCD碼(組合碼(組合BCDBCD)的形式存于內(nèi)部)的形式存于內(nèi)部RAMRAM的的30H30H單元中。單元中。BTOD: MOV DPTR, #2000H;BTOD: MOV DPTR, #2000H;指向二進(jìn)制數(shù)單元指向二進(jìn)制數(shù)單元 DPTR=2000HDPTR=2
42、000HMOVX A, DPTRMOVX A, DPTR ; ;取二進(jìn)制數(shù)取二進(jìn)制數(shù) A=(DPTR)=(2000H)A=(DPTR)=(2000H)MOV B, #0AHMOV B, #0AH ; ;置除數(shù)為置除數(shù)為10 10 B=10B=10DIVDIVABAB ; ;分離十位數(shù)和個(gè)位數(shù)分離十位數(shù)和個(gè)位數(shù) A=A=十位數(shù)十位數(shù) B=B=個(gè)位數(shù)個(gè)位數(shù)SWAP ASWAP A ; ;十位數(shù)放入十位數(shù)放入A A的高的高4 4位位 A=A=十位數(shù)十位數(shù)+0000+0000XCHD AXCHD A,B B ; ;個(gè)位數(shù)移入個(gè)位數(shù)移入A A的低的低4 4位位 A=A=十位數(shù)十位數(shù)+ +個(gè)位數(shù)個(gè)位數(shù)MO
43、V 30H, AMOV 30H, A ; ;存結(jié)果存結(jié)果 (30H)= A=(30H)= A=十位數(shù)十位數(shù)+ +個(gè)位數(shù)個(gè)位數(shù)3.2 指令系統(tǒng)簡介283.2.3 3.2.3 邏輯運(yùn)算類指令邏輯運(yùn)算類指令 MCS-51 MCS-51的邏輯運(yùn)算指令共有的邏輯運(yùn)算指令共有2424條,完成與、或、異或、取反、移位條,完成與、或、異或、取反、移位等操作。等操作。 一、邏輯與指令(一、邏輯與指令(6 6條)條)ANL A, Rn ANL A, Rn ; AARn; AARnANL A, directANL A, direct; AA(direct); AA(direct)ANL A, ANL A, Ri R
44、i ; AA(Ri); AA(Ri)ANL A, #dataANL A, #data; AAdata; AAdataANL direct, AANL direct, A; (direct)A(direct); (direct)A(direct)ANL direct, #dataANL direct, #data; (direct)(direct)data; (direct)(direct)data 前前4 4條指令是以累加器條指令是以累加器A A為目的操作數(shù),后為目的操作數(shù),后2 2條指令是以直接地址單元條指令是以直接地址單元為目的操作數(shù),邏輯與操作按位進(jìn)行。為目的操作數(shù),邏輯與操作按位進(jìn)行。
45、3.2 指令系統(tǒng)簡介29二、邏輯或指令(二、邏輯或指令(6 6條)條)ORL A, Rn ORL A, Rn ; AARn; AARnORL A, directORL A, direct; AA(direct); AA(direct)ORL A, ORL A, Ri Ri ; AA(Ri); AA(Ri)ORL A, #dataORL A, #data; AAdata; AAdataORL direct, AORL direct, A; (direct)A(direct); (direct)A(direct)ORL direct, #dataORL direct, #data; (direct
46、)(direct)data; (direct)(direct)data三、邏輯異或指令(三、邏輯異或指令(6 6條)條)XRL A, Rn XRL A, Rn ; AA Rn; AA RnXRL A, directXRL A, direct; AA direct; AA directXRL A, XRL A, Ri Ri ; AA (Ri); AA (Ri)XRL A, #dataXRL A, #data; AA data; AA dataXRL direct, AXRL direct, A; (direct)A (direct); (direct)A (direct)XRL direct,
47、#dataXRL direct, #data; (direct)(direct) data; (direct)(direct) data 3.2 指令系統(tǒng)簡介30四、累加器清零、取反指令(四、累加器清零、取反指令(2 2條)條)CLR ACLR A; A0; A0CPL ACPL A; AA; AA五、移位指令(五、移位指令(4 4條)條)RL ARL A; ;RR ARR A; ;RLC ARLC A; ;RRC ARRC A; ;A7 A0A7 A0A7 A0CYA7 A0CY六、邏輯運(yùn)算類指令小結(jié)六、邏輯運(yùn)算類指令小結(jié) (1)(1)邏輯運(yùn)算的所有指令都是按位進(jìn)行操作的。邏輯運(yùn)算的所有指令
48、都是按位進(jìn)行操作的。 (2)(2)邏輯與、或、異或運(yùn)算三組指令各有邏輯與、或、異或運(yùn)算三組指令各有6 6條,都采用了相同種類的條,都采用了相同種類的尋址方式,尋址方式,4 4條是以條是以A A為目的操作數(shù),兩條以直接地址為目的操作數(shù),為目的操作數(shù),兩條以直接地址為目的操作數(shù),便于對各個(gè)內(nèi)部便于對各個(gè)內(nèi)部RAMRAM單元和單元和SFRSFR的內(nèi)容進(jìn)行邏輯運(yùn)算。的內(nèi)容進(jìn)行邏輯運(yùn)算。 (3)MCS-5l(3)MCS-5l沒有求補(bǔ)指令,若要進(jìn)行求補(bǔ)操作,可按沒有求補(bǔ)指令,若要進(jìn)行求補(bǔ)操作,可按“取反加取反加1”1”來進(jìn)行。來進(jìn)行。 (4)(4)除了帶進(jìn)位的左右移位指令會(huì)影響除了帶進(jìn)位的左右移位指令會(huì)影
49、響CYCY標(biāo)志位之外,所有的邏輯標(biāo)志位之外,所有的邏輯運(yùn)算指令都不影響運(yùn)算指令都不影響PSWPSW。3.2 指令系統(tǒng)簡介31323.2 指令系統(tǒng)簡介邏輯運(yùn)算類指令舉例邏輯運(yùn)算類指令舉例例例1.1.將內(nèi)部將內(nèi)部RAMRAM中中30H30H單元的內(nèi)容取補(bǔ)碼,并存入單元的內(nèi)容取補(bǔ)碼,并存入30H30H單元。單元。MCOD: MOV A, 30HMCOD: MOV A, 30H; ;取取30H30H單元內(nèi)數(shù)據(jù)單元內(nèi)數(shù)據(jù) CPL ACPL A; ;將該數(shù)取反將該數(shù)取反 INC AINC A; ;加加1 1 MOV 30H, A MOV 30H, A; ;將原數(shù)據(jù)的補(bǔ)碼存回將原數(shù)據(jù)的補(bǔ)碼存回30H30H單
50、元單元333.2 指令系統(tǒng)簡介例例2.2.雙字節(jié)數(shù)移位。將雙字節(jié)數(shù)移位。將R2R2、R3R3中的一個(gè)雙字節(jié)數(shù)左移一位,最低位補(bǔ)零,中的一個(gè)雙字節(jié)數(shù)左移一位,最低位補(bǔ)零,最高位存最高位存CYCY中,假設(shè)中,假設(shè)R2R2中為高字節(jié),中為高字節(jié),R3R3中為低字節(jié)。中為低字節(jié)。RL16: CLR CRL16: CLR C; ;清進(jìn)位標(biāo)志位清進(jìn)位標(biāo)志位 MOV A, R3MOV A, R3; ;將低字節(jié)放入將低字節(jié)放入A A中中 RLC ARLC A; ;低字節(jié)左移一位,高位進(jìn)入低字節(jié)左移一位,高位進(jìn)入CYCY,最低位補(bǔ)零,最低位補(bǔ)零 MOV R3, AMOV R3, A; ;低字節(jié)移位后存入低字節(jié)移
51、位后存入R3R3 MOV A, R2 MOV A, R2; ;將高字節(jié)放入將高字節(jié)放入A A中中 RLC ARLC A; ;高字節(jié)左移一位,高字節(jié)左移一位,CYCY進(jìn)入最低位,高位進(jìn)入進(jìn)入最低位,高位進(jìn)入CYCY MOV R2, A MOV R2, A; ;高字節(jié)移位后存入高字節(jié)移位后存入R2R23.2.4 3.2.4 控制轉(zhuǎn)移類指令控制轉(zhuǎn)移類指令3.2 指令系統(tǒng)簡介34 MCS-51 MCS-51的控制轉(zhuǎn)移指令共有的控制轉(zhuǎn)移指令共有1717條,完成程序流程的跳轉(zhuǎn)操作。條,完成程序流程的跳轉(zhuǎn)操作。一、無條件轉(zhuǎn)移指令(一、無條件轉(zhuǎn)移指令(4 4條)條)1 1長轉(zhuǎn)移指令長轉(zhuǎn)移指令 LJMP add
52、rl6 ; PCaddrl6LJMP addrl6 ; PCaddrl6 長轉(zhuǎn)移指令把長轉(zhuǎn)移指令把1616位地址傳送給位地址傳送給PCPC,實(shí)現(xiàn)程序在,實(shí)現(xiàn)程序在64KB64KB程序存儲(chǔ)器程序存儲(chǔ)器范圍內(nèi)跳轉(zhuǎn)。三字節(jié)指令。范圍內(nèi)跳轉(zhuǎn)。三字節(jié)指令。2 2絕對轉(zhuǎn)移指令絕對轉(zhuǎn)移指令 AJMP addr11 ; PCPC+2, PCAJMP addr11 ; PCPC+2, PC10100 0addr11addr11 絕對轉(zhuǎn)移指令先將絕對轉(zhuǎn)移指令先將PCPC的內(nèi)容加的內(nèi)容加2 2,使,使PCPC指向本指令的下一條指令,指向本指令的下一條指令,然后把然后把a(bǔ)ddr11addr11送入送入PCPC的低的低
53、1111位,位,PCPC的高的高5 5位保持不變,形成新的位保持不變,形成新的PCPC值,實(shí)現(xiàn)程序的轉(zhuǎn)移。本指令的轉(zhuǎn)移范圍為下一條指令地址所在值,實(shí)現(xiàn)程序的轉(zhuǎn)移。本指令的轉(zhuǎn)移范圍為下一條指令地址所在2K2K頁面之內(nèi)。二字節(jié)指令。頁面之內(nèi)。二字節(jié)指令。3.2 指令系統(tǒng)簡介353 3短轉(zhuǎn)移指令短轉(zhuǎn)移指令 SJMP relSJMP rel ; PCPC+2+rel; PCPC+2+rel 短轉(zhuǎn)移指令首先將短轉(zhuǎn)移指令首先將PCPC內(nèi)容加內(nèi)容加2(2(本指令長度為兩字節(jié)本指令長度為兩字節(jié)) ),再與,再與relrel相加相加形成轉(zhuǎn)移目的地址,其中形成轉(zhuǎn)移目的地址,其中relrel是是8 8位的補(bǔ)碼表示的
54、相對偏移量。短轉(zhuǎn)移位的補(bǔ)碼表示的相對偏移量。短轉(zhuǎn)移指令的轉(zhuǎn)移范圍是以本指令所在地址加指令的轉(zhuǎn)移范圍是以本指令所在地址加2 2為基準(zhǔn),向低地址轉(zhuǎn)移為基準(zhǔn),向低地址轉(zhuǎn)移128B128B,向高地址轉(zhuǎn)移向高地址轉(zhuǎn)移127B127B。二字節(jié)指令。二字節(jié)指令。4 4變址尋址轉(zhuǎn)移指令變址尋址轉(zhuǎn)移指令 JMP JMP A+DPTR ; PC(A)+(DPTR)A+DPTR ; PC(A)+(DPTR) 變址尋址轉(zhuǎn)移指令是將累加器變址尋址轉(zhuǎn)移指令是將累加器A A的值與的值與DPTRDPTR中的值相加所得的和裝中的值相加所得的和裝入入PCPC中,完成程序的轉(zhuǎn)移。本指令常用于跳轉(zhuǎn)表以實(shí)現(xiàn)多分支轉(zhuǎn)移。中,完成程序的轉(zhuǎn)
55、移。本指令常用于跳轉(zhuǎn)表以實(shí)現(xiàn)多分支轉(zhuǎn)移。363.2 指令系統(tǒng)簡介MOV DPTR,#TAB ; 將將TAB所代表的地址送入所代表的地址送入DPTRMOV A,R0; 從從R0中取數(shù)中取數(shù)MOV B,#2 MUL AB ; A中的值乘中的值乘2JMP A+DPTR ; 跳轉(zhuǎn)跳轉(zhuǎn)TAB: AJMP S1 ; 跳轉(zhuǎn)表格跳轉(zhuǎn)表格 AJMP S2 AJMP S3 3.2 指令系統(tǒng)簡介37二、條件轉(zhuǎn)移指令(二、條件轉(zhuǎn)移指令(8 8條)條) 條件轉(zhuǎn)移指令是指當(dāng)某種條件滿足時(shí)轉(zhuǎn)移進(jìn)行,否則程序順序執(zhí)行。條件轉(zhuǎn)移指令是指當(dāng)某種條件滿足時(shí)轉(zhuǎn)移進(jìn)行,否則程序順序執(zhí)行。1 1累加器判零條件轉(zhuǎn)移指令累加器判零條件轉(zhuǎn)移指
56、令JZ relJZ rel ; A=0, PCPC+2+rel; A0, PCPC+2 ; A=0, PCPC+2+rel; A0, PCPC+2JNZ rel ; A0, PCPC+2+rel; A=0, PCPC+2JNZ rel ; A0, PCPC+2+rel; A=0, PCPC+2例:例:MOV A, R0MOV A, R0JZ L1JZ L1MOV R1, #00HMOV R1, #00HAJMP L2AJMP L2L1: MOV R1, #0FFHL1: MOV R1, #0FFHL2: SJMP L2L2: SJMP L2#0FFH , R0= #00H R1#00H , R
57、0#00H 3.2 指令系統(tǒng)簡介382 2比較條件轉(zhuǎn)移指令比較條件轉(zhuǎn)移指令CJNE A, #data, rel CJNE A, #data, rel CJNE A, direct, relCJNE A, direct, relCJNE Rn, #data, re1CJNE Rn, #data, re1CJNE CJNE Ri, #data, relRi, #data, rel 這這4 4條指令都是三字節(jié)指令,條指令都是三字節(jié)指令, 都執(zhí)行以下操作:都執(zhí)行以下操作: (1)(1)若目的操作數(shù)源操作數(shù),若目的操作數(shù)源操作數(shù), 則則 PCPC+3 PCPC+3 , CYCY0 0 (2) (2)若目
58、的操作數(shù)源操作數(shù),若目的操作數(shù)源操作數(shù), 則則 PCPC+3+rel PCPC+3+rel , CYCY0 0 (3) (3)若目的操作數(shù)源操作數(shù),若目的操作數(shù)源操作數(shù), 則則 PCPC+3+rel PCPC+3+rel , CYCY1 1 CJNE R0, #10H, L1 CJNE R0, #10H, L1 MOV R1, #00H MOV R1, #00H AJMP L3 AJMP L3L1: JC L2L1: JC L2 MOV R1,#0AAH MOV R1,#0AAH AJMP L3 AJMP L3L2: MOV R1,#0FFHL2: MOV R1,#0FFHL3: SJMP L
59、3L3: SJMP L3#0AAH , R010H1#00H , R010H#0FFH , R010HR3.2 指令系統(tǒng)簡介39 3 3減減1 1條件轉(zhuǎn)移指令條件轉(zhuǎn)移指令DJNZ Rn, relDJNZ Rn, rel ; RnRn-1 ; RnRn-1 ; ; 若若Rn=0, PCPC+2Rn=0, PCPC+2 ; ; 若若Rn0, PCPC+2+relRn0, PCPC+2+relDJNZ direct, rel ; (direct)(direct)-1DJNZ direct, rel ; (direct)(direct)-1 ; ; 若若(direct)=0, PCPC+3(direc
60、t)=0, PCPC+3 ; ; 若若(direct)0, PCPC+3+rel(direct)0, PCPC+3+rel 第一條指令是兩字節(jié)指令,第二條指令是三字節(jié)指令都不影響第一條指令是兩字節(jié)指令,第二條指令是三字節(jié)指令都不影響PSWPSW。這兩條指令功能是先將操作數(shù)內(nèi)容減。這兩條指令功能是先將操作數(shù)內(nèi)容減l l,然后判斷,如果操作,然后判斷,如果操作數(shù)不為零,則轉(zhuǎn)移到指定單元,否則順序執(zhí)行。這兩條指令常用于控?cái)?shù)不為零,則轉(zhuǎn)移到指定單元,否則順序執(zhí)行。這兩條指令常用于控制程序的循環(huán)。制程序的循環(huán)。403.2 指令系統(tǒng)簡介三、子程序調(diào)用及返回指令(三、子程序調(diào)用及返回指令(4 4條)條)1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025合同模板中央空調(diào)銷售合同范本
- 北京億歐網(wǎng)盟科技有限公司-新質(zhì)生產(chǎn)力系列:2025中國消費(fèi)級AI硬件價(jià)值洞察及GEEK50榜單報(bào)告
- 2024年三年級道德與法治下冊 第四單元 多樣的交通和通信 11四通八達(dá)的交通第二課時(shí)說課稿 新人教版
- 2024年秋七年級地理上冊 第五章 世界的發(fā)展差異 5.2《國際經(jīng)濟(jì)合作》說課稿2 (新版)湘教版
- 9 古代科技 耀我中華(說課稿)2024-2025學(xué)年統(tǒng)編版道德與法治五年級上冊
- 養(yǎng)殖設(shè)備銷售合同范例
- 2024年一年級道德與法治上冊 第16課 我有一雙明亮的眼睛說課稿 未來版
- 9 種豆子 說課稿-2023-2024學(xué)年科學(xué)二年級下冊冀人版
- 出售電廠鍋爐合同范例
- 人員轉(zhuǎn)公司合同范例
- 投標(biāo)廢標(biāo)培訓(xùn)
- 腦卒中課件完整版本
- 藥房保潔流程規(guī)范
- 電子信息工程基礎(chǔ)知識(shí)單選題100道及答案解析
- 血液透析器課件
- 吊車司機(jī)雇傭合同協(xié)議書
- 新華師大版八年級下冊初中數(shù)學(xué)全冊課時(shí)練(課后作業(yè)設(shè)計(jì))
- 致命性大出血急救專家共識(shí)
- 住院成人高血糖患者血糖監(jiān)測醫(yī)護(hù)協(xié)議處方共識(shí)
- JTS-169-2017碼頭附屬設(shè)施技術(shù)規(guī)范
- DL-T5816-2020分布式電化學(xué)儲(chǔ)能系統(tǒng)接入配電網(wǎng)設(shè)計(jì)規(guī)范
評論
0/150
提交評論