第2章 單片機指令系統(tǒng)_第1頁
第2章 單片機指令系統(tǒng)_第2頁
第2章 單片機指令系統(tǒng)_第3頁
第2章 單片機指令系統(tǒng)_第4頁
第2章 單片機指令系統(tǒng)_第5頁
已閱讀5頁,還剩21頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

51單片機共有111條指令 分成6類 它的主要特點是 1 指令較短 最長的只有3個字節(jié) 所以執(zhí)行速度快 請看下面3條指令 第2章MCS51單片機的指令系統(tǒng) 2 功能強大 8位的乘除運算可用一條指令完成 3 位操作豐富 適于進行開關量的控制 4 片內(nèi)RAM統(tǒng)一編址 片外存儲器獨立編址 端口操作直接用傳送命令 MOV 使用方便 指令的構成 標號 操作碼目的操作數(shù) 源操作數(shù) 注釋AAA MOVA 20H 將立即數(shù)20H送累加器A 1 指令中的常用符號 Rn n 0 7 表示當前工作寄存器R0 R7中的一個Ri i 0 1 代表R0和R1寄存器中的一個 用作間接尋址寄存器 dir 8位直接尋址的字節(jié)地址 片內(nèi)RAM和SFR data 8位立即數(shù) 即8位常數(shù) 可以為2進制 B 10進制 16進制 H 字符 等 data16 表示16位立即數(shù) 即16位常數(shù) 取值范圍為 0000H 0FFFFHaddr16 表示16位地址addr11 表示11位地址rel 相對偏移量 為一字節(jié)補碼 用于相對轉移指令中bit 位地址 在位地址空間中 表示當前指令的地址 用來表示存儲單元的內(nèi)容 間接尋址的前綴A B C 分別是累加器 B寄存器和進位標志位 位操作時的取反前綴 2 2 1尋址方式尋址就是尋找操作數(shù)的地址 在計算機中 就是用來確定操作數(shù) 用什么方式從什么地方來找到所需要的操作數(shù) 尋址方式是衡量CPU的性能的重要指標之一 因為尋址方式的快捷就決定了執(zhí)行速度 尋址方式的多樣性就決定了編程的靈活程度 MCS51具有7種尋址方式 它們是 立即 直接 寄存器直接 寄存器間接 變址 相對和位尋址 1 立即尋址指令中直接給出操作數(shù)的尋址方式 在51系列單片機的指令系統(tǒng)中 立即數(shù)用一個前面加 號的8位數(shù) data 如 30H 或16位數(shù) data16 如 2052H 表示 立即尋址中的數(shù) 稱為立即數(shù) 立即數(shù)不能做源地址 例如 MOVA 30HMOVDPTR 1234H 3 3 寄存器尋址操作數(shù)存放在寄存器中 尋址空間 工作寄存器組和所有的SFR寄存器 A在使用PUSH POP指令的時候要記作ACC 例如 MOVA R0 R0 AMULAB A B BAINCDPTR DPTR 1 DPTRPUSHACC 將ACC壓入堆棧 2 直接尋址操作數(shù)的地址直接出現(xiàn)在指令中 尋址空間 51系列片內(nèi)的128字節(jié)的RAM和SFR中的寄存器 對SFR操作的時候 既可使用它的地址 也可以直接使用寄存器名 52系列內(nèi)部RAM有256個字節(jié)時 80H之后的地址空間只能使用寄存器間接的方式來尋址 例如 MOV30H 40HMOVR5 DPH 等價于MOVR5 83H 4 4 寄存器間址 寄存器間接尋址 操作數(shù)存放在以寄存器內(nèi)容為地址的單元中 尋址空間 片內(nèi)RAM00H FFH的地址空間和片外數(shù)據(jù)存儲器0000H FFFFH的地址空間 可使用的寄存器只有DPTR和Ri 用它們之前要先把要尋的地址裝入這些寄存器中 凡是間接尋址的寄存器之前都要加 號來和直接尋址的方式區(qū)分 可用于間接尋址的寄存器只有工作寄存器組中的R0和R1 DPTR和SP SP是隱含的 不出現(xiàn)在指令中 當采用寄存器間接尋址方式時 由于片內(nèi)的存儲單元只有128個 所以只用R0或R1就夠了 如果是訪問外部存儲單元時 由于有16位地址 所以要先設置好P2高8位 再通過R0或R1送低8位 通過P0口 或者就由DPTR直接給出16位地址到P2和P0口來實現(xiàn)地址的查找 例如 MOVR0 20HMOV R0 A A 20H 地址的內(nèi)部RAMMOVXA R1 外部RAM 地址P2R1 的內(nèi)容 AMOVX DPTR A A 以DPTR內(nèi)容為地址的外部RAM 5 5 位尋址尋址空間 片內(nèi)RAM中20H 2FH中的128個位地址及SFR中的可位尋址的位地址尋址 通常把進位位C當作位操作的累加器 為直觀起見 當位地址有地址名時 建議選地址名做地址 例如 MOVC 20H 20H位的內(nèi)容送CY標志位 C稱為位累加器 MOV5FH CANLC P1 0SETBTR0CLR8CH由于位地址和字節(jié)地址相同 所以在編程的時候注意如何將其區(qū)分 一般的方法有3種 用地址的別名 別名是唯一的 所以不會弄錯且便于程序的閱讀 有專門的位操作指令 SETB CLR CPL 可憑借位指令的操作碼來區(qū)別 根據(jù)指令的操作數(shù) 是字節(jié)還是位來予以區(qū)分 例如 MOVC P0 0SETB20HMOV5FH P1 1 6 6 變址尋址主要用于程序存儲器的尋址 所以有專門的MOVC指令 它的尋址方法是將PC或DPTR作為基址 再加上作為偏移量的A寄存器的內(nèi)容 形成一個完整的16位的地址 將某程序存儲單元的內(nèi)容讀出 7 7 相對尋址主要用于各種跳轉 它的尋址方法是以當前的PC為基址 加上指令給出的一個字節(jié)的補碼 讓PC指針實現(xiàn)前跳或者后跳 由于跳轉指令自身有2字節(jié)或3字節(jié)之分 相對尋址的執(zhí)行是在跳轉指令執(zhí)行之后 所以通常計算的公式是 PC 2 3 指令給出的補碼 SJMP 13H 5112H 13H SJMP13H 片外ROM 5112H PC 2 5127H 執(zhí)行完后PC的位置 5112H 2 13H 5127H 8 2 2傳送與交換指令為了能簡潔地介紹指令功能和操作規(guī)則 采用圖解的方式來加以說明 先介紹符號及方法 箭頭 指出源操作數(shù)到目的操作數(shù)的方向 其上的英文是操作碼符圓框 累加器A或C的符號實線矩形框 操作數(shù)虛線操作數(shù) 表示立即數(shù)2 2 1傳送類指令MOV1 MOV 內(nèi)部RAM SFR之間的傳送指令 共18條 9 2 堆棧操作指令入棧指令 PUSHdir SP SP 1 SP dir 出棧指令 POPdir dir SP SP SP 1 SP 錯誤的 PUSHAPUSHDPTRPUSHR0PUSHR1 10 3 外部程序存儲器和A累加器之間的傳送 共2條 11 4 外部數(shù)據(jù)存儲器和A累加器之間的傳送 共4條 12 2 2 2數(shù)據(jù)交換指令 共5條 13 2 3邏輯運算和算術運算指令2 3 1對標志位的影響P標志僅對A操作的指令有影響 傳送類 加1 減1和邏輯運算指令不影響CY OV AC 加減運算影響OV CY P和AC 乘除指令使CY 0 當乘積大于255或除數(shù)為0 OV 1 2 3 2邏輯運算類指令 25條 14 2 3 3算數(shù)運算類指令 23條 Rn Ri direct data ADD ADDC SUBB ADD ADDC SUBB ADD ADDC SUBB INC DEC DA ADD ADDC SUBB B INCDEC INCDEC INCDEC MULDIV DPTR INC 1 乘除指令MULAB A B BADIVAB A B A 商 B 余數(shù) 2 十進制調整指令DA它只能對用BCD碼進行加法運算之后存放在累加器中的結果進行操作 它調整的規(guī)則如下 15 16 2 3 4綜合例子 17 18 2 4控制轉移指令 共23條 這一類指令的功能是改變指令的執(zhí)行順序 轉到指令指示的新的PC地址執(zhí)行 MCS 51單片機的控制轉移指令有以下類型 無條件轉移 無需判斷 執(zhí)行該指令就轉移到目的地址 條件轉移 需判斷標志位是否滿足條件 滿足條件轉移到目的地址 否則順序執(zhí)行 絕對轉移 轉移的目的地址用絕對地址指示 通常為無條件轉移 相對轉移 轉移的目的地址用相對于當前PC的偏差 偏移量 指示 通常為條件轉移 長轉移或長調用 16位 目的地址可以在整個64KB地址范圍內(nèi) 絕對轉移或絕對調用 11位 目的地址在當前的2KB地址范圍內(nèi) 短轉移 8位 目的地址距當前PC 128 127 地址范圍 上面轉移指令類型雖然多 功能都是轉移到新地址執(zhí)行 差別僅在于有條件還是無條件及目的地址在指令機器碼中的表現(xiàn)形式 實際源程序編程中 轉移的目的地址均是以符號地址表示 它對應機器碼會由編譯系統(tǒng)自行填入 19 2 4 1調用和返回指令1 長調用指令 LCALLAddr16 3字節(jié)指令 2 絕對調用指令 ACALLAddr11 2字節(jié)指令 它們都是絕對調用 只是一個調用的空間可達64K 16位地址 另一個只能在規(guī)定的2K 11位地址 的范圍內(nèi)調用 3 子程序返回指令 RET4 中斷子程序返回指令 RETI它們必須出現(xiàn)在子程序的結尾 執(zhí)行后從棧頂彈出斷點到PC 返回原來的斷點處繼續(xù)執(zhí)行 20 解 根據(jù)程序存儲區(qū)域的分布 0100H和0205H都位于0000H 0800H的第一個2K的區(qū)域 所以 只要入口為0205H的子程序的長度不超過800H的范圍 就可以使用ACALL的指令 2 4 2轉移指令1 無條件轉移指令 1 長轉移指令LJMPaddr16 2 絕對轉移指令AJMPaddr11 3 間接轉移 散轉 指令JMP A DPTR可以用它來實現(xiàn)多分支轉移 2 條件轉移指令根據(jù)右圖 很容易地可寫出相應的指令 JZrelJNZrelDJNZRn relDJNZdirect rel CJNE Ri data relCJNEA data relCJNERn data relCJNEA direct rel 21 2 4 3空操作指令NOP該指令經(jīng)取指 譯碼后不進行任何操作 空操作 而轉到下一條指令 常用于產(chǎn)生一個機器周期的延時 或上機修改程序時作填充指令 以方便增減指令 例1 試說明以下一段程序運行后A中的結果 MOV23H 0AHCLRALOOP ADDA 23HDJNZ23H LOOPSJMP 根據(jù)程序分析可知 A 10 9 8 7 6 5 4 3 2 1 55 37H 2 4 4應用舉例 例2 編寫程序 要求讀P1端口上的信息 若不為55H 則程序等待 直到P1端口為55H時 程序才往下繼續(xù)執(zhí)行 MOVA 55H A 55HCJNEA P1 P1 55H 則程序循環(huán)執(zhí)行 22 23 2 5位操作指令 MCS 51單片機的特色之一就是具有豐富的位處理功能 以進位標志CY為位累加器C 使得開關量控制系統(tǒng)的設計變得十分方便 在程序中位地址的表達有多種方式 用直接位地址表示 如D4H 用 操作符號表示 如PSW 4 或D0H 4用位名稱表示 如RS1 用用戶自定義名表示 如

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論