版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第三章指令系統(tǒng)及程序設(shè)計(jì)舉例Exit§3.38051指令系統(tǒng)§3.1匯編語言§3.2尋址方式§3.4程序設(shè)計(jì)舉例§3.1匯編語言§3.1.1指令和程序設(shè)計(jì)語言§3.1.2指令格式BACK§3.1.1指令和程序設(shè)計(jì)語言指令:是CPU根據(jù)人的意圖來執(zhí)行某種操作的命令。程序設(shè)計(jì)語言:是實(shí)現(xiàn)人機(jī)交換信息的基本工具,分為機(jī)器語言、匯編語言和高級語言。機(jī)器語言:用二進(jìn)制編碼表示每條指令,是計(jì)算機(jī)能直接識(shí)別和執(zhí)行的語言。BACK把10放到累加器A中0111010000001010MovA,#0AH匯編語言:是用助記符、符號和數(shù)字等來表示指令的程序設(shè)計(jì)語言。它與機(jī)器語言指令是一一對應(yīng)的。把10放到累加器A中0111010000001010§3.1.2指令格式8051匯編語言指令格式操作碼[目的操作數(shù)][,源操作數(shù)][;注釋]匯編語言指令對應(yīng)的二進(jìn)制代碼格式單字節(jié)指令雙字節(jié)指令三字節(jié)指令BACK§3.2尋址方式一、什么是尋址方式:如何找到存放操作數(shù)的地址,把操作數(shù)提取出來的方法。二、尋址方式的種類:三、尋址空間及符號注釋:BACK二、尋址方式的種類:
1、寄存器尋址2、直接尋址3、立即數(shù)尋址4、寄存器間接尋址5、變址尋址6、相對尋址7、位尋址BACK1、寄存器尋址寄存器尋址:由指令指出寄存器組R0~R7中的某一個(gè)或其他寄存器(A,B,DPTR等)的內(nèi)容作為操作數(shù)。例如:MOVA,R0;(R0)→AMOVP1,A;(A)→P1口ADDA,R0;(A)+(R0)→ABACK2、直接尋址直接尋址方式:在指令中直接給出操作數(shù)所在存儲(chǔ)單元的地址。指令中操作數(shù)部分是操作數(shù)所在地址。直接尋址方式可訪問片內(nèi)RAM的128個(gè)單元以及所有的SFR。對于SFR,既可以使用它們的地址,也可以使用它們的名字。例如:MOVA,3AH;(3A)→AMOVA,90H;90H是P1口的地址或:MOVA,P1;(P1口)→ABACK3、立即數(shù)尋址立即數(shù)尋址:指令操作碼后面緊跟的是一字節(jié)或兩字節(jié)操作數(shù),用“#”號表示,以區(qū)別直接地址。例如:MOVA,#3AH;3AH→AMOVA,3AH;(3AH)→A;直接尋址MOVDPTR,#2000H;2000H→DPTR;(DPH)=20H;(DPL)=00HBACK4、寄存器間接尋址
寄存器間接尋址:操作數(shù)的地址事先存放在某個(gè)寄存器中,寄存器間接尋址是把指定寄存器的內(nèi)容作為地址,由該地址所指定的單元內(nèi)容作為操作數(shù)。8051規(guī)定R0或R1為間接尋址寄存器,它可尋址內(nèi)部地址RAM低位的128B單元內(nèi)容。還可采用DPTR作為間接尋址寄存器,尋址外部數(shù)據(jù)存儲(chǔ)器的64KB空間。例如BACK例如:將片內(nèi)RAM65H單元內(nèi)容47H送A,可執(zhí)行指令“MOVA,@R0”。其中R0內(nèi)容為65H。如圖所示:65H47HR0A47H數(shù)據(jù)存儲(chǔ)器地址┋┋65H①②以指令中所指定的R0內(nèi)容(65H)為指針將片內(nèi)RAM65H單元內(nèi)容47H送ABACK5、變址尋址(基址寄存器+變址寄存器間接尋址)變址尋址:以某個(gè)寄存器的內(nèi)容為基地址,在這個(gè)基地址的基礎(chǔ)上加上地址偏移量形成真正的操作數(shù)地址。8051中采用DPTR或PC為變址寄存器,A的內(nèi)容為地址偏移量。變址尋址只能訪問程序存儲(chǔ)器,訪問范圍為64KB。例如BACK例如:MOVCA,@A+DPTR;((A)+(DPTR))→A如圖所示1EH0302HROMDPTRAA02F1H11H1EH+①②DPTR內(nèi)容與A的內(nèi)容之和為程序存儲(chǔ)器地址程序存儲(chǔ)器內(nèi)容送ABACK6、相對尋址
相對尋址:是以當(dāng)前的PC值加上指令中規(guī)定的偏移量rel而形成實(shí)際的轉(zhuǎn)移地址。相對尋址只出現(xiàn)在相對轉(zhuǎn)移指令中。當(dāng)前的PC值是指執(zhí)行完相對指令后的PC值;相對轉(zhuǎn)移指令操作碼所在地址稱為源地址;轉(zhuǎn)移后的地址稱為目的地址。目的地址=源地址+相對轉(zhuǎn)移指令字節(jié)數(shù)+relrel為補(bǔ)碼表示的有符號數(shù)。BACK6、相對尋址
例如:ROM中地址2000H開始機(jī)器碼8054H匯編:SJMPrel其中:80H是操作碼,54H是偏移量rel執(zhí)行后,PC=2000h+2+54HBACK7、位尋址位尋址:采用位尋址方式的指令的操作數(shù)是8位二進(jìn)制數(shù)中的某一位,指令中給出的是位地址。位地址在指令中用bit表示。例如:CLRbit;位地址的兩種表示方法:直接使用位地址,如D3H;直接用寄存器名字加位數(shù),如PSW.3。位尋址區(qū)域:片內(nèi)RAM的20H-2FH的16個(gè)單元中的128位;字節(jié)地址能被8整除的SFR。BACKBACKMCS-51指令系統(tǒng)可分為五大類[1]數(shù)據(jù)傳送指令:28條[2]算術(shù)運(yùn)算指令:24條[3]邏輯運(yùn)算及移位指令:25條[4]控制轉(zhuǎn)移指令:17條[5]位操作指令(布爾操作):17條Back§3.3.1數(shù)據(jù)傳送指令
1.以累加器A為目的操作數(shù)的指令(4條,即4種尋址方式)
2.以寄存器Rn為目的操作數(shù)的指令(3條)
3.以直接地址為目的操作數(shù)的指令(5條)
4.以間接地址為目的操作數(shù)的指令(3條)
5.十六位數(shù)據(jù)傳送指令(1條)
6.查表指令(2條)
7.累加器A與片外RAM傳送指令(4條)
8.棧操作指令(二條)
9.交換指令(4條)BackBack1.以累加器A為目的操作數(shù)的指令(4條,即4種尋址方式)例:30H數(shù)據(jù)為11H,R1為30HMOVA,#30HMOVA,30HMOVA,@R1MOVA,R1(A)=30H(A)=11H(A)=11H(A)=30H
2、以寄存器Rn為目的操作數(shù)的指令(3條)Back
直接尋址和立這組指令的功能是把源操作數(shù)所指定的內(nèi)容送到當(dāng)前工作寄存器組R0~R7中的某個(gè)寄存器。源操作數(shù)有寄存器尋址,即數(shù)尋址三種方式。如:(A)=78H,(R5)=47H,(70H)=F2H,執(zhí)行指令:MOVR5,AMOVR5,70HMOVR5,#A3HBack;(R5)=78H;(R5)=F2H;(R5)=A3H3、以直接地址為目的操作數(shù)的指令(5條)BackBack4、以間接地址為目的操作數(shù)的指令(3條)Back5、十六位數(shù)據(jù)傳送指令(1條)這條指令的功能是把16位常數(shù)送入DPTR。DPTR由DPH和DPL組成。BackBack6、查表指令(2條)Back基地址寄存器+變址寄存器間接尋址@PC+A(程序存儲(chǔ)器0-64K)基地址寄存器+變址寄存器間接尋址@DPTR+A(程序存儲(chǔ)器0-64K)A寄存器圖3-7程序存貯器傳送(查表)例:若:初始MOVDPTR,#2000H;MOVA,#0AH;MOVCA,@A+DPTR;執(zhí)行下面程序段后結(jié)果如何?MOVDPTR,#2000H;MOVA,#0AH;MOVCA,@A+DPTR;(DPTR)=2000H(A)=0AH(A)=((A)+(DPTR))=(200AH)則:(A)=(200AH)=11H
所以,最后結(jié)果為:(A)=02(R0)=02(PC)=1004Back7、累加器A與片外RAM傳送指令(4條)Back
第2,4兩條指令以DPTR為片外數(shù)據(jù)存儲(chǔ)器16位地址指針,尋址范圍達(dá)64KB。其功能是DPTR所指定的片外數(shù)據(jù)存儲(chǔ)器與累加器A之間傳送數(shù)據(jù)。 第1,3兩條指令是用R0或R1作低8位地址指針,由P0口送出,尋址范圍是256字節(jié)。這兩條指令完成以R0或R1為地址指針的片外數(shù)據(jù)存儲(chǔ)器與累加器A之間的傳送數(shù)據(jù)。例:若:片內(nèi)RAM(30H)=01H,片外RAM(30H)=02H,執(zhí)行下面程序段后的結(jié)果如何。BackMOVR1,#30H; MOVXA,@R1; MOVR0,A ; MOVA,@R1; MOVR2,A ; (R1)=30H(A)=02H(R0)=(A)=02H(A)=((R1))=01H(R2)=(A)=01H8、棧操作指令(二條)Back例:MOVSP,#18H ; MOVA,#30H ; MOVDPTR,#1000H; PUSHACC ; PUSHDPH ; PUSHDPL ;POPDPL ;POPDPH ;POPACC ; (SP)=18H(A)=30H(DPTR)=1000H(SP)=19H(19H)=30H(SP)=1AH(1AH)=10H(SP)=1BH(1BH)=00H(DPL)=00H(SP)=1AH(DPH)=10H(SP)=19H(A)=30H(SP)=18HBack
9、交換指令(4條)Back(1)字節(jié)變換指令
初始時(shí):(A)=34H,(30H)=11HXCHA,30H; MOVR1,#30H; XCHA,@R1; (A)=11H,(30H)=34H(R1)=30H(A)=34H,(30H)=11H(2)半字節(jié)交換指令§3.3.2算術(shù)運(yùn)算指令1.不帶進(jìn)位加法指令(四條)
2.帶進(jìn)位加法指令(四條)
3.帶借位減法指令(四條)
4.乘法指令(1條)Back
5、除法指令(1條)
6、加1指令(5條)
7、減1指令(4條)
8、十進(jìn)制調(diào)整指令(1條)Back1、不帶進(jìn)位加法指令(四條)Back例:Back若:(A)=78H,(R0)=64H
執(zhí)行ADDA,R0后,結(jié)果及PSW=? (A):78H=01111000B
+(R0):64H=01100100B
(A):DCH=11011100B標(biāo)志位: CY=0,AC=0,OV=1,P=1,即PSW=05H
結(jié)果:(A)=DCH(R0)=64H2、帶進(jìn)位加法指令(四條)Back例:設(shè)(A)=0C3H,(R0)=0AAH, (CY)=1。
執(zhí)行指令“ADDCA,R0”后的結(jié)果及標(biāo)志位如何?
例:編程,將(30H),(31H)單元中的數(shù)與
(40H),(41H)單元中的數(shù)相加,結(jié)
果存于(30H),(31H)單元中。
BackMOVA,30HADDA,40HMOV30H,AMOVA,31HADDCA,41HMOV31H,A3、帶借位減法指令(四條)Back
這組指令的功能是從累加器A中減去源操作數(shù)所指出的數(shù)及進(jìn)位位CY的值,差保留在累加器A中。 由于8051指令系統(tǒng)中沒有不帶借位的減法指令,如需要的話,可以在“SUBB”指令前用“CLRC”指令將Cy清0,這一點(diǎn)必須注意。例:設(shè)(A)=0C9H,(R2)=54H,Cy=1。
執(zhí)行指令“SUBBA,R2”的結(jié)果如何?Back解: (A)=0C9H=11001001B
-)Cy=1=00000001B11001000B
-)(R2)=54H=01010100B
(A)=74H=01110100B
結(jié)果為:(A)=74H標(biāo)志位為:Cy=0AC=0OV=1P=04、乘法指令(1條)該指令若乘積大于0FFH,則OV置1,否則OV清0。Cy位總是被清0。Back例:(A)=4EH,(B)=5DH,
執(zhí)行指令“MULAB”后結(jié)果如何?Back5、除法指令(1條)BackBack6、加1指令(5條)Back例:若:(R1)=30H,(30H)=11H
求執(zhí)行下面指令后的結(jié)果。
INC@R1;(30H)=12H
INCR1;(R1)=31HBack7、減1指令(4條)Back8、十進(jìn)制調(diào)整指令(1條)Back例:設(shè)累加器A內(nèi)容為:01010110B(即為56的BCD碼),寄存器R3的內(nèi)容為01100111B(即67的BCD碼),CY內(nèi)容為1。求執(zhí)行下列指令后的結(jié)果。 ADDCA,R3;
DAA;Back§3.3.3邏輯操作指令Back
1.簡單操作指令(2條)2.移位指令(4條)3.累加器半字節(jié)交換指令4.邏輯“與”指令(6條)5.邏輯“或”指令(6條)6.邏輯“異或”指令(6條)Back1.簡單操作指令(2條)Back(1)累加器A清0指令(2)累加器A取反指令Back2.移位指令(4條)Back(1)累加器A循環(huán)左移指令(2)累加器A循環(huán)右移指令
(3)累加器A連同進(jìn)位位循環(huán)左移指令 RLCA;(4)累加器A連同進(jìn)位位循環(huán)右移指令 RRCA;Back3.累加器半字節(jié)交換指令
Back4.邏輯“與”指令(6條)Back
這組指令中前四條指令是將累加器A的內(nèi)容和操作數(shù)所指出的內(nèi)容按位進(jìn)行邏輯“與”,結(jié)果存放在A中。后兩條指令是將直接地址單元中的內(nèi)容和操作數(shù)所指出的單元的內(nèi)容按位進(jìn)行邏輯“與”,結(jié)果存入直接地址單元中。若直接地址正好是I/O端口,則為“讀——改——寫”操作。Back5.邏輯“或”指令(6條)Back這組指令的功能是將兩個(gè)指定的操作數(shù)按位進(jìn)行邏輯“或”,前四條指令的操作結(jié)果存放在累加器A中,后兩條指令的操作結(jié)果存放在直接地址單元中。Back6.邏輯“異或”指令(6條)Back
這組指令的功能是將兩個(gè)指定的操作數(shù)按位進(jìn)行“異或”,前四條指令的結(jié)果存放在累加器A中,后兩條指令的操作結(jié)果存放在直接地址單元中。上述邏輯操作類指令歸納如圖。這類指令的操作均只影響標(biāo)志位P。Back§3.3.4控制程序轉(zhuǎn)移類指令
1.無條件轉(zhuǎn)移指令(4條)
2.空操作指令(1條)
3.條件轉(zhuǎn)移指令(8條)
4.調(diào)用和返回指令Back
Back1、無條件轉(zhuǎn)移指令(4條)Back(1)絕對轉(zhuǎn)移指令
Back
這條指令提供了11位地址,可在2K范圍內(nèi)無條件轉(zhuǎn)移到由a10-a0所指出的地址單元中。因?yàn)橹噶钪惶峁┑?1位地址,高5位為原PC11-15位值,因此,轉(zhuǎn)移的目標(biāo)地址必須在AJMP指令后面指令的第一個(gè)字節(jié)開始的同一2K字節(jié)范圍內(nèi)。Back
(2)長轉(zhuǎn)移指令BackBack(3)短轉(zhuǎn)移(相對轉(zhuǎn)移)指令BackSJMPrel;先(PC)+2→PC后(PC)+rel→PCBack(4)間接轉(zhuǎn)移指令Back2空操作指令(1條)Back3條件轉(zhuǎn)移指令(8條)
Back(1)判零轉(zhuǎn)移指令BackBack(2)比較轉(zhuǎn)移指令(4條)Back1011011i#datarelBack(3)循環(huán)轉(zhuǎn)移指令(2條)Back
程序每執(zhí)行一次本指令,將第一操作數(shù)的字節(jié)變量減1,并判字節(jié)變量是否為零,若不為0,則轉(zhuǎn)移到目標(biāo)地址,繼續(xù)執(zhí)行循環(huán)程序段;若為0,則結(jié)束循環(huán)程序段的執(zhí)行,程序往下執(zhí)行。其中,rel為相對于DJNZ指令的下一條指令的第一個(gè)字節(jié)相對偏移量,用一個(gè)帶符號的8位數(shù)表示。所以,循環(huán)轉(zhuǎn)移的目標(biāo)地址應(yīng)為DJNZ指令的下條指令地址
溫馨提示
- 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年度鋼房拆除與臨時(shí)安置服務(wù)一體化合同2篇
- 面向小學(xué)生的網(wǎng)絡(luò)安全意識(shí)和實(shí)踐能力培養(yǎng)
- 2025版中小學(xué)生課后輔導(dǎo)中心安全協(xié)議書3篇
- 二零二五年度石材運(yùn)輸合同糾紛處理規(guī)則3篇
- 2025版無底薪健身器材銷售代表合同3篇
- 二零二五年度綠色環(huán)保型工廠土地購置與轉(zhuǎn)讓協(xié)議3篇
- 二零二五年度辦公大樓樓頂租賃及管理服務(wù)合同4篇
- 二零二五年度車輛煤炭運(yùn)輸車輛安全監(jiān)控系統(tǒng)采購合同3篇
- 二零二五年度餐廳員工福利保障及社會(huì)保險(xiǎn)繳納合同3篇
- 2025年度店鋪裝修施工與售后服務(wù)保障合同范本
- 高性能建筑鋼材的研發(fā)與應(yīng)用
- 無線廣播行業(yè)現(xiàn)狀分析
- 漢語言溝通發(fā)展量表(長表)-詞匯及手勢(8-16月齡)
- 高速公路相關(guān)知識(shí)講座
- 兒科關(guān)于抗生素使用的PDCA
- 商務(wù)服務(wù)業(yè)的市場細(xì)分和定位策略
- 財(cái)政學(xué)論文我國財(cái)政支出存在的問題及改革建議
- 小學(xué)生必備古詩
- 手術(shù)室護(hù)理實(shí)踐指南2023年
- 移動(dòng)商務(wù)內(nèi)容運(yùn)營(吳洪貴)任務(wù)六 結(jié)合熱度事件的內(nèi)容傳播
- 新人教版六年級下冊數(shù)學(xué)全冊課件
評論
0/150
提交評論