




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第三章 MCS-51指令系統第一節 指令系統概述一、指令類型一、指令類型MCS-51指令系統: 數據傳送指令 算術運算指令 邏輯運算指令 位操作指令 控制轉移指令 二、指令格式二、指令格式操作碼 操作數1,操作數2,操作數3 操作碼:表示指令進行何種操作。 操作數:指出了參加操作的數據或數據存放的地址。 操作數和操作碼之間用一個或幾個空格隔開,操作數之間以逗號“,”分開。 三、偽指令三、偽指令不產生機器語言指令,僅提供匯編控制信息。1定位偽指令 ORG m m:代表16位地址。 功能:指出匯編語言程序通過編譯,得到的機器語言程序的起始地址。2定義字節偽指令 DB X1,X2,Xn Xi:單字節
2、數據。它為十進制或十六進制數,也可以為一個表達式。Xi也可以為由兩個單引號“”所括起來的一個字符串 ,每一個字符為一個ASCII碼。 功能:X1,X2,Xn 送目標程序存儲器,通常用于定義一個常數表。3字定義偽指令 DW Y1,Y2,Yn Yi:雙字節數據。它可以為十進制或十六進制的數,也可以為一個表達式。 功能:Y1,Y2,Yn送目標程序存儲器,經常用于定義一個地址表。4匯編結束偽指令 END 功能:匯編結束標志。5標號和注釋 標號:操作碼 操作數1,操作數2,操作數3;注釋 標號:加在指令之前,必須以字母開始,后跟18個字母或數字,并以冒號“:”結尾。標號的值是它后面的指令存儲地址。 注釋
3、:對某一條指令或某一段程序的功能說明,它必須以分號“;”開始 。四、常用的縮寫符號四、常用的縮寫符號A 累加器ACC。AB 累加器ACC和寄存器B組成的寄存器對。C 進位標志位CY,也是位操作指令中的位累加器。Rn 表示當前選中的通用寄存器R0R7(n=07)。Ri 表示通用寄存器中可用作8位地址指針的R0和R1(i=0,1)。direct 直接地址,取值為00FFH。data 立即數,表示一個常數。 間接尋址。addr 表示外部數據存儲器的地址。bit 表示內部RAM或特殊功能寄存器中的直接位地址。 寄存器。() 寄存器內容。() 由X寄存器尋址的存儲器單元內容。() 寄存器的內容取反。rr
4、r 指令編碼中rrr三位值由工作寄存器Rn確定,R0R7對應rrr為 000111。 指本條指令起始地址。rel 相對偏移量,其值為128+127。第二節 尋址方式尋址方式:指令給出參與運算的數據的方式。一、寄存器尋址一、寄存器尋址 指令指出某一個寄存器的內容作為操作數。 尋址空間:R0R7 A、B、C、AB、DPTR二、直接尋址二、直接尋址 在指令中含有操作數的直接地址,該地址指出了參與運算或傳送的數據所在的字節單元或位的地址。 直接尋址方式訪問以下三種存儲空間: 特殊功能寄存器(特殊功能寄存器只能用直接尋址方式訪問)。 內部數據存儲器的低128字節。 位地址空間。 三、寄存器間接尋址三、寄
5、存器間接尋址 指令指出某一個寄存器的內容作為操作數的地址。尋址空間:內部RAM(R0、R1、SP) 外部數據存儲器(R0、R1、DPTR)四、立即尋址四、立即尋址 立即尋址方式中操作數包含在指令字節中,即操作數以指令字節的形式存放于程序存儲器中。五、基寄存器加變址寄存器間接尋址五、基寄存器加變址寄存器間接尋址 以16位的程序計數器PC或數據指針DPTR作為基寄存器,以8位的累加器A作為變址寄存器,基寄存器和變址寄存器的內容相加形成16位的地址,該地址即為操作數的地址。 尋址空間:程序存儲器(A+PC、A+DPTR) 六、相對尋址六、相對尋址 相對尋址方式是為實現程序的相對轉移而設計的,為相對轉
6、移指令所采用。目的地址:PC值+轉移指令字節數+relPC值:執行完該轉移指令后的PC值 。rel:帶符號的8位二進制補碼數,所能表示的數的范圍是128+127 。第三節 數據傳送指令 MOV , 數據傳送指令是指把源操作數傳送到目的操作數。指令執行后,源操作數的值不改變,目的操作數的值改為源操作數賦給的相應值。 除以累加器A為目的操作數寄存器指令會對奇偶標志位P有影響外,其余指令執行時均不會影響任何PSW的標志位。 一、內部數據傳送指令一、內部數據傳送指令1以累加器A為目的操作數的指令 MOV A,Rn ;n=07 MOV A,direct MOV A,Ri ;i=0,1 MOV A,#da
7、ta功能:把源操作數的內容送入累加器A。2以Rn為目的操作數的指令 MOV Rn,A ;n=07 MOV Rn,direct MOV Rn,#data功能:把源操作數的內容送入當前工作寄存器區的R0R7中的某一個寄存器。 3以直接尋址的單元為目的操作數指令 MOV direct,A MOV direct,Rn ;n=07 MOV direct,direct MOV direct,Ri ;i=0、1 MOV direct,#data功能:把源操作數送入由直接地址指出的存儲單元。4以寄存器間接尋址的單元為目的操作數指令 MOV Ri,A ;i=0、1 MOV Ri,direct MOV Ri,#d
8、ata功能:把源操作數內容送入R0或R1指出的內部RAM存貯單元中。516位數據傳送指令 MOV DPTR,#datal6功能:把16位常數送入DPTR。6堆棧操作指令內部RAM中可以設定一個后進先出(LIFO)的堆棧 。 (1)進棧指令 PUSH direct功能:首先將堆棧指針SP加1,然后把直接地址指出的內容傳送到堆棧指針SP尋址的內部RAM單元中。 (2)退棧指令 POP direct功能:堆棧指針SP尋址的內部RAM單元內容送入直接地址指出的字節單元中,堆棧指針SP減1。7字節交換指令 XCH A,Rn ;n=07 XCH A,direct XCH A,Ri ;i=0、1功能:將累加
9、器A的內容和源操作數內容相互交換。 8半字節交換指令 XCHD A,Ri ;i=0、1功能:將A的低4位和R0或R1指出的RAM單元低4位相互交換,各自的高4位保持不變。 二、累加器二、累加器A與外部數據存儲器傳送指令與外部數據存儲器傳送指令 MOVX A,DPTR MOVX A,Ri ; i=0,1 MOVX DPTR,A MOVX Ri,A功能:將累加器A和外部擴展的RAMIO口的數據傳送。三、查表指令三、查表指令 1MOVC A,A+PC功能:以PC作為基址寄存器,A的內容作為無符號數和PC內容(下一條指令的始地址)相加后得到一個16位的地址,由該地址指出的程序存儲器單元內容送到累加器A
10、。 2MOVC A,A十DPTR功能:以DPTR作為基址寄存器,A的內容作為無符號數和DPTR的內容相加得到一個16位的地址,由該地址指出的程序存儲器單元的內容送到累加器A。 第四節 算術運算指令 算術運算指令有加、減、乘、除法指令,增量和減量指令。一、加法指令一、加法指令1不帶進位的加法指令 ADD A,Rn ; n=07 ADD A,direct ADD A,Ri ; i0、1 ADD A,#data 功能: 把所指出的第二操作數和累加器A的內容相加,其結果放在累加器中。 指令執行后,影響PSW標志位。 2帶進位加法指令 ADDC A,Rn ;n=07 ADDC A,direct ADDC
11、 A,Ri ;i=0、1 ADDC A,#data功能: 同時把所指出的第二操作數、進位標志與累加器A內容相加,結果放在累加器中。 指令執行后,影響PSW標志位。3增量指令 INC A INC Rn ;n=07 INC direct INC Ri ;i=0、1 INC DPTR功能: 把指令所指出的操作數加1。 除對A作影響P外不影響任何PSW標志。4十進制調整指令 DA A功能:對累加器A中由上一條加法指令(加數和被加數均為壓縮的BCD碼)所獲得8位結果進行調整,使它調整為壓縮BCD碼的數。 二、減法指令二、減法指令1帶進位減法指令 SUBB A,Rn ;n=07 SUBB A,direct
12、 SUBB A,Ri ;i=0、1 SUBB A,#data功能: 從累加器中減去第二操作數和進位標志,結果在累加器中。 指令執行后,影響PSW標志位。 2減1指令 DEC A DEC Rn ;n=07 DEC direct DEC Ri ;i=0、1功能: 將指定的操作數減1。 除對A作影響P外不影響任何PSW標志。 三、乘法指令三、乘法指令 MUL AB功能:把累加器A和寄存器B中的8位無符號整數相乘,其16位積的低位字節在累加器A中,高位字節在B中。 如果積大于255(0FFH),則置位溢出標志OV;否則清“0”OV。進位標志CY總是清“0” 。四、除法指令四、除法指令 DIV AB功能
13、:把累加器A中的8位無符號整數除以寄存器B中的8位無符號整數,所得商的整數部分存放在累加器A中,余數在寄存器B中。 如果原來B中的內容為0,即除數為0,則結果A和B中內容不定,并置位溢出標志OV。在任何情況下,都清“0”CY。 第五節 邏輯運算指令 一、累加器一、累加器A的邏輯操作指令的邏輯操作指令 1CLR A功能:將累加器A清“0”,不影響CY、AC、OV等標志。 2CPL A功能:將累加器ACC的每一位邏輯取反。不影響標志。 3左環移指令 RL A 4帶進位左環移指令 RLC A 5右環移指令 RR A 6帶進位右環移指令 RRC A 7累加器ACC半字節交換指令 SWAP A功能:將累
14、加器ACC的高半字節(ACC.7ACC.4)和低半字節(ACC.3ACC.0)互換。 二、兩個操作數的邏輯操作指令二、兩個操作數的邏輯操作指令 1邏輯與指令 ANL A,Rn ;n=07 ANL A,direct ANL A,Ri ;i=0、1 ANL A,#data ANL direct,A ANL direct,#data 功能:操作數之間執行按位的邏輯與操作,結果存放在目的操作數中。 2邏輯或指令 ORL A,Rn ;n=07 ORL A,direct ORL A,Ri ;i=0、1 ORL A,#data ORL direct,A ORL direct,# data功能:操作數之間執行
15、按位的邏輯或操作,結果存到目的操作數中去。 3邏輯異或指令 XRL A,Rn ;n=07 XRL A,direct XRL A,Ri ;i=0、1 XRL A,#data XRL direct,A XRL direct,#data功能:操作數之間執行按位的邏輯異或操作,結果存放到目的操作數中去。 第六節 位操作指令 進位位CY(程序狀態字PSW.7)作為累加器C,以RAM和SFR內的位尋址區的位單元作為操作數,進行位變量的傳送、修改和邏輯等操作。 一、位變量傳送指令 MOV C,bit MOV bit,C 二、位變量修改指令 CLR C CLR bit CPL C CPL bit SETB C
16、 SETB bit 三、位變量邏輯操作指令三、位變量邏輯操作指令 1位變量邏輯與指令 ANL C,bit ANL C,bit功能:如果源位的布爾值是邏輯0,則進位標志清“0”,否則進位標志保持不變。操作數前斜線“”表示用尋址位的邏輯非作源值,但不影響源位本身值,不影響別的標志。 2位變量邏輯或指令 ORL C,bit ORL C,bit功能:如果源位的布爾值為1,則置位進位標志,否則進位標志CY保持原來狀態。同樣,斜線“”表示邏輯非。第七節 控制轉移指令一、無條件轉移指令一、無條件轉移指令1短跳轉指令AJMP addr11指令編碼: a10a9a800001 a7a6a5a4a3a2a1a0功
17、能:2KB字節范圍內的無條件轉跳指令,程序轉移到指定的地址。 該指令在運行時先將PC+2,然后通過把PC的高5位和指令第一字節高3位以及指令第二字節相連(PC15PC14PC13PC12PC11a10a9a8a7a6a5a4a3a2a1a0)而得到轉跳目的地址送入PC。 2相對轉移指令 SJMP rel功能:無條件轉跳指令,執行時在PC加2后,把指令的有符號的偏移量rel加到PC上,并計算出轉向地址。因此,轉向的目標地址可以在這條指令前128字節到后127字節之間。 3長跳轉指令 LJMP addrl6功能:把指令提供的16位目標地址送入PC,無條件地轉向指定地址。轉移的目標地址可以在64K字
18、節程序存儲器地址空間的任何地方,不影響任何標志。 4基寄存器加變址寄存器間接轉移指令(散轉指令) JMP A+DPTR功能:把累加器A中8位無符號數與數據指針DPTR中的16位數相加(模216),結果作為下條指令地址送入PC,不改變累加器和數據指針內容,也不影響標志。 實現程序的散轉。二、條件轉移指令二、條件轉移指令 條件滿足才轉移(相當于執行一條相對轉移指令),條件不滿足時則順序執行下面的指令。 轉移目的地址 =下一條指令的第一個字節地址 PC+相對偏移量 rel 1測試條件符合轉移指令 JZ rel ;(A)=0 JNZ rel ;(A)0 JC rel ;CY=1 JNC rel ;CY
19、=0 JB bit, rel ;(bit)=1 JNB bit, rel ;(bit)=0 JBC bit, rel ;(bit)=1 (轉移后清洗直接尋址位)2比較不相等轉移指令 CJNE A, direct, rel CJNE A, #data, rel CJNE Rn, #data, rel ;n=17 CJNE Ri,#data,rel ;i=0 、1功能: 比較兩個操作數的大小。如果它們的值不相等,則轉移。 轉移目的地址 =下一條指令的第一個字節地址 PC+相對偏移量 rel 如果第一操作數(無符號整數)小于第二操作數,則置位進位標志CY;否則,CY清0。 不影響任何一個操作數的內容
20、。 3減1不為0轉移指令 DJNZ Rn, rel ;n=17 DJNZ direct,rel 功能: 源操作數減1,結果回送到源操作數中去。 如果結果不為0,則轉移。 轉移目的地址 =下一條指令的第一個字節地址 PC+相對偏移量 rel 利用內部RAM單元作程序循環計數器。 三、調用和返回指令三、調用和返回指令 主程序和子程序結構主程序二次調用子程序示意圖主程序二次調用子程序示意圖 二級子程序嵌套示意圖二級子程序嵌套示意圖 調用和返回 子程序是獨立于主程序的具有特定功能的程序段,單獨編寫,能被主程序調用,又能返回主程序。 堆棧和PC值的保留 調用子程序時,CPU自動自動將當前PC值保留在堆棧
21、中,子程序返回時,自動彈出,送入PC。 現場保護和恢復現場 現場保護:子程序開始時,保護現場。 恢復現場:在子程序返回前,恢復現場。 1短調用指令 ACALL addr11 指令編碼: a10a9a810001 a7a6a5a4a3a2a1a0功能: (PC)+ 2 PC,并壓入堆棧,先PCL,后PCH,(SP)+2SP。 子程序入口地址= PC15PC14PC13PC12PC11a10a9a8a7a6a5a4a3a2a1a0PC 2長調用指令 LCALL addrl6功能: (PC)+ 3 PC,并壓入堆棧,先PCL,后PCH,(SP)+2SP。 addr16 PC,獲得子程序起始地址 3返
22、回指令(1)從子程序返回指令 RET 功能:從堆棧中退出PC的高位和低位字節,把棧指針SP減2,并從產生的PC值開始執行程序。(2)從中斷返回指令 RETI功能:從堆棧中退出PC的高位和低位字節,棧指針減2,同時清除中斷優先,開放低級中斷。 4空操作指令 NOP功能: CPU不做任何操作,只作時間上的消耗。常用于程序的等待或時間的延遲。第八節 匯編語言程序設計舉例一、匯編語言程序的結構一、匯編語言程序的結構1、程序設計的基本步驟(1)分析題意,明確要求;(2)建立思路,確定算法;(3)編制框圖,繪出流程;(4)編寫程序,上機調試。2、畫流程圖二、延時程序二、延時程序例1 延時程序。 DEL:
23、MOV R7,#200 ;1T DELl: MOV R6,#125 ; 1T DEL2:DJNZ R6,DEL2 ; 2T DJNZ R7,DEL1 ; 2T RET ; 2Tfosc=12MHz晶振時,T=1s。這段程序的延遲時間為:(250+1+2)200+1+2=50.303ms。 三、查表程序三、查表程序例例2 設設a、b為小于為小于10的正整數。試編程計算的正整數。試編程計算C=a2+b2的函數值,存入的函數值,存入30H中。中。a、b的值已存放在的值已存放在40H、41H單元中。單元中。 MOV A,40H ACALL SUB3 ;查表得a2的值 MOV R2,A MOV A,41
24、H ACALL SUB3 ;查表得b2的值 ADD A,R2 MOV 30H,A SJMP $SUB3: INC A MOVC A,APC RET DB 00H,01H,04H,09H,10H, 19H,24H,31H,40H,51H四、數制轉換四、數制轉換一個整數的十進制表示式為:A=an10n+a1101+a0例如:5731=5103+7102+3101+1 =(510+7)10+310+1編寫程序形式: 初值: Yn= an, i=n-1 Y=YX+ai i=i-1結束條件:i0例例3 4位十進制整數轉換位十進制整數轉換為二進制整數程序。為二進制整數程序。 設單字節BCD碼a3,a2,a1,a0依次存放于內部RAM中的50H53H單元,轉換成的二進制整數存放于R3R4。 IDTB:MOV R0, #50H MOV R2, #3 MOV R3, #0 MOV A, R0 MOV R4, A L00P:MOV A, R4 MOV B, #10 MUL AB MOV R4, A ;R410低8位 MOV A,B XCH A, R3 MOV B #10 MUL AB ADD A,R3 MOV R3,A
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教版九年級上冊化學第六單元之2二氧化碳的制取教學設計
- 人教版八年級下冊生物7.2.4人的性別遺傳教學設計
- 三年級品德與社會下冊 學看平面圖教學設計1 人教新課標版
- 分數的產生和意義(教學設計)-2023-2024學年數學五年級下冊人教版
- 九年級化學上冊 8.2.1 二氧化碳的性質和用途教學設計 (新版)北京課改版
- 勞動鑄就夢想致敬勞動者-勞動節班會教學設計
- 信息技術“第二單元 第一節 獲取信息的渠道”的教學設計
- 測繪基礎知識培訓
- 人教部編版四年級下冊四時田園雜興(其二十五)教學設計
- 人教版八年級下冊歷史與社會綜合探究五探討乾隆盛世的危機教學設計
- 氣候風險與企業綠色創新
- 《廣西壯族自治區房屋建筑和市政基礎設施工程質量安全手冊實施細則(試行)》
- 基礎醫學題庫(含參考答案)
- 接觸網高空作業安全培訓
- 砌體工程事故及事故分析
- 《改善患者就醫體驗》課件
- 2024年中考語文試題分類匯編:非連續性文本閱讀(教師版)
- 中建質量樣板實施方案
- 20以內進位退位加減法計算題-
- 川教版四年級《生命.生態.安全》下冊全冊 課件
- 混凝土路面工程監理實施細則
評論
0/150
提交評論