




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、3-1 指令格式及其操作尋址方式指令格式及其操作尋址方式 一、基本概念一、基本概念1、指令及其格式、指令及其格式機器指令:用機器指令:用2進制數(shù)進制數(shù)0、1表示的命令代碼。表示的命令代碼。機器語言:由機器指令描述的程序語言。機器語言:由機器指令描述的程序語言。助記符指令:用英文字母和助記符指令:用英文字母和16進制數(shù)代替機器指令形成的符號進制數(shù)代替機器指令形成的符號指令。指令。助記符語言:由助記符指令形成的程序語言,又稱匯編語言。助記符語言:由助記符指令形成的程序語言,又稱匯編語言。MCS-51單片機匯編語言指令格式:單片機匯編語言指令格式:標號:標號: 操作碼操作碼 操作數(shù)操作數(shù)(目的操作數(shù)
2、,源操作數(shù))(目的操作數(shù),源操作數(shù)) ;注釋;注釋2、指令中的符號標識、指令中的符號標識Rn、Ri、#data、#data16、addr11、addr16、 Direct、rel、bitA:寄存器尋址的累加器;:寄存器尋址的累加器; ACC:直接尋址的累加器;:直接尋址的累加器;:間接尋址符號間接尋址符號(X):):X中的內(nèi)容中的內(nèi)容(X):): 由由X的內(nèi)容作為地址的單元中的內(nèi)容的內(nèi)容作為地址的單元中的內(nèi)容:箭頭左邊的內(nèi)容被右邊的內(nèi)容代替箭頭左邊的內(nèi)容被右邊的內(nèi)容代替 :本條指令的起始地址本條指令的起始地址 1、立即尋址立即尋址 操作數(shù)以常數(shù)的形式出現(xiàn),直接包含在指令字節(jié)中。操作數(shù)以常數(shù)的形
3、式出現(xiàn),直接包含在指令字節(jié)中。例如:例如: MOV A,#40H MOV DPTR, #TABLE ;TABLE為標號地址為標號地址 MOV P1, #00000111B MOV R3,#18二、尋址方式二、尋址方式尋址方式:指令給出參與運算的數(shù)據(jù)的方式。尋址方式:指令給出參與運算的數(shù)據(jù)的方式。MCS-51主要有主要有6種尋址方式:種尋址方式:立即尋址、直接尋址、寄存器尋址、寄存器間接尋址、基址立即尋址、直接尋址、寄存器尋址、寄存器間接尋址、基址寄存器變址寄存器間接尋址、相對尋址寄存器變址寄存器間接尋址、相對尋址2、直接尋址直接尋址 在指令中在指令中含有操作數(shù)的直接地址含有操作數(shù)的直接地址,該
4、地址指出了參與運算,該地址指出了參與運算的數(shù)所在的字節(jié)單元地址或位地址的數(shù)所在的字節(jié)單元地址或位地址(位尋址)(位尋址)。直接尋址的。直接尋址的尋址范圍:尋址范圍:(1)內(nèi)部數(shù)據(jù)存儲器的低)內(nèi)部數(shù)據(jù)存儲器的低128字節(jié),字節(jié),00H7FH;(2)特殊功能寄存器,注意除)特殊功能寄存器,注意除A、AB、DPTR外,其他外,其他SFR只能采用直接尋址方式。只能采用直接尋址方式。(3)位尋址:所有可尋址位;)位尋址:所有可尋址位;例如:例如:MOV A,70H ;A(70H) MOV C,70H ;CY(70H) 注意:對累加器注意:對累加器A直接尋址和位尋址時,要用符號直接尋址和位尋址時,要用符號
5、“ACC”或直或直接地址接地址“0E0H”,以區(qū)別于寄存器尋址。,以區(qū)別于寄存器尋址。3、寄存器尋址寄存器尋址 由指令指出以某寄存器的內(nèi)容為操作數(shù)。由指令指出以某寄存器的內(nèi)容為操作數(shù)。寄存器尋址方式使寄存器尋址方式使 用范圍:用范圍:(1)內(nèi)部)內(nèi)部RAM中的中的32個工作寄存器個工作寄存器R0R7; (2)A、AB、C、DPTR;例如:例如: INC R3 ;R3(R3)+1 操作碼操作碼 操作數(shù)操作數(shù)4、寄存器間接尋址寄存器間接尋址 指令中指出某一個寄存器的內(nèi)容為操作數(shù)的地址,以符指令中指出某一個寄存器的內(nèi)容為操作數(shù)的地址,以符號號“”表示。其尋址范圍:表示。其尋址范圍:(1)以)以R0,
6、R1為地址指針,尋址內(nèi)部為地址指針,尋址內(nèi)部RAM 007FH 和外和外RAM的低的低256B;(2)以)以DPTR為地址指針,尋址外部為地址指針,尋址外部RAM的的64KB空間和擴展空間和擴展I/O口???。(3)以堆棧)以堆棧SP為地址指針,尋址棧區(qū)單元;為地址指針,尋址棧區(qū)單元;例:例:MOV A,R0;A(R0) MOVX A,DPTR ;A(DPTR))5、基址寄存器變址寄存器間接尋址基址寄存器變址寄存器間接尋址以基址寄存器(以基址寄存器(PC、 DPTR)和變址寄存器()和變址寄存器(A)的內(nèi))的內(nèi)容容作為無符號數(shù)相加作為無符號數(shù)相加,形成,形成16位地址,訪問程序存儲器(表位地址,
7、訪問程序存儲器(表格)。格)。 MOVC A,A+PC ;A(A)+(PC) MOVC A,A+DPTR ;A(A)+(DPTR)6、相對尋址相對尋址指令中給定地址的指令中給定地址的相對偏移量相對偏移量rel,以,以PC當(dāng)前值為當(dāng)前值為基地址,基地址,加上加上rel所得結(jié)果為轉(zhuǎn)移目標地址。所得結(jié)果為轉(zhuǎn)移目標地址。 rel:符號數(shù),單字節(jié)補碼,:符號數(shù),單字節(jié)補碼,-128+127。例如:例如:1000H:JC 80H ;判;判C轉(zhuǎn)移指令,轉(zhuǎn)移指令,2字節(jié)字節(jié)分析:當(dāng)分析:當(dāng)CY=1時,轉(zhuǎn)移時,轉(zhuǎn)移3-2 指令系統(tǒng)指令系統(tǒng)3.2.1 程序狀態(tài)字程序狀態(tài)字PSW即即標志寄存器標志寄存器,字節(jié)地址為
8、:,字節(jié)地址為:D0H,可字節(jié)尋址、位尋址。,可字節(jié)尋址、位尋址。作用:存放指令執(zhí)行時有關(guān)信息、狀態(tài)。作用:存放指令執(zhí)行時有關(guān)信息、狀態(tài)。PSW字格式:字格式: D7D6D5D4D3D2D1D0CYACF0RS1RS0OVPPSW.7:CY,進位標志,布爾處理器的累加器,進位標志,布爾處理器的累加器C。 PSW.6:AC,半進位標志。,半進位標志。PSW.5:F0,用戶標志,可置位和復(fù)位。,用戶標志,可置位和復(fù)位。PSW.4-PSW.3:RS1、RS0,指出當(dāng)前工作寄存器區(qū),指出當(dāng)前工作寄存器區(qū)Rn。PSW.2:OV,溢出標志。,溢出標志。CY CS=1時溢出,時溢出,OV=1。PSW.1:保
9、留位,可單獨使用,表示方法為:保留位,可單獨使用,表示方法為PSW.1。PSW.0:P,奇偶標志,指,奇偶標志,指A中中“1”的個數(shù),為奇數(shù)時置的個數(shù),為奇數(shù)時置1。3.2.2 指令系統(tǒng)指令系統(tǒng)一、數(shù)據(jù)傳送指令、數(shù)據(jù)傳送指令 共有共有29條,包括數(shù)據(jù)傳送、數(shù)據(jù)交換、棧操作三類。條,包括數(shù)據(jù)傳送、數(shù)據(jù)交換、棧操作三類。1、內(nèi)部、內(nèi)部RAM間的數(shù)據(jù)傳送(間的數(shù)據(jù)傳送(16條)條)(1)指令格式)指令格式指令格式:指令格式:MOV 目的字節(jié)目的字節(jié),源字節(jié)源字節(jié)功功 能:把源字節(jié)指定的變量傳送到目的字節(jié)指定能:把源字節(jié)指定的變量傳送到目的字節(jié)指定的存儲單元中,源字節(jié)內(nèi)容不變。的存儲單元中,源字節(jié)內(nèi)容
10、不變。(2)操作數(shù))操作數(shù)操作數(shù):操作數(shù):A,Rn,direct,Ri,DPTR,#data (3)指令描述:)指令描述:以以A目的操作數(shù)目的操作數(shù)MOV A,Rn(direct , Ri , #data ) ;A(Rn) 以以Rn為目的操作數(shù)為目的操作數(shù)MOV Rn,direct (A, #data ) ;Rn(direct)以以direct為目的操作數(shù)為目的操作數(shù)MOV direct1,direct2(A,Rn, Ri , #data ) ;direct1(direct2) 以以Ri為目的操作數(shù)為目的操作數(shù)MOV Ri,A (direct, #data ) ;(;(Ri)(A)16位數(shù)據(jù)傳
11、送指令位數(shù)據(jù)傳送指令MOV DPTR, #data16;高;高8位送位送DPH,低,低8位送位送DPL例例3-1:設(shè)(:設(shè)(70H)= 60H,(,(60H)=20H,P1為輸入口,狀態(tài)為輸入口,狀態(tài)為為0B7H,執(zhí)行如下程序:,執(zhí)行如下程序: MOV R0,#70H ;(78H 70H) MOV A, R0 ;(E6H) MOV R1,A ;(F9H) MOV B, R1 ;(87H F0H) MOV R0, P1 ;(A6 90H)結(jié)果:結(jié)果:(70H)= 0B7H(B) = 20H(R1) = 60H(R0) = 70H要求:掌握指令功能、尋址方式、結(jié)果要求:掌握指令功能、尋址方式、結(jié)果
12、例例3-2:給出下列指令的執(zhí)行結(jié)果,指出源操作數(shù)的尋址方式。:給出下列指令的執(zhí)行結(jié)果,指出源操作數(shù)的尋址方式。 MOV20H, #25H MOV25H, #10H MOVR2, #0CAH MOVR0, #20H MOVA,R0 MOVR1, A MOVB,R1 MOV A, R2 MOVR1,A結(jié)果:結(jié)果:(20H)=25H, (25H)=10H,(R2)=0CAH,(R0)=20H,(A)=25H,(R1)=25H,(B)=10H, (A)=0CAH (25H)=0CAH,2、累加器、累加器A與外部數(shù)據(jù)存儲器(或擴展與外部數(shù)據(jù)存儲器(或擴展I/O口)口)傳遞數(shù)據(jù)傳遞數(shù)據(jù)MOVXMOVXA,
13、DPTRMOVXA,Ri ;均為單字節(jié)指令;均為單字節(jié)指令 MOVXDPTR,AMOVXRi,A功能:功能:A與外部與外部RAM或擴展或擴展I/O口數(shù)據(jù)的相互傳送??跀?shù)據(jù)的相互傳送。說明:說明:(1)用)用Ri只能間接尋址只能間接尋址256個單元(個單元(0000H00FFH),),當(dāng)訪問超過當(dāng)訪問超過256個字節(jié)的外個字節(jié)的外RAM空間時,需利用空間時,需利用P2口口 確定高確定高8位地址,用位地址,用DPTR可訪問整個可訪問整個64KB空間。空間。(2)可用作為擴展)可用作為擴展I/O口的輸入口的輸入/輸出指令輸出指令例例3-3:將外:將外RAM 2010H中內(nèi)容送中內(nèi)容送 外外RAM 2
14、020單元中。單元中。分析:讀分析:讀2010H中內(nèi)容中內(nèi)容A寫數(shù)據(jù)寫數(shù)據(jù) 2020H中中方法一、流程如右圖方法一、流程如右圖程序如下:程序如下:MOV P2,#20H ;輸出高;輸出高8位地址位地址MOV R0,#10H ;置;置讀讀低低8位間接地址位間接地址MOVX A,R0 ;讀;讀2010H中數(shù)據(jù)中數(shù)據(jù)MOV R1,#20H ;置;置寫寫低低8位間接地址位間接地址MOVX R1,A ;將;將A中數(shù)據(jù)寫入中數(shù)據(jù)寫入2020H中中程序如下:程序如下:MOV DPTR,#2010HMOVX A,DPTR MOV DPTR,#2020HMOVX DPTR,A方法二、流程如右圖:方法二、流程如右
15、圖:3、查表指令、查表指令MOVC表格:程序存儲器除存放程序外,還可存放一些常數(shù),這種數(shù)表格:程序存儲器除存放程序外,還可存放一些常數(shù),這種數(shù) 據(jù)的結(jié)構(gòu)稱為據(jù)的結(jié)構(gòu)稱為表格。表格。指令格式:指令格式:MOVCA,A+DPTR ;A(A)+(DPTR)MOVCA,A+PC ;PC (PC)+1 A (A)+(PC)功能:以功能:以DPTR、PC為基地址,與為基地址,與A中的中的8位無符號數(shù)位無符號數(shù)相加,得相加,得 到一個新到一個新16位地址,將其內(nèi)容送位地址,將其內(nèi)容送A。(1)用)用DPTR作為基寄存器作為基寄存器 例例3-4:設(shè)外部:設(shè)外部ROM的的2000H單元開始的連續(xù)單元開始的連續(xù)1
16、0個字個字 節(jié)中已存放有節(jié)中已存放有09的平方數(shù),要求根據(jù)的平方數(shù),要求根據(jù)A中的中的 內(nèi)容(內(nèi)容(09)來查找對應(yīng)的平方值。)來查找對應(yīng)的平方值。START: MOVA,#3MOV DPTR,#TABLE MOVC A,A+DPTR ;查表;查表 ORG 2000H 2003單元內(nèi)容單元內(nèi)容TABLE:DB 0,1,4,9,16,25,36,49,64,81結(jié)果:結(jié)果:A (2003H),(),(A)=09H特點:可訪問整個特點:可訪問整個ROM的的64KB空間,表格可放在空間,表格可放在 ROM的任何位置,與的任何位置,與MOVC指令無必然的關(guān)系。指令無必然的關(guān)系。(2)用PC作為基寄存器
17、例例3-5:ORG 1000H1000H MOV A,#30H;1002H MOVC A,A+PC;結(jié)果是:結(jié)果是:A (1033H)優(yōu)點:不改變優(yōu)點:不改變PC的狀態(tài),根據(jù)的狀態(tài),根據(jù)A的內(nèi)容取表格常數(shù)。的內(nèi)容取表格常數(shù)。缺點:缺點:(1)表格只能存放在查表指令以下的)表格只能存放在查表指令以下的256個單元內(nèi)。個單元內(nèi)。(2)當(dāng)表格首地址與本指令間有其他指令時,須要調(diào)整偏移量,)當(dāng)表格首地址與本指令間有其他指令時,須要調(diào)整偏移量,調(diào)整量為下一條指令的起始地址到調(diào)整量為下一條指令的起始地址到表格首址表格首址之間的字節(jié)數(shù)。之間的字節(jié)數(shù)。4、堆棧操作、堆棧操作 堆棧,由特殊功能寄存器堆棧,由特殊
18、功能寄存器SP(81H)管理,始終指向其棧)管理,始終指向其棧頂頂位置,棧底視需要設(shè)在內(nèi)部位置,棧底視需要設(shè)在內(nèi)部RAM低低128B內(nèi)。內(nèi)。(1)進棧操作:)進棧操作: PUSHdirect 功能:先功能:先SP (SP)+ 1,再(,再(SP)(direct);); 其中:其中:direct為源操作數(shù);目的操作數(shù)為為源操作數(shù);目的操作數(shù)為SP,隱含。,隱含。例例3-6:已知:(:已知:(A)=30H,(,(B)=70H, (R0)=10H 執(zhí)行:執(zhí)行: MOVSP,#60H ;設(shè)棧底;設(shè)棧底PUSHACC ;PUSHB PUSH 0H結(jié)果:(結(jié)果:(61H)=30H,(,(62H)=70H,
19、(63H)=10H, (SP)=63H(2)出棧操作:)出棧操作: POP direct 功能:先功能:先direct(SP),再),再SP (SP)1 其中:其中:direct為目的操作數(shù),源操作數(shù)為為目的操作數(shù),源操作數(shù)為SP,隱含。,隱含。例例3-7:已知:(:已知:(SP)=62H,(,(62H)=70H,(,(61H)=30H執(zhí)行:執(zhí)行:POP DPH POP DPL 結(jié)果:(結(jié)果:(DPTR)=7030H,(,(SP)=60H例例3-8:已知:(:已知:(A)=30H,(,(B)=70H, (R0)=10H 執(zhí)行:執(zhí)行: MOVSP, #60H ;設(shè)棧底;設(shè)棧底PUSHACC ;P
20、USHB PUSH 0H MOV A, #20H MOV R0, #12H POP 0H POP ACC POP B 5、與、與A的數(shù)據(jù)交換指令的數(shù)據(jù)交換指令數(shù)據(jù)交換指令共數(shù)據(jù)交換指令共5條,完成累加器條,完成累加器A和內(nèi)部和內(nèi)部RAM單單元之間的字節(jié)或半字節(jié)交換。元之間的字節(jié)或半字節(jié)交換。(1)整字節(jié)交換:)整字節(jié)交換:XCH A,Rn ;(;(A)(Rn)XCH A,direct ;(;(A)(direct)XCH A,Ri ;(;(A)(Ri)(2)半字節(jié)交換:)半字節(jié)交換:XCHD A,Ri ;(;(A)03(Ri)03(3)累加器自身高低)累加器自身高低4位交換位交換SWAP A ;
21、(;(A)74(A)30例例3-9 設(shè)(設(shè)(A)=57H,(,(20H)=68H,(,(R0)=30H,(30H)=39H,求下列指令的執(zhí)行結(jié)果,求下列指令的執(zhí)行結(jié)果(1)XCH A,20H ; 結(jié)果:(結(jié)果:(A)=68H,(,(20H)=57H(2)XCH A,R0 ;結(jié)果:結(jié)果: (A)=39H,(,(30H)=57H(3)XCH A,R0 ;結(jié)果:結(jié)果: (A)=30H,(,(R0)=57H(4)XCHD A,R0 ;結(jié)果:結(jié)果: (A)=59H,(,(30H)=37H)(5)SWAP A ;結(jié)果:結(jié)果: (A)=75H例例3-10:設(shè)內(nèi)部:設(shè)內(nèi)部RAM 40H、41H 單元中連續(xù)存放
22、有單元中連續(xù)存放有4個壓縮的個壓縮的 BCD碼數(shù)據(jù),試編程序?qū)⑦@碼數(shù)據(jù),試編程序?qū)⑦@4 個個BCD碼倒序排列。碼倒序排列。分析:流程如右圖分析:流程如右圖程序如下:程序如下:MOV A,41HSWAP AXCH A,40HSWAP AMOV 41H,A二、算術(shù)運算指令二、算術(shù)運算指令包括、包括、加、加1、減、減1、十進制調(diào)整指令,共、十進制調(diào)整指令,共有有24條,一般影響條,一般影響PSW中的中的CY、AC、OV、P標志位。標志位。1、加減法指令、加減法指令(12條)條)(1)指令助記符:)指令助記符: ADD + ADDC 帶帶C+ SUBB 帶帶C-(2)以)以A為目的操作數(shù)為目的操作數(shù)
23、不帶進位加法不帶進位加法 ADD 4條條ADD A, Rn (Ri, direct, #data);A (A)+(Rn)帶進位加法指令帶進位加法指令 ADDC 4條條ADDC A,direct (Rn ,Ri, #data) ;A (A)+(direct)+(CY) 帶進位減法指令帶進位減法指令 SUBB 4條條SUBB A,Ri (Rn, direct, #data) ;A(A)-(Ri)-(CY)例例3-11:設(shè)(:設(shè)(A)=D3H,(,(30H)=E8H 執(zhí)行:執(zhí)行: ADD A,30H 1101 0011 (D3) (-45)補)補 無符號數(shù)無符號數(shù) 211 +) 1110 1000
24、(E8) (-24)補)補 232 1 1011 1011結(jié)果:結(jié)果:CY=1,AC=0,P=0,OV=0,(,(A)=BBH (補碼真值(補碼真值-69,正,正確)確)例例3-12:設(shè)(:設(shè)(A)=49H,CY=1, 執(zhí)行:執(zhí)行: SUBB A,#54H0100 1001 (49H) 0101 0100 (54H) -) 1 1111 0100 (借位(借位1)結(jié)果:結(jié)果:CY=1,AC=0,P=1,OV=0,(,(A)=F4H(真值(真值-12,正,正確)確) 例例3-14:試編制:試編制4位十六進制數(shù)加法程序,假定和數(shù)超過雙字節(jié)位十六進制數(shù)加法程序,假定和數(shù)超過雙字節(jié)(21H20H)+(
25、31H30H) 42H41H40H分析:分析:先低字節(jié)作不帶進位求和,再作帶進位高字節(jié)求和。先低字節(jié)作不帶進位求和,再作帶進位高字節(jié)求和。 流程圖(略),程序如下:流程圖(略),程序如下:MAIN:MOV A,20H ADD A,30H MOV 40H, A MOV A,21H ADDC A,31H ;帶低字節(jié)進位加法;帶低字節(jié)進位加法 MOV 41H, A MOVA,#00H ;準備處理最高位;準備處理最高位ADDCA, #00HMOV 42H, ASJMP例例3-15:編制下列減法程序,要求:編制下列減法程序,要求:(31H30H)(41H40H) 31H30H分析分析:流程圖(略),程序
26、如下:流程圖(略),程序如下:MAIN:CLR C ;CY清零清零 MOV A, 30H SUBB A, 40H MOV 30, A ;存低字節(jié);存低字節(jié) MOV A, 31H SUBB A, 41H MOV 31H, A ;存高字節(jié);存高字節(jié)HERE:SJMP HERE2、加、加1減減1指令指令 助記符:助記符:INC,DEC操作數(shù):操作數(shù):A,direct,Ri,Rn,DPTR指令描述:(指令描述:(不影響不影響PSW,即使有進位或借位,即使有進位或借位,CY也不變,除也不變,除A影響影響P標志標志)(1)INC:加:加1 5條條INC A ; A (A)+1INC Rn ; Rn(Rn)
27、+1INC Ri ; (Ri)(Ri)+1INC direct ; direct(direct)+1INC DPTR ; DPTR(DPTR)+1(2)DEC:減:減1 4條條DEC A ; A (A)1DEC Rn ; Rn(Rn)1DEC Ri ; (Ri)(Ri)1DEC direct ; direct(direct) 13、十進制調(diào)整指令、十進制調(diào)整指令格式:格式:DA A 指令用于兩個指令用于兩個BCD碼加法運算的加碼加法運算的加6修正,只影響修正,只影響CY位。位。指令的使用條件:指令的使用條件:(1)只能緊跟在加法指令()只能緊跟在加法指令(ADD/ADDC)后進行)后進行(2)
28、兩個加數(shù)必須已經(jīng)是)兩個加數(shù)必須已經(jīng)是BCD碼碼(3)只能對累加器)只能對累加器A中結(jié)果進行調(diào)整中結(jié)果進行調(diào)整例如:(例如:(A)=56H,(,(R5)=67H,(,(BCD碼)執(zhí)行:碼)執(zhí)行: ADD A,R5 DAA 結(jié)果:(結(jié)果:(A)=23H,(,(CY)=1 例例3-16:試編制十進制數(shù)加法程序(單字節(jié):試編制十進制數(shù)加法程序(單字節(jié)BCD加法),假定加法),假定和數(shù)為單字節(jié),要求:和數(shù)為單字節(jié),要求: (20H)+(21H) 22H 分析:分析:流程如右圖流程如右圖程序如下:程序如下: MOV R0, #20H MOV A, R0 INC R0 ADD A, R0 DA A INC
29、 R0 MOV R0,A4、乘除法指令、乘除法指令2條單字節(jié)條單字節(jié)4機器周期的指令。機器周期的指令。(1)8位無符號數(shù)乘法指令位無符號數(shù)乘法指令MULAB ;B 158 A70(A)(B)PSW: 1)若乘積大于)若乘積大于256,OV=1;否則;否則OV=0;2)CY總是清總是清“0”。例如:(例如:(A)=50H,(,(B)=A0H,執(zhí)行,執(zhí)行MUL AB后后結(jié)果:(結(jié)果:(B)=32H,(,(A)=00H,(,(OV)=1(2)8位無符號除法指令位無符號除法指令DIVAB ; (A)(A/B)的(商)的(商); (B)(A/B)的(余數(shù))的(余數(shù))PSW: 1)CY、OV,清,清“0”
30、 2)若()若(B)=0,OV=1。例如:(例如:(A)=2AH,(,(B)=05H,執(zhí)行,執(zhí)行DIV AB后后結(jié)果:(結(jié)果:(A)=08H,(,(B)=02H,(,(OV)=0 MOV A,R1 MOV B,R2 MUL AB MOV R5, A MOV R4, B MOV A,R0 MOV B,R2MUL AB ADD A,R4MOV R4, A MOV A, BADDC A, #00HMOV R3, A例例3-17:雙字節(jié)乘法程序,要求:雙字節(jié)乘法程序,要求:(R0R1)(R2)R3R4R5分析:分析:設(shè)(設(shè)(R0)=J,(,(R1)=K,(,(R2)=L,則:,則:例例3-18:編制將
31、:編制將A中的數(shù)轉(zhuǎn)換成三位中的數(shù)轉(zhuǎn)換成三位BCD碼程序,百位放在碼程序,百位放在20H,十位、個位放在,十位、個位放在21H中。中。分析:分析:(A)/100商(百位)商(百位)(20H););余數(shù)余數(shù)/10 商(十位)商(十位)(21H)74; 余數(shù)余數(shù) (個位)(個位)(21H)30;流程流程如右圖如右圖程序如下:程序如下:MOV B,#100DIV ABMOV 20H, AMOV A,BMOV B,#10DIV ABSWAP AADD A,BMOV 21H, A三、邏輯運算指令三、邏輯運算指令 24條1、 基本與、或、異或運算指令基本與、或、異或運算指令邏輯邏輯“與與”指令指令 6條條A
32、NL A,Rn(direct, Ri, #data) ;A(A)(Rn)ANL direct , A (#data);A( direct )(A)邏輯邏輯“或或”指令指令 6條條ORL A,Ri (Rn, direct, #data) ;A (A)(Ri)ORL direct , A (#data);A( direct )(A)邏輯邏輯“異或異或”指令指令 6條條XRL A,direct (Ri,Rn,#data) ;direct(A) ( direct )XRL direct,#data (A) ;direct(direct) data2、對、對A簡單邏輯指令簡單邏輯指令1)清零與取反)清零
33、與取反CLR A ;清;清0CPL A ;求反;求反2)循環(huán)移位指令)循環(huán)移位指令RL A ;RLC A ;RR A ;RRC A ;例例3-19:按要求編程,完成下列各題:按要求編程,完成下列各題:1)選通工作寄存器組中)選通工作寄存器組中0區(qū)為工作區(qū)。區(qū)為工作區(qū)。 2)利用移位指令實現(xiàn)累加器)利用移位指令實現(xiàn)累加器A的內(nèi)容乘的內(nèi)容乘6。 3)將)將ACC的低的低4位送位送P1口的低口的低4位,位,P1口的高口的高4位不變。位不變。例例3-19解:解:1)ANL PSW,#11100111B ;PSW的的D4、D3位為位為002)CLR C RLC A ;左移一位,相當(dāng)于乘;左移一位,相當(dāng)于
34、乘2 MOV R0, A CLR C RLC A ;再乘;再乘2,即乘,即乘4 ADD A, R0;乘;乘2 + 乘乘4 = 乘乘6 3)ANL A, #0FH ;高;高4位屏蔽(清位屏蔽(清0) ANL P1, #F0H ;P1低低4位清位清0 ORL P1, A ;(;(P1.31.0)(A30)四、位操作指令四、位操作指令布爾處理器布爾處理器C,可尋址內(nèi)部,可尋址內(nèi)部RAM中的可尋址位:中的可尋址位:bit = 007FH,和,和SFR中的可尋址位。中的可尋址位。位地址的描述形式:位地址的描述形式: (1)直接位地址,如)直接位地址,如MOV C, 70H(2)字節(jié)地址)字節(jié)地址+位地址
35、,如位地址,如20H.1,ACC.4,PSW.4等等(3)位寄存器名稱,如)位寄存器名稱,如F0,C,RS1,RS0等等(4)偽指令定義過的位名稱)偽指令定義過的位名稱注意:注意: CY-直接地址,是位尋址;直接地址,是位尋址; C -位寄存器,為寄存器尋址。位寄存器,為寄存器尋址。例如:例如:CLR CY ;機器碼;機器碼C2 D7H CLR C;機器碼;機器碼C3H1、位傳送指令、位傳送指令MOV C,bitMOV bit,C例如:例如:MOVC,06H MOVP1.0,C 2、位變量修改指令、位變量修改指令CLR C; C0CLR bit ; bit0bitCSETB C ;C1SETB
36、 bit ;bit 1例如:例如:SETB P1.0CPL C ; C( )CPL bit ; bit( )3、位變量邏緝、位變量邏緝“與與”指令指令A(yù)NLC,bit ; C(C)(bit)ANLC,/ bit ; C(C)( )bitbit例如:設(shè)例如:設(shè)P1.0、P1.1為輸入口,為輸入口,P1.3為輸出口,執(zhí)行程序為輸出口,執(zhí)行程序MOVC,P1.0ANLC,P1.1MOVP1.3, C結(jié)果:結(jié)果:P1.3 = P1.0 P1.1 。4、位變量邏緝、位變量邏緝“或或”指令指令ORLC,bit ; C(C)(bit)ORLC,/ bit ; C(C)( )例如:設(shè)例如:設(shè)P1為輸出口,執(zhí)行
37、下列程序,指出功能:為輸出口,執(zhí)行下列程序,指出功能:(1) MOVC,00HORLC,01HMOVP1.7,C(2) MOV P1,#00H LOOP: SETBP1.0LCALLDELAYCLRP1.0LCALLDELAYAJMPLOOP(3) CLR A LOOP: SETBCRLCAMOVP1,ALCALLDELAYJNBACC.7,LOOP SJMP $五、控制轉(zhuǎn)移指令(五、控制轉(zhuǎn)移指令(22條)條) 1、無條件轉(zhuǎn)移指令、無條件轉(zhuǎn)移指令 無條件轉(zhuǎn)移應(yīng)用舉例:無條件轉(zhuǎn)移應(yīng)用舉例:1)1030H:AJMP 100H ;機器碼為;機器碼為2100H 目的地址:目的地址:PC=1032H的高
38、的高5位位+ 100H的低的低11位位 = 00010 + 001 0000 0000 = 1100H 2)0000H:AJMP 40H ;程序轉(zhuǎn)移到;程序轉(zhuǎn)移到0040H 3)1100H:SJMP 21H ;目標地址為;目標地址為1123H 4)1000H:SJMP NEXT;目的地址;目的地址NEXT=1020H 則:相對地址則:相對地址rel =1EH(補碼數(shù))(補碼數(shù)) 5)0060H:SJMP FEH ;踏步指令;踏步指令目的地址:目的地址:PC =(PC)+ 2 + FEH = 0060H +2 +FFFEH = 0060H6)0000H:LJMP 0030H ;2、條件轉(zhuǎn)移指令、
39、條件轉(zhuǎn)移指令根據(jù)某種條件判斷轉(zhuǎn)移的指令,執(zhí)行時:根據(jù)某種條件判斷轉(zhuǎn)移的指令,執(zhí)行時:條件滿足時,轉(zhuǎn)移執(zhí)行;條件滿足時,轉(zhuǎn)移執(zhí)行; 條件不滿足時,順序執(zhí)行;條件不滿足時,順序執(zhí)行;目的地址目的地址:(PC)=(PC)+ 指令字節(jié)數(shù)指令字節(jié)數(shù) 2或或3 + rel包括判包括判A、判、判Bit、判、判C三種,共有三種,共有7條:條:1)判)判A轉(zhuǎn)移,轉(zhuǎn)移,2字節(jié)字節(jié)JZ rel ;條件:(;條件:(A)= 0 ;轉(zhuǎn)移轉(zhuǎn)移JNZ rel ;條件:(;條件:(A)0 2)判)判Bit轉(zhuǎn)移,轉(zhuǎn)移,3字節(jié)字節(jié)JB bit, rel ;條件:(;條件:(bit)= 1JNB bit, rel ;條件:(;條件
40、:(bit)= 0JBC bit, rel ;條件:(;條件:(bit)= 1轉(zhuǎn)移,并清轉(zhuǎn)移,并清 bit位位3)判)判C轉(zhuǎn)移,轉(zhuǎn)移,2字節(jié)字節(jié)JC rel ;條件:(;條件:(C)= 1JNC rel ;條件:(;條件:(C)= 0例例3-24 利用利用P1.0、P1.1作為外接發(fā)光二極管的啟停按作為外接發(fā)光二極管的啟停按鈕,鈕,P1.2作為外接發(fā)光二極管端,試編制控制程序。作為外接發(fā)光二極管端,試編制控制程序。程序如下:程序如下:START: MOV P1,#03H ;作;作P1口輸入時先置口輸入時先置1 WT1:JBP1.0,WT1SETBP1.2 WT2:JBP1.1,WT2CLRP1
41、.2SJMPWT13、比較不相等轉(zhuǎn)移指令、比較不相等轉(zhuǎn)移指令CJNEA, direct,rel;CJNEA, #data, rel;CJNE Rn, #data, rel;CJNE Ri, #data, rel;執(zhí)行時:執(zhí)行時:1)兩操作數(shù)相等,順序執(zhí)行,且)兩操作數(shù)相等,順序執(zhí)行,且CY=0。2)兩操作數(shù)不相等,轉(zhuǎn)移執(zhí)行,且對于無符號)兩操作數(shù)不相等,轉(zhuǎn)移執(zhí)行,且對于無符號數(shù)若:數(shù)若:第一操作數(shù)第二操作數(shù),第一操作數(shù)第二操作數(shù),CY=1,否則,否則CY清清“0”。目的地址:(目的地址:(PC)=(PC)+ 指令字節(jié)數(shù)指令字節(jié)數(shù)3 + rel例例3-24:內(nèi)部:內(nèi)部RAM 30H開頭的開頭的2
42、0個個連續(xù)單元中,存放有連續(xù)單元中,存放有20個數(shù),統(tǒng)計個數(shù),統(tǒng)計等于等于8的單元個數(shù),結(jié)果放在的單元個數(shù),結(jié)果放在R2中。中。分析:分析:取一個數(shù)與取一個數(shù)與8比較,相等比較,相等R2加加1,不相等跳過。并作,不相等跳過。并作20次重復(fù)次重復(fù)即可。即可。流程如右圖,流程如右圖,程序如下:程序如下: ORG 1000HSTART:MOV R0, #30HMOV R7, #20MOV R2, #0LOOP:CJNE R0,#08H,NEXTINCR2NEXT:INCR0DEC R7 CJNE R7, #00H, LOOP4、減、減“1”不為不為0轉(zhuǎn)移指令轉(zhuǎn)移指令DJNZRn, rel ;2字節(jié)指
43、令,字節(jié)指令,2周期指令周期指令DJNZdirect,rel ;3字節(jié)指令,字節(jié)指令,2周期指令周期指令目的地址:(目的地址:(PC)=(PC)+ 指令字節(jié)數(shù)指令字節(jié)數(shù)2或或3 + rel 例例3-25:利用:利用DJNZ指令設(shè)計循環(huán)延時程序,已知指令設(shè)計循環(huán)延時程序,已知fosc=12MHz1) 單循環(huán)延時單循環(huán)延時DELAY:MOV R7, #10DJNZ R7, RETt=1us210+1+2=23us 2) 雙重循環(huán)延時雙重循環(huán)延時DELAY:MOV R7, #0AHDL: MOV R6, #64HDJNZ R6, DJNZ R7, DLRET t=(2us100+2+1)10+1+2
44、=2033us 3) 三重循環(huán)延時三重循環(huán)延時DELAY:MOVR7, #10DL2:MOVR6, #200 DL1:MOVR5, #250DJNZR5, DJNZR6, DL1DJNZR7, DL2RETt=(2us250+2+1) 200)+2+1) 10+1+2 = 1006033us 1 秒秒 例例3-26 P1口控制發(fā)光二極管,口控制發(fā)光二極管,延時節(jié)日燈組合。延時節(jié)日燈組合。LOOP:MOV P1,0AAH;燈光;燈光1ACALL DELAYMOV P1,055H;燈光;燈光2 ACALL DELAYSJMP LOOPDELAY: MOV R7, 0FFHDL1:MOV R6, 0
45、FFHDL2:NOP;空操作;空操作DJNZ R6, DL2DJNZ R7, DL1RET5、調(diào)用指令與返回指令、調(diào)用指令與返回指令1) 主程序和子程序結(jié)構(gòu)主程序和子程序結(jié)構(gòu)2) 調(diào)用和返回調(diào)用和返回 子程序是獨立于主程序的具有特定功能的程序子程序是獨立于主程序的具有特定功能的程序段,單獨編寫,能被主程序調(diào)用,又能返回主程段,單獨編寫,能被主程序調(diào)用,又能返回主程序。序。3) 堆棧和堆棧和PC值的保留值的保留 調(diào)用子程序時,調(diào)用子程序時,CPU自動將當(dāng)前自動將當(dāng)前PC值保留在堆棧中,其值保留在堆棧中,其中高位放在中高位放在PCH,子程序返回時,自動彈出,送入,子程序返回時,自動彈出,送入PC。4) 現(xiàn)場保護和恢復(fù)現(xiàn)場現(xiàn)場保護和恢復(fù)現(xiàn)場現(xiàn)場保護現(xiàn)場保護 是指將需要保護的單元
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 游戲化教學(xué)在小學(xué)語文低年段識字中的應(yīng)用與效果研究論文
- 花園及菜園管理制度
- 茶具洗消間管理制度
- 草莓收購點管理制度
- 苗木銷售合同 (一)
- 財務(wù)會計工作計劃 (七)
- 課程計劃與課程標準
- 計算流體力學(xué)網(wǎng)格生成方法閱讀筆記
- 湖北省孝感市安陸市2024-2025學(xué)年七年級下學(xué)期期中道德與法治試題(含答案)
- 自動控制理論課程設(shè)計課程教學(xué)大綱
- 中鋁中州礦業(yè)有限公司禹州市方山鋁土礦礦山地質(zhì)環(huán)境保護和土地復(fù)墾方案
- 職業(yè)衛(wèi)生知識培訓(xùn)記錄
- 起重設(shè)備維護保養(yǎng)記錄(完整版)
- 網(wǎng)絡(luò)信息安全培訓(xùn)課件-PPT
- 北京市醫(yī)藥衛(wèi)生科技促進中心關(guān)于印發(fā)《首都醫(yī)學(xué)科技創(chuàng)新成果轉(zhuǎn)化優(yōu)促計劃實施方案(試行)的通知》
- (完整版)互聯(lián)網(wǎng)+項目策劃書
- THBLS 0011-2023 荊楚糧油 優(yōu)質(zhì)油菜籽生產(chǎn)技術(shù)規(guī)程
- 2023春國開社會調(diào)查研究與方法單元自測1-5試題及答案
- 美國AHA心肺復(fù)蘇指南
- HAND-成本模塊:移動平均成本-系統(tǒng)操作
- 慢阻肺匯總講解培訓(xùn)課件
評論
0/150
提交評論