日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

您好,歡迎來電子發(fā)燒友網(wǎng)! ,新用戶?[免費注冊]

當前位置:電子發(fā)燒友網(wǎng) > 圖書頻道 > 電子 > 《單片機原理與應(yīng)用》 > 第3章 MCS-51單片機指令系統(tǒng)

第3節(jié) 尋址方式

在前面的任務(wù)中,我們還看到,控制彩燈數(shù)據(jù)有的直接在指令中提供了,有些卻預(yù)先制成了表格存放,還有的必須從其他的片內(nèi)RAM單元中相互傳送,和我們找東西一樣,這就涉及到東西存放的地方。單片機中數(shù)據(jù)的存取同樣也必須考慮這個問題。我們有個專業(yè)術(shù)語叫“尋址”。

尋址的“地址”即為操作數(shù)所在單元的地址,絕大部分指令執(zhí)行時都需要用到操作數(shù),那么到哪里去取得操作數(shù)呢?最易想到的就是告訴CPU操作數(shù)所在的地址單元,從那里可取得響應(yīng)的操作數(shù),這便是“尋址”之意。MCS-51的尋址方式很多,使用起來也相當方便,功能也很強大,靈活性強。這便是MCS-51指令系統(tǒng)“好用”的原因之一。下面我們分別討論幾種尋址方式的原理。

(1)         直接尋址

指令中操作數(shù)直接以單元地址形式出現(xiàn),例如:

        MOV  A,68H

這條指令的意義是把內(nèi)部RAM中的68H單元中的數(shù)據(jù)內(nèi)容傳送到累加器A中。值得注意的是直接尋址方式只能使用8位二進制地址,因此這種尋址方式僅限于內(nèi)部RAM進行尋址。低128位單元在指令中直接以單元地址的形式給出。對于特殊功能寄存器可以使用其直接地址進行訪問,還可以以它們的符號形式給出,只是特殊功能寄存器只能用直接尋址方式訪問,而無其它方法。

如任務(wù)中的  MOV    P1,#55H其中目標操作數(shù)就是直接尋址方式。

(2)         寄存器尋址

寄存器尋址對選定的8個工作寄存器R0-R7進行操作,也就是操作數(shù)在寄存器中,因此指定了寄存器就得到了操作數(shù),寄存器尋址的指令中以寄存器的符號來表示寄存器,或A、B、DPTR隱含在操作碼中時,也屬于寄存器尋址。例如:

        MOV  A,R1

這條指令的意義是把所用的工作寄存器組中的R3的內(nèi)容送到累加器A中。

值得一提的是工作狀態(tài)寄存器的選擇是通過程序狀態(tài)字寄存器來控制的,在這條指令前,應(yīng)通過PSW設(shè)定當前工作寄存器組。

如任務(wù)中的  MOV     P1,A源操作數(shù)就是寄存器尋址

(3)         寄存器間接尋址

    寄存器尋址方式,寄存器中存放的是操作數(shù),而寄存器間接尋址方式,寄存器中存放的則為操作數(shù)的地址,也即操作數(shù)是通過寄存器指向的地址單元得到的,這便是寄存器間接尋址名稱的由來。

    例如指令:

        MOV  A,@R0

這條指令的意義是R0寄存器指向地址單元中的內(nèi)容送到累加器A中。假如R0=#56H,那么是將56H單元中的數(shù)據(jù)送到累加器A中。

寄存器間接尋址方式可用于訪問內(nèi)部RAM或外部數(shù)據(jù)存儲器。訪問內(nèi)部RAM或外部數(shù)據(jù)存儲器的低256字節(jié)時,可通過R0和R1作為間接寄存器。然而有必要指出,內(nèi)部RAM的高128字節(jié)地址與專用積存器的地址是重疊的,所以這種尋址方式不能用于訪問特殊功能寄存器。

外部數(shù)據(jù)存儲器的空間為64kB,這時可采用DPTR作為間址寄存器進行訪問,指令如下:

        MOVX  A,@DPTR

    這條指令的意義是與上述類似,不再贅述。

(4)         立即尋址

立即尋址就是把操作數(shù)直接在指令中給出,即操作數(shù)包含在指令中,指令操作碼的后面緊跟著操作數(shù),一般把指令中的操作數(shù)稱為立即數(shù),因此而得名。為了與直接尋址方式相區(qū)別,在立即數(shù)前加上“#”符號,例如:

        MOVX  A,#0EH

這條指令的意義是將0EH這個操作數(shù)送到累加器A中。

在前面任務(wù)中有多條這樣的指令。大家可以自己找找。

(5)         變址尋址

變址尋址是以DPTR或PC作為基址寄存器,以累加器A作為變址寄存器,將兩寄存器的內(nèi)容相加形成16位地址形成操作數(shù)的實際地址。例如:

 

        MOVC  A,@A+DPTR

        MOVX  A,@A+PC

        JMP   @A+DPTR

 

在這三條指令中,A作為偏移量寄存器,DPTR或PC作為變址寄存器,A作為無符號數(shù)與DPTR或PC的內(nèi)容相加,得到訪問的實際地址。其中前兩條是程序存儲器讀指令,后一條是無條件轉(zhuǎn)移指令。

(6)         位尋址

在MCS-51單片機中,RAM中的20H—2FH字節(jié)單元對應(yīng)的位地址為00H—7FH,特殊功能寄存器中的某些位也可進行為尋址,這些單元既可以采用字節(jié)方式訪問它們,也可采用位尋址的方式訪問它們。

(7)         相對尋址

相對尋址方式是為了程序的相對轉(zhuǎn)移而設(shè)計的,其夜里是以PC的內(nèi)容為基址,加上給出的偏移量作為轉(zhuǎn)移地址,從而實現(xiàn)程序的轉(zhuǎn)移。轉(zhuǎn)移的目的地址可參見如下表達式:

        目的地址=轉(zhuǎn)移指令地址+轉(zhuǎn)移指令字接數(shù)+偏移量

值得注意的是,偏移量是有正負號之分的,偏移量的取值范圍是當前PC值的-128~+127之間。

如前面任務(wù)中的  TIME1:‥

TIME2:‥

……

DJNZ  R7,TIME2

DJNZ  R6,TIME1

                    ……

其中DJNE‥指令中的TIME1、TIME2就屬此類,這里目的地址我們是用符號地址表示的。

4.      指令在CPU內(nèi)部的執(zhí)行過程?

指令是以二進制的形式存放在程序存儲器中的,CPU執(zhí)行指令的過程是不斷的從程序存儲器取指令,指令譯碼器對指令進行譯碼,并發(fā)出與指令相應(yīng)的微操作信號,完成指令的執(zhí)行。在這一過程當中,需要根據(jù)相應(yīng)的時序進行操作,程序存儲器操作時序如圖3.3所示

圖3.3  MCS-51單片機取指時序

?
苍梧县| 乌拉特中旗| 石渠县| 平湖市| 项城市| 稻城县| 敦化市| 会宁县| 枝江市| 旺苍县| 安达市| 都江堰市| 竹山县| 太湖县| 珠海市| 芜湖市| 鹤庆县| 肃宁县| 南阳市| 澎湖县| 深州市| 光山县| 吉木萨尔县| 都昌县| 金寨县| 班戈县| 奈曼旗| 柏乡县| 崇义县| 尼勒克县| 两当县| 乌苏市| 益阳市| 白水县| 新和县| 威宁| 沈丘县| 高邑县| 开平市| 晋宁县| 虹口区|