Presentation is loading. Please wait.

Presentation is loading. Please wait.

報告者:朱耿育 紀翔舜 組員:詹以群 張永傑 指導老師:梁新潁

Similar presentations


Presentation on theme: "報告者:朱耿育 紀翔舜 組員:詹以群 張永傑 指導老師:梁新潁"— Presentation transcript:

1 報告者:朱耿育 紀翔舜 組員:詹以群 張永傑 指導老師:梁新潁
聲控鬧鐘專題製作報告 (8051) 報告者:朱耿育 紀翔舜 組員:詹以群 張永傑 指導老師:梁新潁

2 8051定址模式 直接定址 間接定址 暫存器定址 立即定址 索引定址

3 8051定址模式 直接定址 所謂直接定址便是指令中直接寫入要運算的資料 (運算元)的位址如:MOV A, 38H -->將記憶體位址

4 8051定址模式 間接定址 所謂間接定址指的是不直接在指令中指定運算元的 位址,而是利用暫存器存入運算元的位址,此暫存
器便是運算元位址的指標。如: MOV -->以暫存 器R0的內容作為記憶體位址, 然後將此一位址的內容 移入累積器

5 8051定址模式 暫存器定址 8051內部有四個暫存器庫,每個暫存器庫有八個暫 存器,編號為R0~R7。假如在指令中運算元指定為
R0~R7就稱為暫存器定址。如: MOV A,R0 --> 將 暫存器R0的內容移入累積器

6 8051定址模式 立即定址 運算元的資料放在指令中的定址方式稱為立即定址, 但在資料之前必須有前置符號 #
如: MOV A,#10 --> 將10存入累積器中

7 8051定址模式 索引定址 所謂索引定址是將基底暫存器的內容,再加上索引 暫存器的內容所得的值作為運算元所在位址。
如:基底暫存器DPTR的內容是2000H而索引 暫存器A的內容06H下列指令可將位址為2006H的 程式記憶體之內容移入累積器中。 MOVC

8 8051指令集  算術運算指令  邏輯運算指令 資料轉移指令  布林變數操作指令 程式分支指令

9 算術運算指令 指 令 說 明 位元組 工作週期(時脈數) ADD A,Rn 暫存器累加至累加器 1 12 ADD A,direct
直接位元組加至累加器 2 ADD 間接位元組加至累加器 ADD A,#data 常數值加至累加器 ADDC A,Rn 與C一起將暫存器加至累加器 ADDC A,direct 與C一起將直接位元組加至累加器 ADDC 與C一起將間接位元組加至累加器 ADDC A,#data 與C一起將常數值加至累加器 SUBB A,Rn 累加器減暫存器再減C SUBB A,direct 累加器減直接位元組再減C SUBB 累加器減間接位元組再減C SUBB A,#data 累加器減常數值再減C INC A 累加器加一 INC Rn 暫存器加一 INC direct 直接位元組加一 間接位元組加一 DEC A 累加器減一 DEC Rn 站存器減一 DEC direct 直接位元組減一 間接位元組減一 INC DPTR 資料指標加一 24 MUL AB A乘以B 48 DIV AB A除以B DA A 累加器作BCD調整

10 邏輯運算指令 指 令 說 明 位元組 工作週期(時脈數) ANL A,Rn 暫存器AND至累加器 1 12 ANL A,direct
ANL 間接位元組AND至累加器 ANL A,#data 常數值AND累加器 ANL direct,A 累加器AND至直接位元組 ANL direct,#data 常數AND 至直接位元組 3 24 ORL A,Rn 暫存器OR至累加器 ORL A,direct 直接位元組OR至累加器 ORL 間接位元組OR至累加器 ORL A,#data 常數值加OR累加器 ORL direct,A 累加器OR至直接位元組 ORL direct,#data 常數OR至直接位元組 XRL A,Rn 暫存器XRL至累加器 XRL A,direct 直接位元組XRL至累加器 XRL 間接位元組XRL至累加器 XRL A,#data 常數值加XRL累加器 XRL direct,A 累加器XRL至直接位元組 XRL direct,#data 常數XRL 至直接位元組 CLR A 清除累加器 CPL A 累加器反相 RL A 累加器向左旋轉 RLC A 累加器與C一起向左旋轉 RR A 累加器向右旋轉 RRC A 累加器與C一起向右旋轉 SWAP A 累加器的高低四位元交換

11 資料轉移指令 指 令 說 明 位元組 工作週期(時脈數) MOV A,Rn 暫存器內容移至累加器 1 12 MOV A,direct
直接位元組內容移至累加器 2 MOV 間接位元組內容移至累加器 MOV A,#data 常數值移至累加器 MOV Rn,A 累加器內容移至暫存器 MOV Rn,direct 直接位元組內容移至暫存器 24 MOV Rn,#data 常數值移至暫存器 MOV direct,A 累加器內容移至直接位元組 MOV direct,Rn 暫存器內容移至直接位元組 MOV direct,direct 直接位元組內容移至直接位元組 3 MOV 間接位元組內容移至直接位元組 MOV direct,#data 常數移至直接位元組 累加器內容移至間接位元組 直接位元組內容移至間接位元組 常數移至間接位元組 MOV DPTR,#data 16 16位元常數移至資料指標 MOVC 程式記憶體的資料移入累加器 MOVC MOVX 外部RAM的資料移入累加器(8位元定址) MOVX 外部RAM的資料移入累加器(16位元定址) 累加器內容寫到外部RAM(8位元位址) 累加器內容寫到外部RAM(16位元位址) PUSH direct 直接位元組內容放至堆疊區 POP direct 從堆疊區拿回資料至直接位元組 XCH A,Rn 累加器與暫存器的內容互換 XCH A,direct 累加器與直接位元組的內容互相交換 XCH 累加器與間接位元組的內容互相交換 XCHD 累加器與間接位元組的低四位元互相交換

12 布林變數操作指令 指 令 說 明 位元組 工作週期(時脈數) CLR C 清除進位旗標 1 12 CLR bit 清除bit 2
SETB C 設定進位旗標 SETB bit 設定bit=1 CPL C 進位旗標反相 CPL bit bit反相 ANL C,bit bit AND 至進位旗標 24 ANL C,/bit bit 反相後再AND至進位旗標 ORL C,bit bit OR 至進位旗標 ORL C,/bit bit 反相後OR至進位旗標 MOV C,bit bit之狀態移至進位旗標 MOV bit,C 進位旗標之狀態移至bit JC rel 若C=1就跳躍 JNC rel 若C=0就跳躍 JB bit,rel 若bit=1就跳躍 3 JNB bit,rel 若bit=0就跳躍 JBC bit,rel 若bit=1就跳躍,且清除此位元

13 程式分支指令 指 令 說 明 位元組 工作週期(時脈數) ACALL addr11 絕對式副程式呼叫 2 24 LCALL addr16
遠程副程式呼叫 3 RET 從副程式返回 1 RETI 從中斷副程式返回 AJMP addr11 絕對式跳躍 LJMP addr11 遠程跳躍 SJMP rel 短程跳躍 間接跳躍 JZ rel 若A=0就跳躍 JNZ rel 若A≠0就跳躍 CJNE A,direct,rel 若累加器與直接位元組內容不 相等就跳躍 CJNE A,#data,rel 若累加器內容不等於data就 跳躍 CJNE Rn,#data,rel 若暫存器內容不等於data就 若間接位元組內容不等於data 就跳躍 DJNZ Rn,rel 暫存器內容減一,若不等於零 DJNZ direct,rel 直接位址內容減一,若不等於零 NOP 沒動作 12

14 The end


Download ppt "報告者:朱耿育 紀翔舜 組員:詹以群 張永傑 指導老師:梁新潁"

Similar presentations


Ads by Google