18luck网站

18luck网站電子設計 | 18luck网站Rss 2.0 會員中心 會員注冊
搜索: 您現在的位置: 18luck网站 >> 18luck平台 >> 單片機 >> 正文

51係列單片機尋址方式

作者:佚名    文章來源:本站原創    點擊數:    更新時間:2013-4-3

所謂尋址方式就是單片機指令中提供的操作數的形式。也就是尋找操作數或操作數所在地址的方式。在51係列單片機中,存放數據的存儲(chu) 器空間有4種:內(nei) 部RAM、特殊功能寄存器SFR、外部RAM和程序存儲(chu) 器ROM。其中,內(nei) 部RAM和SFR統一編址,外部RAM和程序存儲(chu) 器是分開編址的。為(wei) 了區別指令中操作數所處的地址空間,對於(yu) 不同存存儲(chu) 器的數據操作,采用不同的尋址方式。

1 立即數尋址

   指令中直接給出操作數的尋址方式稱為(wei) 立即數尋址。在51係列單片機指令係統中,立即數用前麵加“#”號的8位數表示(#data,如#30H)或16位數(#data16,如#2052H)表示。舉(ju) 例說明立即數尋址方式,以傳(chuan) 送指令為(wei) 例。

例:MOV  A,  #80H          ;80H——>A

    MOV  DPTR,  #2000H     ;2000H——>DPTR

2 直接尋址

指令中直接給出操作數地址(dir)的尋址方式稱為(wei) 直接尋址。尋址對象為(wei) :1 內(nei) 部數據存儲(chu) 器,在指令中以直接地址表示;2特殊功能寄存器SFR,在指令中用寄存器名稱表示。

下麵舉(ju) 例說明。

例:MOV  A,  25H        ;內(nei) 部RAM的(25H)——>A

    MOV  P0,  #45H       ;45H——>P0 ,P0為(wei) 直接尋址的SFR

    MOV  30H,20H       ;內(nei) 部RAM的(20H)——>(30H)

3 寄存器尋址

以通用寄存器的內(nei) 容為(wei) 操作數的尋址方式稱為(wei) 寄存器尋址。通用寄存器包括:A、B、DPTR、R0~R7。其中B寄存器僅(jin) 在乘法、除法指令中為(wei) 寄存器尋址,在其它指令中為(wei) 直接尋址。A寄存器可以寄存器尋址,又可以直接尋址(此時寫(xie) 作ACC)。直接尋址和寄存器尋址的差別在於(yu) ,直接尋址是操作數所在的字節地址(占一個(ge) 字節),寄存器尋址是寄存器編碼出現在指令碼中。寄存器尋址速度比直接尋址要快。除上麵所指的幾個(ge) 寄存器外,其它特殊功能寄存器一律為(wei) 直接尋址。

例:MOV  A,  R0       ;R0——>A,R0為(wei) 寄存器尋址

    MUL  AB          ;A×B——>BA,A,B為(wei) 寄存器尋址

    MOV  B,  R0       ;R0——>B,R0為(wei) 寄存器尋址,B為(wei) 直接尋址

    PUSH  ACC        ;A的內(nei) 容入棧,A為(wei) 直接尋址

    ADD  A,  ACC     ;A為(wei) 寄存器尋址,ACC為(wei) 直接尋址

4 寄存器間接尋址

以寄存器中的內(nei) 容為(wei) 地址,該地址的內(nei) 容為(wei) 操作數的尋址方式稱為(wei) 寄存器間接尋址。能夠進行寄存器間接尋址的寄存器有:R0、R1、DPTR,用前麵加@表示,如@R0、@R1、@DPTR。寄存器間接尋址的存儲(chu) 空間包括內(nei) 部數據存儲(chu) 器和外部數據存儲(chu) 器。由於(yu) 內(nei) 部數據存儲(chu) 器共有128字節,因此用一字節的R0和R1可間接尋址整個(ge) 空間。而外部數據存儲(chu) 器最大可達64K,僅(jin) R0或R1無法尋址整個(ge) 空間,為(wei) 此需要由P2端口提供外部RAM高8位地址,由R0或R1提供低8位地址,由此共同尋址64K字節範圍。也可用16位的DPTR寄存器間接尋址64K字節存儲(chu) 空間。

在指令中,是對內(nei) 部RAM還是對外部RAM尋址,區別在於(yu) 對外部RAM的操作僅(jin) 有數據傳(chuan) 送指令,並且用MOVX作為(wei) 操作助記符。

例:MOV   @R0,  A       ;A——>以R0內(nei) 容為(wei) 地址的內(nei) 部RAM中

    MOVX  A,  @R1     ;外部RAM(地址為(wei) P2 R1)的內(nei) 容——>A

    MOVX  @DPTR,  A   ;A——>以DPTR內(nei) 容為(wei) 地址的外部RAM中

圖1  MOV  @R0,  A

圖2  MOVX  A,  @R1

圖3  MOVX  @DPTR,  A

5 變址尋址

由寄存器DPTR或PC中的內(nei) 容加上A累加器內(nei) 容之和而形成操作數地址的尋址方式稱為(wei) 變址尋址。變址尋址隻能對程序存儲(chu) 器中的數據進行尋址操作。由於(yu) 程序存儲(chu) 器是隻讀存貯器,因此變址尋址隻有讀操作而無寫(xie) 操作。在指令符號上采用MOVC的形式。

例:MOVC  A,  @A+DPTR       ;(A+DPTR)——>A

    MOVC  A,  @A+PC          ;(A+PC)——>A
                                      
圖4  MOVC  A,  @A+DPTR


圖5  MOVC  A,  @A+PC

6 位尋址

對位地址中的內(nei) 容進行位操作的尋址方式稱為(wei) 位尋址。由於(yu) 單片機中隻有內(nei) 部RAM和特殊功能寄存器的部分單元有位地址,因此位尋址隻能對有位地址的這兩(liang) 個(ge) 空間進行尋址操作。位尋址是一種直接尋址方式,由指令給出直接位地址。與(yu) 直接尋址不同的是,位尋址隻給出位地址,而不是字節地址。

例:SETB  20H     ;1——>20H位

    MOV  32H, C   ;進位Cy(即指令中的C)——>32H位

7 相對尋址

以當前程序計數器PC的內(nei) 容為(wei) 基址,加上指令給出的一字節補碼數(偏移量)形成新的PC值的尋址方式稱為(wei) 相對尋址。相對尋址方式隻修改PC值,故主要用於(yu) 實現程序的分支轉移。

例:SJMP  08H    ;PC+2+08H——>PC (該指令為(wei) 兩(liang) 字節,所以有PC+2)

cm 0pt; TEXT-INDENT: 17.65pt; LINE-HEIGHT: 125%;">對位地址中的內(nei) 容進行位操作的尋址方式稱為(wei) 位尋址。由於(yu) 單片機中隻有內(nei) 部RAM和特殊功能寄存器的部分單元有位地址,因此位尋址隻能對有位地址的這兩(liang) 個(ge) 空間進行尋址操作。位尋址是一種直接尋址方式,由指令給出直接位地址。與(yu) 直接尋址不同的是,位尋址隻給出位地址,而不是字節地址。

例:SETB  20H     ;1——>20H位

    MOV  32H, C   ;進位Cy(即指令中的C)——>32H位

7 相對尋址

以當前程序計數器PC的內(nei) 容為(wei) 基址,加上指令給出的一字節補碼數(偏移量)形成新的PC值的尋址方式稱為(wei) 相對尋址。相對尋址方式隻修改PC值,故主要用於(yu) 實現程序的分支轉移。

例:SJMP  08H    ;PC+2+08H——>PC (該指令為(wei) 兩(liang) 字節,所以有PC+2)

Tags:單片機尋址方式,51單片機  
責任編輯:admin
請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
1分 2分 3分 4分 5分

還可以輸入 200 個字
[ 查看全部 ] 網友評論
關於我們 - 聯係我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
返回頂部
刷新頁麵
下到頁底
晶體管查詢