用備第3章指令_第1頁
用備第3章指令_第2頁
用備第3章指令_第3頁
用備第3章指令_第4頁
用備第3章指令_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2020 4 19 泉州信息學(xué)院 教學(xué)目的 熟悉80C51系列單片機的尋址方式及每一種尋址方式對應(yīng)的尋址空間 掌握每一條指令功能 教學(xué)重點 1 80C51系列單片機尋址方式所對應(yīng)的尋址空間 2 80C51系列單片機指令功能 教學(xué)難點 1 數(shù)據(jù)傳送類指令中對不同的存儲空間應(yīng)采用的傳送指令及尋址方式 2 間接尋址方式 第3章80C51系列指令系統(tǒng) 2020 4 19 泉州信息學(xué)院 3 1指令系統(tǒng)簡介 1 匯編指令格式助記符目的操作數(shù) 源操作數(shù) 注釋 例如 MOVA 40H 把40H送累加器A2 指令代碼格式指令代碼在程序存儲器中存放的數(shù)據(jù)形式 例如上條指令的指令代碼為 74H 40H 其中74H為操作碼 表達了指令的操作功能 40H為操作數(shù) 根據(jù)代碼長度 80C51單片機的指令有單字節(jié) 雙字節(jié)和三字節(jié)指令 按照指令執(zhí)行速度又可分為單周期 雙周期和四周期指令 80C51在基本時鐘為12MHz時 單周期指令執(zhí)行速度為1MIPS 2020 4 19 泉州信息學(xué)院 3 2尋址方式指令系統(tǒng)的尋址方式規(guī)定了操作數(shù)的訪問方式 80C51指令系統(tǒng)有寄存器尋址 直接尋址 間接尋址 立即尋址 基址變址尋址和相對尋址等七種尋址方式 3 2 1匯編指令中的符號約定Rn n 0 7 當(dāng)前選中的8個工作寄存器R0 R7 它在片內(nèi)數(shù)據(jù)存儲器中的地址由PSW中RSl RS0確定 Ri i 0或1 當(dāng)前選中的用于間接尋址的工作寄存器R0 R1 它在片內(nèi)數(shù)據(jù)存儲器中的地址由RS0 RS1確定 direct 8位直接地址 可以是片內(nèi)RAM單元地址或SFR地址 data8 8位常數(shù) datal6 16位常數(shù) 2020 4 19 泉州信息學(xué)院 addrl6 16位目的地址 尋址空間64K字節(jié)程序存儲器 addr11 11位目的地址 rel 補碼形式的8位地址偏移量 用于相對轉(zhuǎn)移指令中bit 位地址 片內(nèi)RAM或SFR的可尋址位的位地址 間接尋址寄存器的前綴 位操作數(shù)的取反操作前綴 以下符號僅出現(xiàn)在指令注釋或功能說明中 X 片內(nèi)RAM的直接地址 包含位地址 或寄存器 X 表示X中的內(nèi)容 X 在間接尋址方式中 表示由間址寄存器X指出的地址單元中的內(nèi)容 指令操作流程 將箭頭左邊內(nèi)容送入箭頭右邊的單元內(nèi) 2020 4 19 泉州信息學(xué)院 1 立即數(shù)尋址方式立即數(shù) 指令中的常數(shù) 直接參與指令操作 立即數(shù)前必須加 標(biāo)記 指令中的立即數(shù)有8位立即數(shù) data8和16位立即數(shù) data16 例1MOVA 3AH 立即數(shù)3AH送累加器A圖3 1MOVA 3AH執(zhí)行示意圖 2020 4 19 泉州信息學(xué)院 2 直接尋址方式 在這種尋址方式中 操作數(shù)項給出的是參加運算的操作數(shù)的地址 可尋址空間有特殊功能寄存器 內(nèi)部數(shù)據(jù)存儲器以及位地址 其中特殊功能寄存器和位地址空間只能用直接尋址方式來訪問 例1MOVA 3AH 把A的內(nèi)容送3AH單元 例2MOVP1 10H 將立即數(shù)10H送P1口 注意 例2中的目的操作數(shù)P1是直接尋址方式 這里用符號P1代替了直接地址90H 2020 4 19 泉州信息學(xué)院 圖3 3MOVA 3AH執(zhí)行示意圖 2020 4 19 泉州信息學(xué)院 3 寄存器尋址方式寄存器尋址是對選定的工作寄存器R0 R7 累加器A 通用寄存器B 地址寄存器DPTR和進位CY中的數(shù)進行操作 例1 MOVA R2 將當(dāng)前工作寄存器的內(nèi)容送累加器A 指令代碼為1字節(jié)EA 注意R2在片內(nèi)RAM的位置 它由RS0 RS1決定 如PSW中RS1 RS0的值分別為1 0 則現(xiàn)在的R2屬于第二組工作寄存器 那么它的地址為12H 現(xiàn)已知12H中存放著數(shù)值4AH 則執(zhí)行該指令后 4AH就被送到A累加器中 2020 4 19 泉州信息學(xué)院 圖3 4MOVA R2執(zhí)行示意圖 2020 4 19 泉州信息學(xué)院 4 寄存器間接尋址方式 在這種尋址方式中 操作數(shù)所指定的寄存器中存放的不是操作數(shù)本身 而是操作數(shù)的地址 這種尋址方式用于訪問片內(nèi)數(shù)據(jù)存儲器或片外數(shù)據(jù)存儲器 間接尋址寄存器 Ri 8位地址指針 和DPTR 16位地址指針 間接尋址寄存器前加 表示間址操作 例1MOVR0 50HMOVA R0例2MOVDPTR 2760HMOVX DPTR A 2020 4 19 泉州信息學(xué)院 圖3 5MOVA R0執(zhí)行示意圖 2020 4 19 泉州信息學(xué)院 5 變址尋址 基址寄存器 變址寄存器的間接尋址 變址尋址方式中使用DPTR或PC作基址寄存器 累加器A作變址寄存器 采用變址尋址的指令只有三條 MOVCA A DPTRMOVCA A PCJMP A DPTR前兩條用于程序存儲器的查表操作 后一條用于程序的分支散轉(zhuǎn) 2020 4 19 泉州信息學(xué)院 例1現(xiàn)假設(shè)MOVCA A DPTR指令存放在70H單元 ACC中原存放值為E0H DPTR中值為2000H 則A DPTR形成的地址為20E0H 20E0H單元中內(nèi)容為47H 則執(zhí)行該指令后 ACC中原E0H被47H代替 該指令執(zhí)行過程示于圖3 4 2020 4 19 泉州信息學(xué)院 2020 4 19 泉州信息學(xué)院 6 相對尋址方式相對尋址是將程序轉(zhuǎn)移到相對地址的轉(zhuǎn)移指令 是將程序計數(shù)器PC中的當(dāng)前內(nèi)容 轉(zhuǎn)移指令的下一條指令地址 與轉(zhuǎn)移指令第二字節(jié)所給出的偏移量相加 其結(jié)果作為跳轉(zhuǎn)指令的轉(zhuǎn)移地址 偏移量為帶符號的數(shù) 其范圍為 127 128 程序設(shè)計中 相對地址可以用指令標(biāo)號或直接地址偏移量數(shù)值 但要注意 相對轉(zhuǎn)移地址的偏移量不得超過 127 128 例1JC03H 若進位C 0 則程序順序執(zhí)行 即不跳轉(zhuǎn) PC PC 2 若進位C 1 則以PC中的當(dāng)前內(nèi)容為基地址 加上偏移量03H后所得到的結(jié)果為該轉(zhuǎn)移指令的目的地址 2020 4 19 泉州信息學(xué)院 圖3 8JC03H指令執(zhí)行示意圖 2020 4 19 泉州信息學(xué)院 7 位尋址方式位尋址空間 片內(nèi)RAM的位尋址區(qū) 20H 2FH單元的128位 和SFR中的可位尋址的位單元 位累加器 在進行位操作時 借助于進位位C作為操作累加器 位地址與字節(jié)直接尋址中的字節(jié)地址形式完全一樣 主要由操作碼來區(qū)分 使用時需予以注意 例1SETB3DH 將片內(nèi)RAM位地址3DH即27H單元的第5位置 1 例2ANLC 3DH 將3DH的位狀態(tài)與進位位C相與 結(jié)果保留在C中 2020 4 19 泉州信息學(xué)院 操作數(shù)尋址方式與尋址空間 2020 4 19 泉州信息學(xué)院 3 3指令系統(tǒng)分類介紹 3 3 1數(shù)據(jù)傳送類指令 共24條 1 內(nèi)部RAM數(shù)據(jù)傳送指令下面分類介紹 1 累加器為目的操作數(shù)的指令MOVA Rn Rn AMOVA direct direct AMOVA Ri Ri AMOVA data data A 2 以寄存器Rn為目的操作數(shù)的指令MOVRn A A RnMOVRn direct direct RnMOVRn data data Rn 2020 4 19 泉州信息學(xué)院 3 以直接地址為目的操作數(shù)的指令MOVdirect A A direct MOVdirect Rn Rn direct MOVdirect direct direct direct MOVdirect Ri Ri direct MOVdirect data data direct 4 以間接地址為目的操作數(shù)的指令MOV Ri A A Ri MOV Ri direct direct Ri MOV Ri data data Ri 5 16位數(shù)據(jù)傳送指令MOVDPTR data16 dataH DPH datal DPL 2020 4 19 泉州信息學(xué)院 2 外部數(shù)據(jù)傳送指令MOVX DPTR AMOVXA DPTRMOVX Ri AMOVXA Ri由于在80C51指令系統(tǒng)中 沒有專門對外設(shè)的輸入 輸出指令 因此80C51單片機只能用這四條指令與外部設(shè)備交換數(shù)據(jù) 后2條指令使用不方便 很少使用 2020 4 19 泉州信息學(xué)院 3 查表指令在80C5l指令系統(tǒng)中 有2條極有用的查表指令 其數(shù)據(jù)表格放在程序存儲器中 MOVCA A PC PC l PC A PC AMOVCA A DPTR A DPTR A4 堆棧操作指令PUSHdirect SP 1 SP direct SP POPdirect SP direct SP 1 SP 2020 4 19 泉州信息學(xué)院 5 交換指令XCHA Rn A RnXCHA direct A direct XCHA Ri A Ri XCHDA Ri A 3 A 0 Ri 3 Ri 0 SWAPA A 3 A 0 A 7 A 4這組指令的前三條為全字節(jié)交換指令 后兩條為半字節(jié)交換指令 圖3 13XCHDA R0執(zhí)行示意圖 2020 4 19 泉州信息學(xué)院 傳送指令使用注意事項 片內(nèi)存儲器可以以直接尋址的方式將數(shù)據(jù)從一個單元送到另一個單元 片內(nèi)存儲器的任一單元可以與工作寄存器或間址寄存器指定的地址單元間相互傳送數(shù)據(jù) 但是 工作寄存器之間不能直接傳送數(shù)據(jù) 也不能通過間址寄存器與片內(nèi)存儲器傳送數(shù)據(jù) 立即數(shù)可以送到以寄存器間接尋址 直接尋址的方式的片內(nèi)存儲器的任一單元或工作寄存器 堆棧操作只能采用直接尋址方式 傳送類指令一般不影響標(biāo)志位 只有堆棧操作可以直接修改程序狀態(tài)字PSW 另外 傳送目的操作數(shù)為ACC的指令將影響奇偶標(biāo)志P 2020 4 19 泉州信息學(xué)院 傳送指令應(yīng)用舉例 例1A 5BH R1 10H R2 20H R3 30H 30H 4FH 執(zhí)行指令 MOVR1 A A送R1MOVR2 30H 30H 送R2MOVR3 83H 83H送R3執(zhí)行后 R1 5BH R2 4FH R3 83H 2020 4 19 泉州信息學(xué)院 例2已知片內(nèi)RAM50H單元中存放數(shù)值為AAH 設(shè)堆棧指針為30H 把此數(shù)值壓入堆棧 然后再彈出到40H單元中 MOVSP 30H 30H SPPUSH50H SP 1 SP 50H 31HPOP40H 31H 40H SP 1 SP 圖4 11例7程序執(zhí)行示意圖 2020 4 19 泉州信息學(xué)院 例3已知當(dāng)前PC值為2010H 請用兩種方法將程序存儲器20F0H中的常數(shù)送入累加器A中 解 方法一 使用查表指令MOVCA A PCMOVA 0DDHMOVCA A PC 方法二 使用查表指令MOVCA A DPTRMOVDPTR 20F0HCLRAMOVCA A DPTR 2020 4 19 泉州信息學(xué)院 3 3 2算術(shù)運算類指令 共23條 算術(shù)運算類指令主要是對8位無符號數(shù)據(jù)進行算術(shù)操作 其中包括加 ADD 帶進位加 ADDC 帶借位減法 SUBB 乘 MUL 除 DIV 加1 INC 減1 DEC 指令 借助溢出標(biāo)志 可對有符號數(shù)進行補碼運算 借助進位標(biāo)志 可進行多精度加 減運算 也可以對壓縮BCD數(shù)進行加法運算 2020 4 19 泉州信息學(xué)院 1 加法指令A(yù)DDA Rn A Rn AADDA direct A direct AADDA Ri A Ri AADDA data A data A2 帶進位加法指令A(yù)DDCA Rn A Rn CY AADDCA direct A direct CY AADDCA Ri A Ri CY AADDCA data A data CY A位 2020 4 19 泉州信息學(xué)院 3 帶借位減法指令SUBBA Rn A Rn CY ASUBBA direct A direct CY ASUBBA Ri A Ri CY ASUBBA data A data CY A4 乘法指令MULAB A B BA B15 8 A7 05 除法指令DIVAB A B 的商 A 余數(shù) B6 加一指令I(lǐng)NCA A 1 AINCRn Rn 1 RnINCdirect direct 1 direct INC Ri Ri 1 Ri INCDPTR DPTR 1 DPTR 2020 4 19 泉州信息學(xué)院 7 減一指令DECA A 1 ADECRn Rn 1 RnDECdirect direct l direct DEC Ri Ri 1 Ri 8 十進制調(diào)整指令DAA 2020 4 19 泉州信息學(xué)院 算術(shù)運算類指令匯總圖 2020 4 19 泉州信息學(xué)院 算術(shù)運算操作對PSW中標(biāo)志位的影響 2020 4 19 泉州信息學(xué)院 算術(shù)運算指令應(yīng)用舉例 例1已知A DBH R4 73H CY 1 執(zhí)行指令 SUBBA R4 則結(jié)果如下 A 67H CY 0 OV 1例2試編寫計算1234H減0FE7H的程序 將和的高8位存入41H 低8位存入40H單元 CLRC 進位位C清 0 MOVA 34H 34H ASUBBA 0E7H A E7H CY AMOV40H A A 40H MOVA 12H 12H ASUBBA 0FH A 0FH CY AMOV41H A A 41H 2020 4 19 泉州信息學(xué)院 3 3 3邏輯運算類指令 共25條 邏輯運算類指令主要用于對兩個操作數(shù)按位進行邏輯操作 操作結(jié)果送到A累加器或直接尋址單元 若直接地址為I O端口 則為 讀 改 寫 操作 這類指令執(zhí)行的操作主要有 與 ANL 或 ORL 異或 XRL 以及累加器自身的循環(huán)移位 取反 CPL 清除 CLR 等 這些指令執(zhí)行時一般不影響程序狀態(tài)字寄存器PSW 僅當(dāng)目的操作數(shù)為ACC時對奇偶標(biāo)志位有影響 2020 4 19 泉州信息學(xué)院 1 邏輯 與 指令A(yù)NLA Rn A Rn AANLA direct A direct AANLA Ri A Ri AANLA data A data AANLdirect A direct A direct ANLdirect data direct data direct 2 邏輯或指令ORLA Rn A Rn AORLA direct A direct AORLA Ri A Ri AORLA data A data AORLdirect A direct A direct ORLdirect data direct data direct 2020 4 19 泉州信息學(xué)院 3 邏輯異或指令XRLA Rn A Rn AXRLA direct A direct AXRLA Ri A Ri AXRLA data A data AXRLdirect A direct A direct XRLdirect data direct data direct 2020 4 19 泉州信息學(xué)院 4 循環(huán)移位指令 5 取反指令CPLA A 5 取反指令CPLA A 5 取反指令CPLA A A6 清0指令CLRA 0 A 2020 4 19 泉州信息學(xué)院 2 邏輯運算指令舉例 例1已知A 1AH R0 45H 45H 39H 執(zhí)行指令ORLA R0 則操作如下 00011010 1AH 00ll1001 39H 00111011 3BH 結(jié)果 A 3BH R0 45H 45H 39H P 1 2020 4 19 泉州信息學(xué)院 例2將累加器A中低4位的狀態(tài) 通過P1口的高4位輸出 解 根據(jù)題意可編程如下 ANLA 0FH 屏蔽A 7 A 4SWAPA 高 低半字節(jié)交換ANLP1 0FH 清P1口高4位ORLP1 A 使P1 7 P1 4按A中初始值的A 3 A 0值置位 2020 4 19 泉州信息學(xué)院 3 3 4轉(zhuǎn)移操作類指令 共17條 這類指令的功能主要是控制程序從原順序執(zhí)行地址轉(zhuǎn)移到其它指令地址上 包括跳轉(zhuǎn) 調(diào)用 散轉(zhuǎn) 返回及空操作等操作 1 無條件轉(zhuǎn)移指令LJMPaddrl6 addrl6 PCAJMPaddrl1 PC 2 PC addr11 PC 10 PC 0SJMPrel PC 2 rel PC2 條件轉(zhuǎn)移JZrel A 0 PC 2 rel PCA 0 PC 2 PC 2020 4 19 泉州信息學(xué)院 JNZrel A 0 PC 2 rel PCA 0 PC 2 PC DJNZRn re1 Rn 1 Rn Rn 0 PC 2 rel PC Rn 0 PC 2 PC DJNZdirect rel direct 1 direct direct 0 PC 3 rel PC direct 0 PC 3 PC CJNEA direct rel A direct PC 3 PC 0 CA direct PC 3 rel PC 0 CA direct PC 3 re1 PC 1 C 2020 4 19 泉州信息學(xué)院 CJNEA data rel A data PC 3 PC 0 C A data PC 3 rel PC 0 C A data PC 3 rel PC 1 C CJNERn data rel Rn data PC 3 PC 0 C Rn data PC 3 rel PC 0 C Rn data PC 3 rel PC 1 C CJNE Ri data rel Ri data PC 3 PC 0 C Ri data PC 3 rel PC 0 C Ri data PC 3 rel PC 1 C 2020 4 19 泉州信息學(xué)院 3 間接轉(zhuǎn)移指令JMP A DPTR A DPTR PC4 調(diào)用子程序及返回指令LCALLaddr16 PC 3 PC SP 1 SP PC 7 PC 0 SP SP 1 SP PC 15 PC 8 SP addr16 PCACALLaddr11 PC 2 PC SP 1 SP PC 7 PC 0 SP SP 1 SP PC 15 PC 8 SP addr11 PC 10 PC 0RET SP PC 15 PC 8 SP 1 SP SP PC 7 PC 0 SP 1 SPRETI 除具有RET指令的功能外 還將清除優(yōu)先級狀態(tài)觸發(fā)器 詳見第6章5 空操作指令NOP 2020 4 19 泉州信息學(xué)院 轉(zhuǎn)移指令應(yīng)用舉例 例1根據(jù)R7的內(nèi)容 轉(zhuǎn)向各個操作程序 R7 0 轉(zhuǎn)入OPR0R7 1 轉(zhuǎn)入OPR1 R7 n 轉(zhuǎn)入OPRn解 MOVDPTR JPTAB1 跳轉(zhuǎn)表首地址送數(shù)據(jù)指針MOVA R7 R7 2 A 修正變址值 ADDA R7JNCNOAD 判有否進位INCDPH 有進位則加到高字節(jié)地址NOAD JMP A DPTR 轉(zhuǎn)向形成的散轉(zhuǎn)地址入口JPTAB1 AJMPOPR0 直接轉(zhuǎn)移地址表AJMPOPR1 AJMPOPRn 2020 4 19 泉州信息學(xué)院 例2某子程序SUB1入口地址是340BH 調(diào)用指令LCALLSUB1地址為2042H 該段程序調(diào)用過程中PC及SP的變化如下 地址指令注釋2040HMOVSP 20H 設(shè)置堆棧指針 20H SP2042HLCALLSUB1 調(diào)用子程序 2045H PC 21H SP 45H 21H 22H SP 20H 22H 340BH PC340BHSUB1 MOVA R03412HRET 22H PCH 21H PCL 此時PC 2045H SP 20H 2020 4 19 泉州信息學(xué)院 例3 根據(jù)A中數(shù)值 置相應(yīng)的標(biāo)志位 當(dāng) dataL A dataH 標(biāo)志位F0清零 否則F0置1 解 ORG2000HST CLRF0CJNEA dataH HCNTRETHCNT JCLCSF0 SETBF0RETLC CJNEA dataL LCNTRETLCNT JCSF0RET 2020 4 19 泉州信息學(xué)院 3 3 5位操作類指令 共17條 包括位變量傳送 邏輯運算 控制程序轉(zhuǎn)移等指令 在進行位操作時 位累加器C為進位標(biāo)志CY 在匯編語言中位地址的表達方式有如下幾種 l 直接 位 地址方式 如D4H 2 點操作符號方式 如PSW 4 D0H 4 3 位名稱方式 如RS1 4 用戶定義名方式 如用偽指令bit定義下式 SUB REGbitRS1經(jīng)定義后 指令中可以用SUB REG代替RS1 上面4種方式都可表達PSW D0H 中第4位 它的位地址是D4H 名稱為RS1 用戶定義為SUB REG 2020 4 19 泉州信息學(xué)院 1 位操作指令分類位數(shù)據(jù)

溫馨提示

  • 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. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論