




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、主要內(nèi)容 尋址方式 指令系統(tǒng) 傳送與交換指令 算術(shù)運算、邏輯運算指令 控制轉(zhuǎn)移指令 位操作指令 偽指令 程序設(shè)計舉例,第3章 MCS-51系列單片機(jī)的指令系統(tǒng)及匯編語言程序設(shè)計,計算機(jī)通過執(zhí)行程序完成人們指定的任務(wù),程序由一條一條指令構(gòu)成,能為CPU識別并執(zhí)行的指令的集合就是該CPU的指令系統(tǒng)。 MCS-51單片機(jī)匯編語言指令格式: 操作符 目的操作數(shù),源操作數(shù) 操作符指明該指令完成什么操作; 操作數(shù)是指明該指令的操作對象。 目的操作數(shù)是存放結(jié)果的。 指令中操作數(shù)提供的方式稱為尋址方式,指令中的常用符號 Rn: 表示當(dāng)前工作寄存器R0R7中的一個。 Ri: 代表R0和R1寄存器中的一個,用作間
2、接尋址寄存器。 dir : 8 位直接字節(jié)地址(片內(nèi) RAM 和 SFR ) #data: 8位立即數(shù),即8位常數(shù)??梢詾?進(jìn)制(B)、 10進(jìn)制、16進(jìn)制(H)、 字符( ) #data16: 表示16位立即數(shù),即16位常數(shù),取值范圍為: #0000H#0FFFFH addr16 : 表示16位地址 addr11 : 表示11位地址 rel : 相對偏移量(為一字節(jié)補(bǔ)碼)用于相對轉(zhuǎn)移指令中 bit : 位地址,在位地址空間中。 $: 表示當(dāng)前指令的地址,指令中直接給出操作數(shù)的尋址方式。在51系列單片機(jī)的指令系統(tǒng)中,立即數(shù)用一個前面加 “#”號的8位數(shù)(#data,如#30H)或16位數(shù)(#d
3、ata16,如#2052H)表示。立即尋址中的數(shù),稱為立即數(shù)。 例如指令:MOV A,#58H;58HA,3.1 尋址方式3.1.1 立即尋址,操作數(shù)的地址直接出現(xiàn)在指令中。 尋址對象: 內(nèi)部數(shù)據(jù)存貯器:使用它的地址。 特殊功能寄存器:既可使用它的地址,也可以直接使用寄存器名。 位地址空間 程序存儲器空間 例:MOV A,40H ;(40H)A MOV 40H,41H ;(41H)(40H) MOV P0,#45H ; 45HP0 MOV 80H,#45H ; 45HP0 MOV C,18H ; 位地址18HC,3.1.2 直接尋址,操作數(shù)存放在寄存器中。 尋址對象:A,B,C,DPTR,R0
4、R7 。 B僅在乘除法指令中為寄存器尋址,在其他指令中為直接尋址。 A可以寄存器尋址又可以直接尋址,直接尋址時寫作ACC 例如:MOV A,R0 ;R0A MUL AB ;A*BBA ADD A,ACC ;A+AA,3.1.3 寄存器尋址,操作數(shù)存放在以寄存器內(nèi)容為地址的單元中,用做間址的寄存器為Ri(i=0,1)、DPTR。 對片內(nèi)的間接尋址用Ri(i=0,1) 如: MOV R0,#20H MOV R0,A ;A(20H) 對片外的間接尋址可用Ri(i=0,1)或DPTR 如: MOVX DPTR,A ;A以DPTR的內(nèi)容為地址的外部RAM中 MOVX R1,A ;A以P2 R1內(nèi)容為地址
5、的外部RAM中 PUSH和POP指令的源操作數(shù)是以SP間接尋址 注意:寄存器間接尋址不能訪問SFR MOV R1,#81H MOV A,R1 ;不能訪問SP,只能用 MOV A,SP,3.1.4 寄存器間址,變址尋址只能訪問程序存儲器。操作數(shù)所在位置的地址由DPTR或PC寄存器與A的內(nèi)容相加后形成。其中累加器A內(nèi)容是可變的。變址尋址只有三條指令。 MOVC A, A+DPTR ;(A+DPTR)A MOVC A, A+PC ;(A+PC)A JMP A+DPTR ;A+DPTRPC 注意:A的內(nèi)容是無符號數(shù)。 PC值是指令的當(dāng)前PC值,即下條指令的PC值,3.1.5 變址尋址,3.1.6 相對
6、尋址,變址尋址只能訪問程序存儲器。相對尋址是將程序計數(shù)器PC的當(dāng)前值與指令第二字節(jié)給出的偏移量相加,從而形成轉(zhuǎn)移的目標(biāo)地址。 如:JZ 61H 注意: 相對偏移量是一字節(jié)有符號數(shù),用補(bǔ)碼表示,偏移范圍是:-128+127。 PC值是指令的當(dāng)前PC值,即下條指令的PC值。 源程序中偏移量常用符號地址表示,對可位尋址的位地址尋址。包括片內(nèi)RAM的位地址空間和可位尋址的SFR(地址能被8整除) 如:MOV C,20H ;位尋址 MOV A,20H ;字節(jié)尋址 以上兩條指令究竟是位尋址還是字節(jié)尋址,根據(jù)兩操作數(shù)類型一致的原則,由另一個操作數(shù)決定,3.1.7 位尋址,尋址方式與存儲空間的對應(yīng)關(guān)系,內(nèi)部R
7、AM、SFR之間的傳送MOV指令,3.2 指令系統(tǒng)3.2.1 數(shù)據(jù)傳送與交換指令,例 R1=20H,(20H)=55H, MOV A,R1 執(zhí)行后,A=55H。 例 (40H)=30H, MOV R7,40H 執(zhí)行后,R7=30H。 例 MOV R7,40H 執(zhí)行后,R7=40H,注意: 寄存器之間無傳送; 寄存器間址和寄存器之間無傳送; 立即數(shù)不能做目標(biāo)地址,2. 外部存儲器和A累加器之間的傳送,MOVX,MOVC,利用 MOVX 實現(xiàn)片外數(shù)據(jù)存儲器數(shù)據(jù)傳送 (2000H)(2100H,MOV DPTR,#2000H MOVX A,DPTR MOV DPTR,#2100H MOVX DPTR
8、,A,DPTR= 2000H,DPTR= 2100H,A X,2100H) X,x,片外數(shù)據(jù)存儲器不能直接尋址。下列為非法指令: MOVX A,2000H MOVX 2100H,2000H,利用Ri間址來實現(xiàn)將(2000H)(2100H) MOV P2,#20H;高位地址 MOV R0,#00 ;低位地址 MOVX A,R0;讀片外RAM MOV P2,#21H;改變高位地址 MOVX R0,A;寫片外RAM,利用 MOVC 指令實現(xiàn)查表功能注:只能從程序存儲器讀取數(shù)據(jù)到A累加器。 只能使用變址間接尋址方式,1)DPTR為基址寄存器 MOVC A,A+DPTR ;A(A+DPTR) 查表范圍為
9、 64KB 程序存儲器任意空間,2)PC為基址寄存器 MOVC A,A+PC;A (A+PC) 常數(shù)表只能在查表指令后 256B 范圍內(nèi),例 查表法求 Y=X2。設(shè) X(0X15)在片內(nèi) RAM 20H單 元,要求將查表求 Y,存入片內(nèi) RAM 21H單元,1)用DPTR作基址寄存器 ORG 0100H SQU: MOV DPTR,#TAB ;確定表首地址 MOV A,20H ;取 X MOVC A,A+DPTR ;查表求 Y=X2 MOV 21H,A ;保存Y RET ;子程序結(jié)束 ;其它程序段,ORG 0200H ;常數(shù)表格首地址 TAB: DB 00,01,04,09,225 ;平方表,
10、指令地址 源程序 ORG 0100H;程序起始地址 0100HSQU: MOV A,20H;取X 0102H ADD A,#3;修正偏移量 0104HMOVC A,A+PC ;查表求Y=X2 0105H MOV 21H,A;存結(jié)果 0107HRET ;子程序結(jié)束 0108HTAB: DB 00,01,04 ;平方表 010BHDB 09,225,思考題:當(dāng)0X255時,如何用查表法編程求Y=X2,2)用PC作基址寄存器,3.交換指令 實現(xiàn)片內(nèi)RAM區(qū)的數(shù)據(jù)雙向傳送 1) 字節(jié)交換指令 XCH A,Rn ;ARn XCH A,Ri ;A(Ri) XCH A,dir ;A(dir) 2) 半字節(jié)交
11、換指令 XCHD A,Ri ;A03(Ri)03 SWAP A ;A47A03,4. 堆棧操作指令 入棧指令:PUSH dir ;SPSP+1,(SP)(dir ) 出棧指令:POP dir ;(dir )(SP),SPSP-1,1. 以A為目的操作數(shù)的算術(shù)、邏輯運算指令(24條,3.2.2 算術(shù)運算和邏輯運算指令,2. 以dir為目的操作數(shù)邏輯運算指令(6條,與 ANL 或 ORL 異或 XRL,3. 加1、減1指令,4. 十進(jìn)制調(diào)整指令 DA A ;僅對存于A中的加法結(jié)果進(jìn)行十進(jìn)制調(diào)整,若需完成十進(jìn)制減法運算,則應(yīng)變減法運算為補(bǔ)碼的加法運算即可,其減數(shù)X的補(bǔ)碼通過 (99-X)+1再DA
12、A后得到,原則:和低4位大于9或有半進(jìn)位,則低4位加6 和高4位大于9或有 進(jìn)位,則高4位加6,例:(DATA)-(DATA+1)=(DATA+2) Y-X=Y-X+100 - 有效位為2位十進(jìn)制,模為100 =Y+(99-X)+1,5. 乘、除法指令,MUL AB,ABBA,DIV AB,AB商在A中,余數(shù)在B中,6. 專對A的指令,CPL A,CLR A,0 A,MOV A,#99H DA A CLR C ADD A,DATA SUBB A,DATA+1 DA A ADD A,#1 MOV DATA+2,A,RR A,RL A,RLC A,RRC A,移位指令(僅對 A,1.調(diào)用程序和返回
13、類指令 1)長調(diào)用 LCALL addr16 ;addr16PC015 指令功能同80X86中的CALL,調(diào)用范圍64KB全部空間,指令的機(jī)器碼為三字節(jié)。 2)短調(diào)用 ACALL addr11 ;addr11PC010 指令的功能同前,主要區(qū)別為: addr11PC010,而PC1115保持原值不變,故其調(diào)用范圍為2KB,即子程序入口距當(dāng)前PC不得超過2KB地址范圍。本指令的機(jī)器碼為二字節(jié),3.2.3 控制轉(zhuǎn)移類指令,3)子程序返回指令(從棧頂彈出斷點到PC) RET ;從調(diào)用子程序返回。 RETI ;從中斷服務(wù)程序返回并恢復(fù) 中斷優(yōu)先級狀態(tài)觸發(fā)器。 2. 轉(zhuǎn)移指令 1)無條件轉(zhuǎn)移指令 (1)
14、短轉(zhuǎn)移 AJMP addr11 ;addr11PC010 轉(zhuǎn)移范圍:2KB 機(jī)器碼為2字節(jié),2)長轉(zhuǎn)移 LJMP addr16 ;addr16PC015 轉(zhuǎn)移范圍:64KB 機(jī)器碼為3字節(jié)。 (3)間接轉(zhuǎn)移 JMP A+DPTR ;A+DPTRPC 分析下列程序段,說出當(dāng)A分別為0和2時,程序轉(zhuǎn)置何處?該程序段的功能是什么? MOV DPTR,#TABLE JMP A+DPTR TABLE: AJMP PROC0 AJMP PROC1 AJMP PROC2 AJMP PROC3,4)無條件相對轉(zhuǎn)移 SJMP rel ;PC+relPC, 即As2relPC,機(jī)器碼為2字節(jié) As為源地址(本指令
15、的首地址),執(zhí)行本指令時當(dāng)前PCAs+2,rel 為轉(zhuǎn)移的偏移量,轉(zhuǎn)移可以向前轉(zhuǎn)(目的地址小于源地址),也可以向后轉(zhuǎn)(目的地址大于源地址),因此偏移量rel 是 1 字節(jié)有符號數(shù),用補(bǔ)碼表示(128127),所以指令轉(zhuǎn)移范圍在離源地址As的126129字節(jié)之間,2)條件轉(zhuǎn)移指令 (1)累加器為零(非零)轉(zhuǎn)移 JZ/JNZ rel ;A=0/(A0) 則轉(zhuǎn)移,否則順序 執(zhí)行程序 (2)減 1 不等于零轉(zhuǎn)移 DJNZ Rn/dir,rel 功能為:Rn(dir)-1Rn(dir) 相減結(jié)果0轉(zhuǎn), 否則順序執(zhí)行程序,3)比較轉(zhuǎn)移指令 CJNE A,dir,rel CJNE A,#data,rel C
16、JNE Rn,#data,rel CJNE Ri,#data,rel,操作數(shù)1不等于操作數(shù)2則轉(zhuǎn),否則順序執(zhí)行,1,MOV DATA+2,#0FFH MOV A,DATA CJNE A,DATA+1,NEXT NEXT: JC NEXT1 MOV DATA+2,#1 NEXT1:RET,1. 位傳送指令 MOV C,bit ;(bit)CY MOV bit,C ;CYbit 2. 位狀態(tài)控制指令 CLR C ;0CY CLR bit ;0bit SETB C ;1CY SETB bit ;1bit CPL C ;CYCY CPL bit ;bitbit,3.2.4 位操作指令,4.位轉(zhuǎn)移 位轉(zhuǎn)
17、移根據(jù)位的值決定轉(zhuǎn)移,均為相對轉(zhuǎn)移指令。 JC rel ;CY=1,則轉(zhuǎn)移,否則順序執(zhí)行程序 JNC rel ;CY=0, 則轉(zhuǎn)移,否則順序執(zhí)行程序 JB bit,rel ;(bit)=1,則轉(zhuǎn)移,否則順序執(zhí)行程序 JNB bit,rel ;(bit)=0,則轉(zhuǎn)移,否則順序執(zhí)行程序 JBC bit,rel ;(bit)=1,則轉(zhuǎn)移,且該位清零,否則 順序執(zhí)行程序,1.定義: 匯編控制指令,沒有指令代碼,不能被CPU執(zhí)行,只用于匯編過程,為匯編程序提供匯編信息。 2.常用偽指令 (1)ORG ORG是設(shè)置起始地址偽指令,其格式是: ORG16位地址或標(biāo)號 (2)END END是結(jié)束匯編偽指令,其
18、格式是: END (3)DB DB是定義字節(jié)偽指令,其格式是: 標(biāo)號: DB 字節(jié)型數(shù)表 (4)DW DW是定義字偽指令,其格式是: 標(biāo)號:DW 字型數(shù)表,3.3 偽指令,5)DS DS是定義存儲空間偽指令,其格式是: 標(biāo)號:DS 表達(dá)式 (6)EQU EQU是賦值偽指令,其格式是: 字符名稱EQU數(shù)據(jù)或匯編符號 (7)DATA DATA是數(shù)據(jù)地址賦值偽指令,其格式是: 字符名稱DATA表達(dá)式 (8)BIT BIT是位地址賦值偽指令,其格式是: 字符名稱BIT位地址 詳見表3.3 MCS-51中的偽指令,進(jìn)制間的轉(zhuǎn)換,1.十進(jìn)制二進(jìn)制(整數(shù),任何十進(jìn)制數(shù)有: dn-110n-1 dn-210n
19、-2 d1101 d0100 (dn-110 dn-2)10 d1)10 d0,規(guī)律: di10 di-1 (i=1,2,n-1,按二進(jìn)制運算規(guī)則運算則得二進(jìn)制數(shù),3.4 程序設(shè)計舉例,例:將位十進(jìn)制數(shù)D3D2D1D0轉(zhuǎn)換成二進(jìn)制數(shù),設(shè)位 十進(jìn)制數(shù)D3D2D1D0按分離BCD碼形式存放,要求結(jié) 果的高位存放在R3中,結(jié)果的低位存放在R2中,方法:D3D2D1D0=(010+D3)10+D2)10D1)10+D0 結(jié)果:16位二進(jìn)制數(shù),流程,MOVA,R2 MOVB,#0AH MULAB MOVR2,A MOVA,B XCHA,R3 MOVB,#0AH MULAB ADDA,R3 MOVR3,A
20、 RET,MUL10,結(jié)果單元乘10子程序,由于4位10進(jìn)制(9999)小于16位2進(jìn)制(65535),所以轉(zhuǎn)換結(jié)果不會大于16位,MOV R0,#DATA MOV R7,#03H MOV A,R0 MOV R2,A MOV R3,#0 ACALL MUL10 INC R0 MOV A, R0 ADD A,R2 MOV R2,A,MOV A,R3 ADDC A,#0 MOV R3,A DJNZ R7,BCDB1 RET,BCDB,BCDB1,2. 十進(jìn)制二進(jìn)制(小數(shù),10進(jìn)制乘2取整(取溢出,例:0.625 = 2-1+2-3 = 0.10100000B,a.小數(shù)點位數(shù)由乘2次數(shù)定,結(jié)果單元字節(jié)數(shù) 也由此定,b.第一次的整數(shù)權(quán)最高=2-1,c.乘2是10進(jìn)制的乘2,自身相加再DA A調(diào)整,D = b-12-1+ b-22-2b-m2-m,例:設(shè)入口時10進(jìn)制數(shù)在A中,要求結(jié)果放在R2中(8位二進(jìn)制小數(shù),BCDBP: MOV R2,#0 MOV R6,#8 BCDBP1:ADD A,ACC DA A XCH A,R2 RLC A XCH A,R2 DJNZ R6,BCDBP1 RET,結(jié)果單元清0,次數(shù)初始,102,將整數(shù)移入結(jié)果單元,溢出在進(jìn)位位中,3. 二進(jìn)制十進(jìn)制(整數(shù),按權(quán)展開,以8位為例: b
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 北京聘用合同范本
- 個人茶店轉(zhuǎn)讓合同范本
- 合同甲乙方調(diào)換合同范本
- 業(yè)務(wù)合作協(xié)議
- 勞動合同范本 薪
- 原油中介合同范例
- 農(nóng)村養(yǎng)殖合同范本
- 印花委托加工合同范本
- 分批到貨付款合同范本
- 加盟養(yǎng)豬合同范本
- 流體輸送實訓(xùn)裝置操作規(guī)程
- 上市公司組織架構(gòu)策略
- extreme-sports 極限運動 英文 ppt
- 國際注冊建造師與項目管理師雙資格認(rèn)證
- 面癱護(hù)理查房
- 財政部金融企業(yè)不良資產(chǎn)批量轉(zhuǎn)讓管理辦法(財金[2012]6號)
- 精品資料(2021-2022年收藏)建筑立面裝飾設(shè)計技術(shù)導(dǎo)則
- 倉庫管理警示標(biāo)語
- ISO9001質(zhì)量管理體系目錄結(jié)構(gòu)
- 5米對數(shù)視力表及E尺寸標(biāo)準(zhǔn)A4
- 十三五全國眼健康規(guī)劃(2016-2020年)終期自評報告
評論
0/150
提交評論