微機(jī)原理與控制第三章(季)_第1頁
微機(jī)原理與控制第三章(季)_第2頁
微機(jī)原理與控制第三章(季)_第3頁
微機(jī)原理與控制第三章(季)_第4頁
微機(jī)原理與控制第三章(季)_第5頁
已閱讀5頁,還剩135頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、微機(jī)原理與控制微機(jī)原理與控制 工學(xué)院工學(xué)院第第3章章 mcs-51單片機(jī)的指令系統(tǒng)單片機(jī)的指令系統(tǒng)l3.1 指令格式指令格式l3.2 尋址方式尋址方式l3.3 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令l3.4 算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令l3.5 邏輯運(yùn)算和環(huán)移指令邏輯運(yùn)算和環(huán)移指令l3.6 位操作指令位操作指令l3.7 控制轉(zhuǎn)移指令控制轉(zhuǎn)移指令l3.8 調(diào)用和返回指令調(diào)用和返回指令l3.9 偽指令偽指令l3.10匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)微機(jī)原理與控制微機(jī)原理與控制 工學(xué)院工學(xué)院3.1 指令格式指令格式l單片機(jī)要執(zhí)行某種操作,用戶必須按照格式編寫指令,單單片機(jī)要執(zhí)行某種操作,用戶必須按照格式編寫指令,單片

2、機(jī)才能識別并準(zhǔn)確操作。指令的編碼規(guī)則稱為指令格式。片機(jī)才能識別并準(zhǔn)確操作。指令的編碼規(guī)則稱為指令格式。l3.1.1 指令的格式指令的格式l1指令的一般格式指令的一般格式lmcs-51單片機(jī)指令的一般格式為:操作碼單片機(jī)指令的一般格式為:操作碼 操作數(shù)。例如操作數(shù)。例如指令:指令:74h 30h。l1)操作碼操作碼 用來表示執(zhí)行什么樣的操作,例如傳送、加、減用來表示執(zhí)行什么樣的操作,例如傳送、加、減等。等。mcs-51系列單片機(jī)的操作碼為系列單片機(jī)的操作碼為8位二進(jìn)制的機(jī)器碼,位二進(jìn)制的機(jī)器碼,在指令中為第一字節(jié)。用機(jī)器碼寫成的指令是機(jī)器指令,在指令中為第一字節(jié)。用機(jī)器碼寫成的指令是機(jī)器指令,也

3、稱為指令代碼。也稱為指令代碼。微機(jī)原理與控制微機(jī)原理與控制 工學(xué)院工學(xué)院3.1 指令格式指令格式l2)操作數(shù)操作數(shù) 表示參與操作的數(shù)據(jù)或數(shù)據(jù)的存儲地址,不同類型的指令,表示參與操作的數(shù)據(jù)或數(shù)據(jù)的存儲地址,不同類型的指令,操作數(shù)的個數(shù)是不一樣的,可以有操作數(shù)的個數(shù)是不一樣的,可以有3個、個、2個、個、1個等。在具有多個操個等。在具有多個操作數(shù)的指令中,把它們分別稱為第一操作數(shù)、第二操作數(shù)等。如果作數(shù)的指令中,把它們分別稱為第一操作數(shù)、第二操作數(shù)等。如果操作數(shù)是一個直接參加操作的數(shù)據(jù),這種操作數(shù)稱為立即數(shù);而大操作數(shù)是一個直接參加操作的數(shù)據(jù),這種操作數(shù)稱為立即數(shù);而大部分操作數(shù)存放于寄存器或數(shù)據(jù)存

4、儲器的某個存儲單元,操作數(shù)字部分操作數(shù)存放于寄存器或數(shù)據(jù)存儲器的某個存儲單元,操作數(shù)字段僅指出操作數(shù)所在的寄存器或存儲器地址。段僅指出操作數(shù)所在的寄存器或存儲器地址。l2常用指令格式常用指令格式l編寫指令時,要記住各種由編寫指令時,要記住各種由“0”和和“1”二進(jìn)制數(shù)組成的代碼和他們二進(jìn)制數(shù)組成的代碼和他們的含義是很困難的,既容易出錯,又不易檢查。所以常用的指令格的含義是很困難的,既容易出錯,又不易檢查。所以常用的指令格式是以助記符表示的符號指令,也稱匯編語言,由標(biāo)號、操作碼助式是以助記符表示的符號指令,也稱匯編語言,由標(biāo)號、操作碼助記符、操作數(shù)和注釋記符、操作數(shù)和注釋4個字段組成,格式如下:

5、個字段組成,格式如下:l標(biāo)號:標(biāo)號: 操作碼助記符操作碼助記符 操作數(shù)操作數(shù)1 ,操作數(shù),操作數(shù)2 ;注釋;注釋l其中,方括號內(nèi)的項(xiàng)為任選項(xiàng),需要此項(xiàng)時,指令中不寫方括號;其中,方括號內(nèi)的項(xiàng)為任選項(xiàng),需要此項(xiàng)時,指令中不寫方括號;兩操作數(shù)之間應(yīng)以逗號分開。兩操作數(shù)之間應(yīng)以逗號分開。微機(jī)原理與控制微機(jī)原理與控制 工學(xué)院工學(xué)院3.1 指令格式指令格式l例如,指令:例如,指令: start: mov a,#79h ;a79hl1)標(biāo)號標(biāo)號 標(biāo)號是用戶定義的符號,由以字母開始的標(biāo)號是用戶定義的符號,由以字母開始的18個字個字符符(字母或數(shù)字字母或數(shù)字)組成,它代表指令的符號地址,通常在程序組成,它代表

6、指令的符號地址,通常在程序分支、轉(zhuǎn)移等所需要的地方加上一個標(biāo)號,并不是每條指令分支、轉(zhuǎn)移等所需要的地方加上一個標(biāo)號,并不是每條指令都必須有標(biāo)號。當(dāng)將指令轉(zhuǎn)換成機(jī)器指令時,指令第一字節(jié)都必須有標(biāo)號。當(dāng)將指令轉(zhuǎn)換成機(jī)器指令時,指令第一字節(jié)(也稱首字節(jié)也稱首字節(jié))的存儲單元地址值賦給該標(biāo)號。的存儲單元地址值賦給該標(biāo)號。l2)操作碼助記符操作碼助記符 助記符是一些代表操作含義的英文縮寫,助記符是一些代表操作含義的英文縮寫,一般由一般由25個英文字母組成,如個英文字母組成,如“mov”表示表示“傳送傳送”、“add”表示表示“加加”等。操作碼助記符對應(yīng)的機(jī)器碼是指令等。操作碼助記符對應(yīng)的機(jī)器碼是指令的第

7、一字節(jié),也是指令不可缺少的部分。的第一字節(jié),也是指令不可缺少的部分。l3)操作數(shù)操作數(shù) 與機(jī)器指令格式中的操作數(shù)相似。與機(jī)器指令格式中的操作數(shù)相似。l4)注釋注釋 注釋是對本指令或本段程序的功能說明,便于對程注釋是對本指令或本段程序的功能說明,便于對程序的閱讀理解,在轉(zhuǎn)換成機(jī)器指令時不予考慮。注釋的前面序的閱讀理解,在轉(zhuǎn)換成機(jī)器指令時不予考慮。注釋的前面需加分號需加分號“;”。微機(jī)原理與控制微機(jī)原理與控制 工學(xué)院工學(xué)院3.1 指令格式指令格式l單片機(jī)識別機(jī)器指令,編程人員使用符號指令,機(jī)器指單片機(jī)識別機(jī)器指令,編程人員使用符號指令,機(jī)器指令與符號指令之間有一一對應(yīng)的關(guān)系,絕沒有重復(fù)。各令與符號

8、指令之間有一一對應(yīng)的關(guān)系,絕沒有重復(fù)。各種指令的機(jī)器碼不需要記憶,編程人員可查閱機(jī)器指令種指令的機(jī)器碼不需要記憶,編程人員可查閱機(jī)器指令與符號指令的映射表將符號指令譯成機(jī)器指令,這個過與符號指令的映射表將符號指令譯成機(jī)器指令,這個過程稱為匯編;但更多的是用專門的軟件來完成匯編過程。程稱為匯編;但更多的是用專門的軟件來完成匯編過程。l3.1.2 指令的分類指令的分類lmcs-51指令系統(tǒng)有指令系統(tǒng)有33種操作功能。指令助記符與尋址種操作功能。指令助記符與尋址方式組合,得到方式組合,得到111種指令。分類如下:種指令。分類如下:微機(jī)原理與控制微機(jī)原理與控制 工學(xué)院工學(xué)院3.1 指令格式指令格式l

9、1按字節(jié)數(shù)分類按字節(jié)數(shù)分類l 1) 單字節(jié)指令,有單字節(jié)指令,有49條。條。l 2) 雙字節(jié)指令,有雙字節(jié)指令,有45條。條。l 3) 3字節(jié)指令,有字節(jié)指令,有17條。條。l 2按指令執(zhí)行時間分類按指令執(zhí)行時間分類l 1) 單周期指令,有單周期指令,有64條。條。l 2) 雙周期指令,有雙周期指令,有45條。條。l 3) 四周期指令,乘、除各有四周期指令,乘、除各有1條。條。微機(jī)原理與控制微機(jī)原理與控制 工學(xué)院工學(xué)院3.1 指令格式指令格式l3按功能分類按功能分類l1) 數(shù)據(jù)傳送指令,有數(shù)據(jù)傳送指令,有28條。條。l這類指令主要用于單片機(jī)片內(nèi)這類指令主要用于單片機(jī)片內(nèi)ram和特殊功能寄存器和

10、特殊功能寄存器sfr之間傳之間傳送數(shù)據(jù),也可以用于單片機(jī)片內(nèi)和片外存儲單元之間傳送數(shù)據(jù)。送數(shù)據(jù),也可以用于單片機(jī)片內(nèi)和片外存儲單元之間傳送數(shù)據(jù)。數(shù)據(jù)傳送指令是把源地址中操作數(shù)傳送到目的地址數(shù)據(jù)傳送指令是把源地址中操作數(shù)傳送到目的地址(或目的寄存器或目的寄存器)的指令,在該指令執(zhí)行后源地址中的操作數(shù)不被破壞。源操作數(shù)的指令,在該指令執(zhí)行后源地址中的操作數(shù)不被破壞。源操作數(shù)有有8位和位和16位之分,前者稱為位之分,前者稱為8位數(shù)傳送指令,后者叫做位數(shù)傳送指令,后者叫做16位數(shù)傳位數(shù)傳送指令。送指令。l交換指令也屬于數(shù)據(jù)傳送指令,是把兩個地址單元中內(nèi)容相互交交換指令也屬于數(shù)據(jù)傳送指令,是把兩個地址單

11、元中內(nèi)容相互交換。因此,這類指令中的操作數(shù)或操作數(shù)地址是互為換。因此,這類指令中的操作數(shù)或操作數(shù)地址是互為“源操作數(shù)源操作數(shù)”和和“目的操作數(shù)目的操作數(shù)”的。的。微機(jī)原理與控制微機(jī)原理與控制 工學(xué)院工學(xué)院3.1 指令格式指令格式l2) 算術(shù)運(yùn)算指令,有算術(shù)運(yùn)算指令,有24條。條。l算術(shù)運(yùn)算指令用于對兩個操作數(shù)進(jìn)行加、減、乘、除等算術(shù)運(yùn)算。算術(shù)運(yùn)算指令用于對兩個操作數(shù)進(jìn)行加、減、乘、除等算術(shù)運(yùn)算。在兩個操作數(shù)中,一個應(yīng)放在累加器在兩個操作數(shù)中,一個應(yīng)放在累加器a中,另一個可以在某個寄中,另一個可以在某個寄存器或片內(nèi)存器或片內(nèi)ram單元中,也可以放在指令碼的第二和第三字節(jié)中。單元中,也可以放在指令

12、碼的第二和第三字節(jié)中。指令執(zhí)行后,運(yùn)算結(jié)果便可保留在累加器指令執(zhí)行后,運(yùn)算結(jié)果便可保留在累加器a中,運(yùn)算中產(chǎn)生的進(jìn)中,運(yùn)算中產(chǎn)生的進(jìn)位標(biāo)志、奇偶標(biāo)志和溢出標(biāo)志等皆可保留在位標(biāo)志、奇偶標(biāo)志和溢出標(biāo)志等皆可保留在psw中。參加運(yùn)算的中。參加運(yùn)算的兩數(shù)可以是兩數(shù)可以是8位的,也可以是位的,也可以是16位的。位的。l3) 邏輯運(yùn)算和環(huán)移指令,有邏輯運(yùn)算和環(huán)移指令,有25條。條。l這類指令包括邏輯運(yùn)算和環(huán)移兩類指令。邏輯操作指令用于對兩這類指令包括邏輯運(yùn)算和環(huán)移兩類指令。邏輯操作指令用于對兩個操作數(shù)進(jìn)行邏輯乘、邏輯加、邏輯取反和異或等操作,大多數(shù)個操作數(shù)進(jìn)行邏輯乘、邏輯加、邏輯取反和異或等操作,大多數(shù)指

13、令也需要把兩個操作數(shù)中的一個預(yù)先放入累加器指令也需要把兩個操作數(shù)中的一個預(yù)先放入累加器a,操作結(jié)果,操作結(jié)果也在累加器也在累加器a中。環(huán)移指令可以對累加器中。環(huán)移指令可以對累加器a中的數(shù)進(jìn)行環(huán)移。環(huán)中的數(shù)進(jìn)行環(huán)移。環(huán)移指令有左環(huán)移和右環(huán)移之分,也有帶進(jìn)位位移指令有左環(huán)移和右環(huán)移之分,也有帶進(jìn)位位cy和不帶進(jìn)位位和不帶進(jìn)位位cy之分。之分。微機(jī)原理與控制微機(jī)原理與控制 工學(xué)院工學(xué)院3.1 指令格式指令格式l4) 位操作指令,有位操作指令,有12條。條。l位操作指令又稱布爾變量操作指令,共分為位傳送、位位操作指令又稱布爾變量操作指令,共分為位傳送、位置位、位運(yùn)算和位控制轉(zhuǎn)移指令等四類。其中,位傳送

14、、置位、位運(yùn)算和位控制轉(zhuǎn)移指令等四類。其中,位傳送、位置位和位運(yùn)算指令的操作數(shù)不是以字節(jié)為單位進(jìn)行操位置位和位運(yùn)算指令的操作數(shù)不是以字節(jié)為單位進(jìn)行操作的,而是以字節(jié)中某位為單位進(jìn)行的;位控制轉(zhuǎn)移指作的,而是以字節(jié)中某位為單位進(jìn)行的;位控制轉(zhuǎn)移指令不是以檢測某個字節(jié)的結(jié)果為條件而轉(zhuǎn)移的,而是以令不是以檢測某個字節(jié)的結(jié)果為條件而轉(zhuǎn)移的,而是以檢測字節(jié)中的某一位的狀態(tài)來轉(zhuǎn)移的。檢測字節(jié)中的某一位的狀態(tài)來轉(zhuǎn)移的。l5) 控制轉(zhuǎn)移指令,有控制轉(zhuǎn)移指令,有22條。條。l控制轉(zhuǎn)移指令分為條件轉(zhuǎn)移、無條件轉(zhuǎn)移、調(diào)用和返回控制轉(zhuǎn)移指令分為條件轉(zhuǎn)移、無條件轉(zhuǎn)移、調(diào)用和返回等指令。這類指令的共同特點(diǎn)是可以改變程序執(zhí)

15、行的流等指令。這類指令的共同特點(diǎn)是可以改變程序執(zhí)行的流向,或者是使向,或者是使cpu轉(zhuǎn)移到另一處執(zhí)行,或者是繼續(xù)順序轉(zhuǎn)移到另一處執(zhí)行,或者是繼續(xù)順序地執(zhí)行。無論是哪一類指令,執(zhí)行后都會改變程序計(jì)數(shù)地執(zhí)行。無論是哪一類指令,執(zhí)行后都會改變程序計(jì)數(shù)器器pc中的值。中的值。微機(jī)原理與控制微機(jī)原理與控制 工學(xué)院工學(xué)院3.1 指令格式指令格式l3.1.3 指令的存放空間指令的存放空間l指令是單片機(jī)執(zhí)行某種操作的命令,用戶若要單片機(jī)完成一件事情,指令是單片機(jī)執(zhí)行某種操作的命令,用戶若要單片機(jī)完成一件事情,必須先編寫指令,再轉(zhuǎn)成機(jī)器碼形式,從鍵盤等設(shè)備輸入到程序存必須先編寫指令,再轉(zhuǎn)成機(jī)器碼形式,從鍵盤等設(shè)

16、備輸入到程序存儲器存放。存放在程序存儲器的哪個空間,用戶應(yīng)首先給程序計(jì)數(shù)儲器存放。存放在程序存儲器的哪個空間,用戶應(yīng)首先給程序計(jì)數(shù)器器pc一個首地址,指令就從這個首地址開始存放,一個字節(jié)存放到一個首地址,指令就從這個首地址開始存放,一個字節(jié)存放到一個單元后,程序計(jì)數(shù)器一個單元后,程序計(jì)數(shù)器pc自動加自動加1,指令的下一字節(jié)存放在,指令的下一字節(jié)存放在pc當(dāng)當(dāng)前值的地址單元。前值的地址單元。l3.1.4 指令常用的縮寫符號說明指令常用的縮寫符號說明l在描述在描述mcs一一51指令系統(tǒng)的功能時,經(jīng)常使用一些縮寫符號,各符指令系統(tǒng)的功能時,經(jīng)常使用一些縮寫符號,各符號的含義如下:號的含義如下:l(1

17、)a 累加器累加器acc。常用。常用acc表示其地址,用表示其地址,用a表示其名稱。表示其名稱。l(2)ab 累加器累加器acc和寄存器和寄存器b組成的寄存器對。通常在乘、除法指組成的寄存器對。通常在乘、除法指令中出現(xiàn)。令中出現(xiàn)。微機(jī)原理與控制微機(jī)原理與控制 工學(xué)院工學(xué)院3.1 指令格式指令格式l(3)rn (n=07),選定的當(dāng)前工作寄存器,范圍為,選定的當(dāng)前工作寄存器,范圍為r0r7。l(4)ri (i=0或或1),工作寄存器,工作寄存器r0或或r1。l(5) 間接尋址符號,簡稱間址符,常與間接尋址符號,簡稱間址符,常與ri配合用,如配合用,如ri,表示指令對,表示指令對ri寄存器間接尋址

18、。寄存器間接尋址。l(6)#data 8位立即數(shù),位立即數(shù),“#”表示后面的表示后面的data是立即數(shù)而是立即數(shù)而不是直接地址。不是直接地址。l(7)direct 表示片內(nèi)表示片內(nèi)ram存儲單元的存儲單元的8位直接地址,立即位直接地址,立即數(shù)和直接地址可用二進(jìn)制碼表示,后綴為數(shù)和直接地址可用二進(jìn)制碼表示,后綴為“b”;也可用;也可用十六進(jìn)制碼表示,后綴為十六進(jìn)制碼表示,后綴為“h”;如果是以字母開頭的十;如果是以字母開頭的十六進(jìn)制數(shù),在其前面應(yīng)加一個六進(jìn)制數(shù),在其前面應(yīng)加一個“0”。如,二進(jìn)制碼。如,二進(jìn)制碼10101000b也可轉(zhuǎn)成十六進(jìn)制碼也可轉(zhuǎn)成十六進(jìn)制碼a8h,但必須寫成,但必須寫成“

19、0a8h”。微機(jī)原理與控制微機(jī)原理與控制 工學(xué)院工學(xué)院3.1 指令格式指令格式l(8)dptr:表示以:表示以dptr為數(shù)據(jù)指針的間接尋址,用于對外部為數(shù)據(jù)指針的間接尋址,用于對外部64k ramrom尋址。尋址。l(9)rel 以補(bǔ)碼形式表示的以補(bǔ)碼形式表示的8位地址偏移量,范圍為位地址偏移量,范圍為-128+127。l(10)bit 位地址。位地址。l(11)$:當(dāng)前指令的地址。:當(dāng)前指令的地址。l指令中還經(jīng)常使用到下列符號,含義如下:指令中還經(jīng)常使用到下列符號,含義如下:l 加;加;l 減;減;l 乘;乘;l 除;除;微機(jī)原理與控制微機(jī)原理與控制 工學(xué)院工學(xué)院3.1 指令格式指令格式l

20、邏輯與;邏輯與;l 邏輯或;邏輯或;l 邏輯異或;邏輯異或;l 大于;大于;l 不等于;不等于;l 取代或替換;取代或替換;l(x) 表示表示x寄存器或寄存器或x地址單元中的內(nèi)容;地址單元中的內(nèi)容;l(x) 表示以表示以x寄存器或寄存器或x地址單元中的內(nèi)容為地址的存儲單元中地址單元中的內(nèi)容為地址的存儲單元中的內(nèi)容;的內(nèi)容;l() 將將x寄存器的內(nèi)容取反;寄存器的內(nèi)容取反;lrrr 機(jī)器指令三位值由工作寄存器機(jī)器指令三位值由工作寄存器rn確定,確定,r0r7對應(yīng)的對應(yīng)的rrr分分別為別為000111。微機(jī)原理與控制微機(jī)原理與控制 工學(xué)院工學(xué)院3.1 指令格式指令格式l例例31 已知數(shù)據(jù)存儲器各單

21、元內(nèi)容如已知數(shù)據(jù)存儲器各單元內(nèi)容如圖圖31所示,說明所示,說明(50h)、(a)、()、(50h)各為多少各為多少? l解解 (50h):表示地址為:表示地址為50h存儲單元里的內(nèi)容存儲單元里的內(nèi)容01110000b。l(a):表示累加器:表示累加器a中的內(nèi)容,因中的內(nèi)容,因a的地址為的地址為0eoh,所以,所以(a)為為00100001b。l():表示地址為:表示地址為50h存儲單元里的內(nèi)容取反,為存儲單元里的內(nèi)容取反,為10001111b。l(50h):以:以50h存儲單元的內(nèi)容存儲單元的內(nèi)容70h為地址的存儲單元內(nèi)的內(nèi)容,為地址的存儲單元內(nèi)的內(nèi)容,為為00111001b。微機(jī)原理與控制微

22、機(jī)原理與控制 工學(xué)院工學(xué)院圖31 00100001 00111001 011100000eoh70h 50h 微機(jī)原理與控制微機(jī)原理與控制 工學(xué)院工學(xué)院3.2 尋址方式尋址方式l指令包含操作碼和操作數(shù),有些指令直接給出參與運(yùn)算和操作的指令包含操作碼和操作數(shù),有些指令直接給出參與運(yùn)算和操作的數(shù),但更多指令只是以各種方式給出操作數(shù)所在的地址。單片機(jī)數(shù),但更多指令只是以各種方式給出操作數(shù)所在的地址。單片機(jī)通過地址信息尋找操作數(shù)的方式,稱為尋址方式。尋址方式越多,通過地址信息尋找操作數(shù)的方式,稱為尋址方式。尋址方式越多,表明計(jì)算機(jī)的功能越強(qiáng),靈活性越大。表明計(jì)算機(jī)的功能越強(qiáng),靈活性越大。l在在mcs一

23、一51單片機(jī)中,操作數(shù)的存放范圍是很寬的,可以放在片單片機(jī)中,操作數(shù)的存放范圍是很寬的,可以放在片外外romram中,也可以放在片內(nèi)中,也可以放在片內(nèi)romram以及特殊功能寄以及特殊功能寄存器存器sfr中。為了適應(yīng)這一操作數(shù)范圍內(nèi)的尋址,中。為了適應(yīng)這一操作數(shù)范圍內(nèi)的尋址,mcs一一51的指的指令系統(tǒng)共使用了七種尋址方式,它們是立即尋址、直接尋址、寄令系統(tǒng)共使用了七種尋址方式,它們是立即尋址、直接尋址、寄存器尋址、寄存器間接尋址、變址尋址、相對尋址和位尋址。存器尋址、寄存器間接尋址、變址尋址、相對尋址和位尋址。微機(jī)原理與控制微機(jī)原理與控制 工學(xué)院工學(xué)院3.2 尋址方式尋址方式l3.2.1 立

24、即尋址立即尋址l指令中的操作數(shù)只是數(shù)據(jù),而不是地址,這樣的操作數(shù)指令中的操作數(shù)只是數(shù)據(jù),而不是地址,這樣的操作數(shù)就稱為立即數(shù),立即數(shù)直接參與操作,這種尋址方式稱就稱為立即數(shù),立即數(shù)直接參與操作,這種尋址方式稱為立即尋址。其實(shí)立即尋址并沒有尋址過程。這類指令為立即尋址。其實(shí)立即尋址并沒有尋址過程。這類指令的立即數(shù)大多數(shù)是一個字節(jié)的的立即數(shù)大多數(shù)是一個字節(jié)的8位二進(jìn)制數(shù)。指令中,操位二進(jìn)制數(shù)。指令中,操作數(shù)前有作數(shù)前有“#”符號,據(jù)此可以判定是立即尋址,并有相符號,據(jù)此可以判定是立即尋址,并有相應(yīng)的操作碼。例如,指令:應(yīng)的操作碼。例如,指令:lmov a, #64h ;a64hl這條指令的功能是把

25、數(shù)據(jù)這條指令的功能是把數(shù)據(jù)64h(立即數(shù)立即數(shù))送到累加器送到累加器a中,中,在在mcs一一51指令系統(tǒng)中有相應(yīng)操作碼為指令系統(tǒng)中有相應(yīng)操作碼為74h,立即尋址,立即尋址的示意如的示意如圖圖32所示,設(shè)程序計(jì)數(shù)器所示,設(shè)程序計(jì)數(shù)器pc=70h。微機(jī)原理與控制微機(jī)原理與控制 工學(xué)院工學(xué)院圖3-2 立即尋址的示意圖微機(jī)原理與控制微機(jī)原理與控制 工學(xué)院工學(xué)院3.2 尋址方式尋址方式l3.2.2 直接尋址直接尋址l指令中直接給出操作數(shù)所在地址的尋址方式稱為直接尋址。指令中直接給出操作數(shù)所在地址的尋址方式稱為直接尋址。l例如,指令:例如,指令:mov a,64h ;a(64h)l這條指令的功能是把內(nèi)部數(shù)

26、據(jù)存儲器地址為這條指令的功能是把內(nèi)部數(shù)據(jù)存儲器地址為64h的存儲單的存儲單元內(nèi)容送至累加器元內(nèi)容送至累加器a,這個指令的操作碼為,這個指令的操作碼為0e5h,直接,直接尋址的示意圖如尋址的示意圖如圖圖33所示,設(shè)程序計(jì)數(shù)器所示,設(shè)程序計(jì)數(shù)器pc=38h。由。由圖可知,地址為圖可知,地址為64h的存儲單元內(nèi)容為的存儲單元內(nèi)容為87h,則指令執(zhí)行,則指令執(zhí)行結(jié)果是將結(jié)果是將87h送到送到acc。微機(jī)原理與控制微機(jī)原理與控制 工學(xué)院工學(xué)院圖3-3 直接尋址的示意圖微機(jī)原理與控制微機(jī)原理與控制 工學(xué)院工學(xué)院3.2 尋址方式尋址方式l應(yīng)注意直接尋址方式與立即尋址方式的區(qū)別:雖然兩者指令的第二應(yīng)注意直接尋

27、址方式與立即尋址方式的區(qū)別:雖然兩者指令的第二字節(jié)相同,但在助記符指令中相差一個字節(jié)相同,但在助記符指令中相差一個“#”號,由于符號指令與機(jī)號,由于符號指令與機(jī)器指令有一一對應(yīng)的關(guān)系,故操作碼不同,所以執(zhí)行結(jié)果不一樣,器指令有一一對應(yīng)的關(guān)系,故操作碼不同,所以執(zhí)行結(jié)果不一樣,而在操作碼中含有尋址方式的信息。而在操作碼中含有尋址方式的信息。l3.2.3 寄存器尋址寄存器尋址l由指令指出某一個寄存器的內(nèi)容作為操作數(shù),這種尋址方式稱為寄由指令指出某一個寄存器的內(nèi)容作為操作數(shù),這種尋址方式稱為寄存器尋址。寄存器尋址對所選的工作寄存區(qū)存器尋址。寄存器尋址對所選的工作寄存區(qū)r0r7進(jìn)行操作,操進(jìn)行操作,操

28、作碼字節(jié)的低作碼字節(jié)的低3位位000111指明了所用的寄存器。例如,指令:指明了所用的寄存器。例如,指令:lmov a,r7 ;a(r7)微機(jī)原理與控制微機(jī)原理與控制 工學(xué)院工學(xué)院3.2 尋址方式尋址方式l這條指令的功能是把寄存器這條指令的功能是把寄存器r7的內(nèi)容送人累加器的內(nèi)容送人累加器a中,但中,但數(shù)據(jù)存儲器的數(shù)據(jù)存儲器的4個工作寄存器區(qū)都有寄存器個工作寄存器區(qū)都有寄存器r7,并都有相,并都有相應(yīng)地址,怎樣確定應(yīng)地址,怎樣確定r7的地址呢的地址呢?首先由程序狀態(tài)字寄存器首先由程序狀態(tài)字寄存器(psw)中的中的d3位和位和d4位決定寄存器區(qū),再與操作碼低位決定寄存器區(qū),再與操作碼低3位位組合

29、組合(n=7,為,為111)形成地址形成地址0fh,就是工作寄存器區(qū),就是工作寄存器區(qū)1區(qū)區(qū)中的中的r7寄存器。寄存器尋址方式執(zhí)行過程如寄存器。寄存器尋址方式執(zhí)行過程如圖圖34所示。所示。l3.2.4 寄存器間接尋址寄存器間接尋址l由指令指出某一個寄存器的內(nèi)容作為操作數(shù)的地址,這種由指令指出某一個寄存器的內(nèi)容作為操作數(shù)的地址,這種尋址方式稱為寄存器間接尋址。特別注意:寄存器的內(nèi)容尋址方式稱為寄存器間接尋址。特別注意:寄存器的內(nèi)容不是操作數(shù),而是操作數(shù)所在的存儲器地址。例如,指令:不是操作數(shù),而是操作數(shù)所在的存儲器地址。例如,指令:lmov a, ril這條指令中,這條指令中,i=0指指r0;i

30、=1,則指,則指r1。微機(jī)原理與控制微機(jī)原理與控制 工學(xué)院工學(xué)院圖3-4 寄存器尋址方式微機(jī)原理與控制微機(jī)原理與控制 工學(xué)院工學(xué)院3.2 尋址方式尋址方式l指令功能是將以寄存器指令功能是將以寄存器r0或或r1內(nèi)容為地址的存儲單元中的數(shù)據(jù)內(nèi)容為地址的存儲單元中的數(shù)據(jù)送入送入a。執(zhí)行這條指令首先應(yīng)找到。執(zhí)行這條指令首先應(yīng)找到ri地址,地址,ri的的8位地址位地址a7a0中:中:a7a6a5=000,a2a1=00,a0由由i決定,決定,a4a3由程序狀態(tài)由程序狀態(tài)字寄存器字寄存器psw中中d4d3位決定,其作用實(shí)際是選定工作寄存器區(qū)位決定,其作用實(shí)際是選定工作寄存器區(qū)域。寄存器間接尋址執(zhí)行過程如域

31、。寄存器間接尋址執(zhí)行過程如圖圖35所示,圖中所示,圖中i=1,將以工,將以工作寄存器區(qū)作寄存器區(qū)l的的r1內(nèi)容內(nèi)容64h為地址的存儲單元的數(shù)據(jù)為地址的存儲單元的數(shù)據(jù)51h送人送人a。l3.2.5 變址尋址變址尋址l變址尋址也稱基地址寄存器加變址寄存器間接尋址,它是以程序變址尋址也稱基地址寄存器加變址寄存器間接尋址,它是以程序計(jì)數(shù)器計(jì)數(shù)器pc或數(shù)據(jù)指針或數(shù)據(jù)指針dptr作為基地址寄存器,以累加器作為基地址寄存器,以累加器a作為作為變址寄存器,把兩者內(nèi)容相加形成操作數(shù)的地址。這種尋址方式變址寄存器,把兩者內(nèi)容相加形成操作數(shù)的地址。這種尋址方式用于讀取程序存儲器中常數(shù)表,或訪問外部數(shù)據(jù)存儲器。例如,

32、用于讀取程序存儲器中常數(shù)表,或訪問外部數(shù)據(jù)存儲器。例如,指令:指令:lmovc a, a+dptr ;a(a)+(dptr)微機(jī)原理與控制微機(jī)原理與控制 工學(xué)院工學(xué)院圖3-5 寄存器間接尋址方式微機(jī)原理與控制微機(jī)原理與控制 工學(xué)院工學(xué)院3.2 尋址方式尋址方式l這條指令的功能是把這條指令的功能是把dptr的內(nèi)容作為基地址,的內(nèi)容作為基地址,dptr是是16位寄存器,其高位寄存器,其高8位在位在dph中,低中,低8位在位在dpl中。把累中。把累加器加器a的內(nèi)容作為地址偏移量,兩者相加后得到的內(nèi)容作為地址偏移量,兩者相加后得到16位地位地址,把該地址對應(yīng)的程序存儲器址,把該地址對應(yīng)的程序存儲器ro

33、m單元中的內(nèi)容送到單元中的內(nèi)容送到a中,中,a中原數(shù)據(jù)自動擦除。尋址過程示意圖如中原數(shù)據(jù)自動擦除。尋址過程示意圖如圖圖36所所示。示。l3.2.6 位尋址位尋址lmcs一一51指令系統(tǒng)有一些指令是用于位的操作。位操作指令系統(tǒng)有一些指令是用于位的操作。位操作指令能對內(nèi)部指令能對內(nèi)部ram中的位尋址區(qū)和某些有位地址的特殊中的位尋址區(qū)和某些有位地址的特殊功能寄存器進(jìn)行位操作,也就是說可對位地址空間的每功能寄存器進(jìn)行位操作,也就是說可對位地址空間的每個位進(jìn)行位變量傳送、狀態(tài)控制、邏輯運(yùn)算等操作,常個位進(jìn)行位變量傳送、狀態(tài)控制、邏輯運(yùn)算等操作,常用的位處理器是程序狀態(tài)字寄存器的用的位處理器是程序狀態(tài)字寄

34、存器的cy位。例如,指令:位。例如,指令:lmov c,06h ;cy(06h)微機(jī)原理與控制微機(jī)原理與控制 工學(xué)院工學(xué)院圖3-6 變址尋址方式微機(jī)原理與控制微機(jī)原理與控制 工學(xué)院工學(xué)院3.2 尋址方式尋址方式lc累加器只有一位,指令是位尋址方式,操作碼是累加器只有一位,指令是位尋址方式,操作碼是0a2h,06h是是位地址。指令含義是將內(nèi)部位地址。指令含義是將內(nèi)部ram的的20h單元的單元的d6位的內(nèi)容送入累位的內(nèi)容送入累加器加器c,其指令執(zhí)行過程如,其指令執(zhí)行過程如圖圖37所示。這條指令應(yīng)區(qū)別于指令所示。這條指令應(yīng)區(qū)別于指令“mov a,06h”,a是是8位累加器,意思是將位累加器,意思是將

35、ram中中06h單元的單元的內(nèi)容送入內(nèi)容送入a中,操作碼是中,操作碼是0e5h。l3.2.7 相對尋址相對尋址l相對尋址以程序計(jì)數(shù)器相對尋址以程序計(jì)數(shù)器pc的當(dāng)前值作為基地址,與指令中給定的當(dāng)前值作為基地址,與指令中給定的相對偏移量的相對偏移量rel相加,作為程序邏輯的轉(zhuǎn)移地址。這種尋址方式相加,作為程序邏輯的轉(zhuǎn)移地址。這種尋址方式用于相對轉(zhuǎn)移指令中。用于相對轉(zhuǎn)移指令中。微機(jī)原理與控制微機(jī)原理與控制 工學(xué)院工學(xué)院圖3-7 位尋址方式微機(jī)原理與控制微機(jī)原理與控制 工學(xué)院工學(xué)院3.3 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令l在在mcs一一51單片機(jī)中,數(shù)據(jù)傳送是最基本和最主要操作。數(shù)據(jù)傳送單片機(jī)中,數(shù)據(jù)傳送是最

36、基本和最主要操作。數(shù)據(jù)傳送操作可以在片內(nèi)操作可以在片內(nèi)ram和和sfr內(nèi)進(jìn)行,也可以在累加器內(nèi)進(jìn)行,也可以在累加器a和片外存儲和片外存儲器之間進(jìn)行。指令中必須指定傳送數(shù)據(jù)的源地址和目的地址,以便器之間進(jìn)行。指令中必須指定傳送數(shù)據(jù)的源地址和目的地址,以便機(jī)器執(zhí)行指令時把源地址中內(nèi)容傳送到目的地址中,但不改變源地機(jī)器執(zhí)行指令時把源地址中內(nèi)容傳送到目的地址中,但不改變源地址中內(nèi)容。在這類指令中,除以累加器址中內(nèi)容。在這類指令中,除以累加器a為目的操作數(shù)寄存器指令為目的操作數(shù)寄存器指令會對奇偶標(biāo)志位會對奇偶標(biāo)志位p有影響外,其余指令執(zhí)行時均不會影響任何標(biāo)志有影響外,其余指令執(zhí)行時均不會影響任何標(biāo)志位。

37、位。lmcs一一51單片機(jī)的數(shù)據(jù)傳送指令共有單片機(jī)的數(shù)據(jù)傳送指令共有28條,分為內(nèi)部數(shù)據(jù)傳送指令、條,分為內(nèi)部數(shù)據(jù)傳送指令、外部數(shù)據(jù)傳送指令、堆棧操作指令和數(shù)據(jù)交換指令等四類。本節(jié)將外部數(shù)據(jù)傳送指令、堆棧操作指令和數(shù)據(jù)交換指令等四類。本節(jié)將分類進(jìn)行介紹,并給出相應(yīng)的機(jī)器代碼,以便相互對照加以理解。分類進(jìn)行介紹,并給出相應(yīng)的機(jī)器代碼,以便相互對照加以理解。微機(jī)原理與控制微機(jī)原理與控制 工學(xué)院工學(xué)院3.3 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令l3.3.1 內(nèi)部數(shù)據(jù)傳送指令(內(nèi)部數(shù)據(jù)傳送指令(15條)條)l1. 以以a為目的操作數(shù)的指令為目的操作數(shù)的指令l這類指令的格式為:這類指令的格式為: mov 目的操作數(shù)

38、,目的操作數(shù), 源操作數(shù)源操作數(shù)l1) 指令與指令代碼指令與指令代碼l指令指令 指令代碼指令代碼 操作操作lmov a,rn 11101rrr a(rn)lmov a,direct 11100101 direct a(direct)lmov a,ri 1110011i a(ri)lmov a,#data 01110100 data adata微機(jī)原理與控制微機(jī)原理與控制 工學(xué)院工學(xué)院3.3 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令l對對rn尋址的指令,其機(jī)器碼字節(jié)的低三位為尋址的指令,其機(jī)器碼字節(jié)的低三位為rrr,對應(yīng)于,對應(yīng)于8個工作寄存器之一,當(dāng)為個工作寄存器之一,當(dāng)為000時,表示時,表示r0;為;為0

39、01時,時,表示表示r1;依次類推。;依次類推。l2) 指令功能指令功能 這組指令的功能是把源操作數(shù)的內(nèi)容送入這組指令的功能是把源操作數(shù)的內(nèi)容送入累加器累加器a。l3) 源操作數(shù)尋址方式源操作數(shù)尋址方式 立即尋址;直接尋址;寄存器尋立即尋址;直接尋址;寄存器尋址;寄存器間接尋址等尋址方式。址;寄存器間接尋址等尋址方式。l例例32 說明下列指令的功能及尋址方式。說明下列指令的功能及尋址方式。lmov a, r6lmov a, 64hlmov a, r0lmov a, #78h微機(jī)原理與控制微機(jī)原理與控制 工學(xué)院工學(xué)院3.3 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令l解解 mov a, r6 ; a(r6), 寄

40、存器尋址寄存器尋址l mov a, 64h ; a(64h), 直接尋址直接尋址l mov a, r0 ; a(r0), 寄存器間接尋址寄存器間接尋址l mov a, #78h ; a78h, 立即尋址立即尋址l4) 指令字節(jié)指令字節(jié) 表面看來,這組指令由三部分組成:操作碼、表面看來,這組指令由三部分組成:操作碼、a和和源操作數(shù),但操作碼含有向源操作數(shù),但操作碼含有向a送數(shù)的信息,所以累加器送數(shù)的信息,所以累加器a不占程不占程序存儲器的存儲空間,故這個指令是兩字節(jié)指令。一般來說,不序存儲器的存儲空間,故這個指令是兩字節(jié)指令。一般來說,不占程序存儲器的存儲空間的還有各區(qū)的工作寄存器。占程序存儲器

41、的存儲空間的還有各區(qū)的工作寄存器。微機(jī)原理與控制微機(jī)原理與控制 工學(xué)院工學(xué)院3.3 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令l2以以rn為目的操作數(shù)的指令為目的操作數(shù)的指令l1) 指令與指令代碼指令與指令代碼l指令指令 指令代碼指令代碼 操作操作lmov rn,a 1111lrrr rn(a)lmov rn,direct 10101rrr direct rn(direct)lmov rn,#data 01111rrr data rndatal2) 功能功能 這組指令的功能是將源操作數(shù)的內(nèi)容送入當(dāng)前這組指令的功能是將源操作數(shù)的內(nèi)容送入當(dāng)前工作寄存器區(qū)的工作寄存器區(qū)的r0r7中的某一個寄存器。中的某一個寄存器。l

42、3) 源操作數(shù)尋址方式源操作數(shù)尋址方式 立即尋址;直接尋址;寄存器尋立即尋址;直接尋址;寄存器尋址。址。微機(jī)原理與控制微機(jī)原理與控制 工學(xué)院工學(xué)院3.3 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令l例例34 指出下列指令的功能和尋址方式。指出下列指令的功能和尋址方式。lmov r2,#64hlmov r3,64hlmov r7,al解解 mov r2,#64h ; r264h, 立即尋址立即尋址l mov r3,64h ; r3(64h), 直接尋址直接尋址 l mov r7,a ; r7(a), 寄存器尋址寄存器尋址微機(jī)原理與控制微機(jī)原理與控制 工學(xué)院工學(xué)院3.3 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令l3以直接尋址的單元

43、為目的操作數(shù)指令以直接尋址的單元為目的操作數(shù)指令l1) 指令與指令代碼指令與指令代碼l指令指令 指令代碼指令代碼 操作操作lmov direct,a 11110101 direct direct(a)lmov direct,rn 10001rrr direct direct(rn)lmov direct1,direct2 10000101 direct2 direct1(direct2)lmov direct,ri 1000011i direct direct(ri)lmov direct,#data 01110101 direct,data directdata微機(jī)原理與控制微機(jī)原理與控制

44、工學(xué)院工學(xué)院3.3 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令l應(yīng)注意:應(yīng)注意:“mov direct1,direct2”指令譯成指令代碼時,源地址指令譯成指令代碼時,源地址(direct2)在前,目的地址在前,目的地址direct1在后。在后。l2) 功能功能 這組指令的功能是把源操作數(shù)送人由直接地址指向的存儲單這組指令的功能是把源操作數(shù)送人由直接地址指向的存儲單元,直接尋址時,元,直接尋址時,direct可以是特殊功能寄存器的地址、內(nèi)部可以是特殊功能寄存器的地址、內(nèi)部ram區(qū)的地址,因此允許對端口直接操作。例如,指令:區(qū)的地址,因此允許對端口直接操作。例如,指令:“mov p1,40h”的含義是將的含義是將

45、40h單元的內(nèi)容送入單元的內(nèi)容送入p1端口,機(jī)器指令為端口,機(jī)器指令為“10000101 01000000 10010000”,是三字節(jié)指令。第一字節(jié)是操,是三字節(jié)指令。第一字節(jié)是操作碼,第二字節(jié)是源操作數(shù)的地址,第三字節(jié)是目的操作數(shù)作碼,第二字節(jié)是源操作數(shù)的地址,第三字節(jié)是目的操作數(shù)p1的地的地址。址。l3) 源操作數(shù)尋址方式源操作數(shù)尋址方式 立即尋址;直接尋址;寄存器尋址;寄存器間立即尋址;直接尋址;寄存器尋址;寄存器間接尋址。接尋址。微機(jī)原理與控制微機(jī)原理與控制 工學(xué)院工學(xué)院3.3 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令l例例37 若若(64h)=70h,(a)=78h,說明執(zhí)行指令,說明執(zhí)行指令“m

46、ov 64h,a”的結(jié)果。的結(jié)果。l解解 執(zhí)行后結(jié)果為執(zhí)行后結(jié)果為(64h)=78h,(a)=78h不變。不變。l 4以寄存器間接尋址的單元為目的操作數(shù)指令以寄存器間接尋址的單元為目的操作數(shù)指令l1) 指令與指令代碼指令與指令代碼l指令指令 指令代碼指令代碼 操作操作lmov ri,a 111101li (ri) (a)lmov ri,direct 101001li direct (ri) (direct)lmov ri,#data 011101li data (ri) data微機(jī)原理與控制微機(jī)原理與控制 工學(xué)院工學(xué)院3.3 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令l2) 功能功能 本組指令是將源操作數(shù)送人

47、以本組指令是將源操作數(shù)送人以r0或或r1內(nèi)容為地址的存儲單內(nèi)容為地址的存儲單元中。元中。l3) 源操作數(shù)尋址方式源操作數(shù)尋址方式 立即尋址;直接尋址;寄存器尋址。立即尋址;直接尋址;寄存器尋址。l例例310 若若(30h)=35h,(r1)=70h,說明執(zhí)行指令,說明執(zhí)行指令“mov r1,30h”的結(jié)果。的結(jié)果。l解解 70h單元的內(nèi)容為單元的內(nèi)容為35h,同時,同時(30h)=35h,(r1)=70h不變。不變。l3.3.2 外部數(shù)據(jù)傳送指令(外部數(shù)據(jù)傳送指令(7條)條)l116位數(shù)據(jù)傳送指令位數(shù)據(jù)傳送指令l1) 指令與指令代碼指令與指令代碼l指令指令 指令代碼指令代碼 操作操作lmov

48、dptr,#data16 10010000 datah8datal8 dptrdatal6微機(jī)原理與控制微機(jī)原理與控制 工學(xué)院工學(xué)院3.3 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令l2) 功能功能 把把16位常數(shù)送入位常數(shù)送入dptr,16位的數(shù)據(jù)指針位的數(shù)據(jù)指針dptr由由dph和和dpl組成,執(zhí)行結(jié)果把高位立即數(shù)送入組成,執(zhí)行結(jié)果把高位立即數(shù)送入dph,低位立即數(shù)送入,低位立即數(shù)送入dpl,本指令是三字節(jié)指令。本指令是三字節(jié)指令。l2.外部外部rom的字節(jié)傳送指令的字節(jié)傳送指令l由于外部程序存儲器只讀不寫,因此數(shù)據(jù)傳送是單向的,即只從外由于外部程序存儲器只讀不寫,因此數(shù)據(jù)傳送是單向的,即只從外部程序存儲器

49、中讀出數(shù)據(jù),并且只能向累加器部程序存儲器中讀出數(shù)據(jù),并且只能向累加器a傳送。這類指令共有傳送。這類指令共有兩條,均屬于變址尋址指令,因?qū)iT用于查表而又稱為查表指令。兩條,均屬于變址尋址指令,因?qū)iT用于查表而又稱為查表指令。l(1)指令)指令 movc a, a+pc微機(jī)原理與控制微機(jī)原理與控制 工學(xué)院工學(xué)院3.3 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令l本指令的指令代碼是本指令的指令代碼是10000011,為一字節(jié)指令,當(dāng),為一字節(jié)指令,當(dāng)cpu讀取本條指讀取本條指令后,令后,pc已自動加已自動加1,指向下一條指令的首字節(jié)的地址。如果該指,指向下一條指令的首字節(jié)的地址。如果該指令存放單元為令存放單元為100

50、0h,則,則pc的當(dāng)前值為的當(dāng)前值為1001h。執(zhí)行該指令時,把。執(zhí)行該指令時,把a(bǔ)的內(nèi)容作為無符號數(shù)和的內(nèi)容作為無符號數(shù)和pc當(dāng)前內(nèi)容相加后得到一個當(dāng)前內(nèi)容相加后得到一個16位的地址,位的地址,并將該地址指出的程序存儲器單元內(nèi)容送到累加器并將該地址指出的程序存儲器單元內(nèi)容送到累加器a。而。而a的內(nèi)容從的內(nèi)容從00h-0ffh共共256個,所以個,所以(a)和和(pc)相加得到的地址只能在該查表指相加得到的地址只能在該查表指令以下令以下256個單元地址內(nèi)。個單元地址內(nèi)?!癿ovc”中的中的“c”表示程序存儲器。表示程序存儲器。l例例313 設(shè)設(shè)(a)=30h,執(zhí)行指令,執(zhí)行指令“1000h:m

51、ovc a,a+pc”的的結(jié)果。結(jié)果。l解解 該指令將程序存儲器中該指令將程序存儲器中1031h單元內(nèi)容送入累加器單元內(nèi)容送入累加器a中。中。微機(jī)原理與控制微機(jī)原理與控制 工學(xué)院工學(xué)院3.3 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令l(2)指令)指令 movc a,a+dptrl這條指令的指令代碼是這條指令的指令代碼是10010011,它的操作是以,它的操作是以dptr作為基地址寄存器,由作為基地址寄存器,由a中的無符號數(shù)與中的無符號數(shù)與dptr中的內(nèi)容中的內(nèi)容相加得到一個相加得到一個16位的程序存儲器的地址,并將該地址的位的程序存儲器的地址,并將該地址的內(nèi)容送到內(nèi)容送到a。l例例315 設(shè)設(shè)(dptr)=8

52、100h,(a)=40h,說明執(zhí)行指令,說明執(zhí)行指令后的結(jié)果。后的結(jié)果。lmovc a,a+dptrl解解 將程序存儲器中將程序存儲器中8140h單元內(nèi)容送人累加器單元內(nèi)容送人累加器a。l該指令只與該指令只與a的內(nèi)容相關(guān),與該指令存放的地址無關(guān),的內(nèi)容相關(guān),與該指令存放的地址無關(guān),因此表格大小和位置可在因此表格大小和位置可在64k字節(jié)程序存儲器中任意安字節(jié)程序存儲器中任意安排,只要在查表之前對排,只要在查表之前對dptr和和a賦值,就使一個表格可賦值,就使一個表格可被各個程序所公用。被各個程序所公用。微機(jī)原理與控制微機(jī)原理與控制 工學(xué)院工學(xué)院3.3 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令l3.外部外部ram

53、的字節(jié)傳送指令的字節(jié)傳送指令l1) 指令與指令代碼指令與指令代碼l指令指令 指令代碼指令代碼 操作操作lmovx a,dptr 11100000 (dptr)almovx a,ri 1110001i (ri)+(p2)almovx dptr,a 11110000 (a)(dptr)lmovx ri,a 1111001i (a)(ri)十十(p2)微機(jī)原理與控制微機(jī)原理與控制 工學(xué)院工學(xué)院3.3 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令l 2) 功能功能 這組指令是將累加器這組指令是將累加器a和外部擴(kuò)展的和外部擴(kuò)展的ram的數(shù)的數(shù)據(jù)傳送,由于據(jù)傳送,由于dptr是是16位地址指針,因此用位地址指針,因此用dpt

54、r間接間接尋址的指令尋址范圍是尋址的指令尋址范圍是064k字節(jié);而字節(jié);而ri是是8位寄存器,位寄存器,故用故用ri間接尋址的指令尋址范圍是外部間接尋址的指令尋址范圍是外部ram的低的低256單單元。外部元。外部ram的數(shù)據(jù)傳送,只有通過累加器的數(shù)據(jù)傳送,只有通過累加器a來進(jìn)行。來進(jìn)行。在片外容量大于在片外容量大于256個單元時,地址高個單元時,地址高8位由位由p2口輸出,口輸出,而而ri中的地址作為低中的地址作為低8位地址經(jīng)位地址經(jīng)p0口輸出,這些口輸出,這些(ri)與與(p2)組合后,可對片外組合后,可對片外064kb范圍尋址。范圍尋址。l例例316 將外部將外部ram 30h單元的內(nèi)容送

55、入內(nèi)部單元的內(nèi)容送入內(nèi)部ram 20h的單元。的單元。l解解 mov r0,#30hl movx a,r0l mov 20h,a微機(jī)原理與控制微機(jī)原理與控制 工學(xué)院工學(xué)院3.3 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令l3.3.3 堆棧操作指令(堆棧操作指令(2條)條)l在在mcs一一51內(nèi)部內(nèi)部ram中可以設(shè)定一個后進(jìn)先出的堆棧,中可以設(shè)定一個后進(jìn)先出的堆棧,地址為地址為30h7fh,堆棧指針,堆棧指針sp中的內(nèi)容總是堆棧區(qū)中中的內(nèi)容總是堆棧區(qū)中最后一個進(jìn)棧數(shù)據(jù)所在的存儲單元地址。堆棧操作包括最后一個進(jìn)棧數(shù)據(jù)所在的存儲單元地址。堆棧操作包括進(jìn)棧和出棧兩種。進(jìn)棧和出棧兩種。l1. 進(jìn)棧指令與指令代碼進(jìn)棧指令與

56、指令代碼l指令指令 指令代碼指令代碼 操作操作lpush direct 11000000 direct spsp+1 (sp)(direct)l這條指令首先將堆棧指針這條指令首先將堆棧指針sp+1,然后把直接地址里的內(nèi),然后把直接地址里的內(nèi)容傳送到堆棧指針容傳送到堆棧指針sp指出的內(nèi)部指出的內(nèi)部ram存儲單元中。存儲單元中。微機(jī)原理與控制微機(jī)原理與控制 工學(xué)院工學(xué)院3.3 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令l例例318 設(shè)設(shè)(sp)=30h,(acc)=60h,(b)=70h,執(zhí)行下,執(zhí)行下列指令后結(jié)果怎樣列指令后結(jié)果怎樣?lpush acclpush bl解解 操作過程是:操作過程是:lpush ac

57、c ;(sp)+1,31hsp,(acc) 31hlpush b ;(sp)+1,32hsp,(b)32hl結(jié)果為結(jié)果為(31h)=60h,(32h)=70h,(sp)=32h微機(jī)原理與控制微機(jī)原理與控制 工學(xué)院工學(xué)院3.3 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令l2. 出棧指令與指令代碼出棧指令與指令代碼l指令指令 指令代碼指令代碼 操作操作lpop direct 11010000 direct (sp)direct spsp-1l這條指令的功能是將堆棧指針這條指令的功能是將堆棧指針sp指出的內(nèi)部指出的內(nèi)部ram單元的內(nèi)容送入直單元的內(nèi)容送入直接地址指出的存儲單元中,堆棧指針接地址指出的存儲單元中,堆棧指

58、針sp減減1。出棧指令用于恢復(fù)。出棧指令用于恢復(fù)cpu現(xiàn)場?,F(xiàn)場。l例例319 設(shè)設(shè)(sp)=32h,(32h)=70h,(31h)=60h,執(zhí)行下述指令后,執(zhí)行下述指令后結(jié)果怎樣結(jié)果怎樣?lpop dphlpop dpl微機(jī)原理與控制微機(jī)原理與控制 工學(xué)院工學(xué)院3.3 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令l解解 操作過程是:操作過程是:lpop dph ;(sp) dph,(sp)-1splpop dpl ;(sp) dpl,(sp)-1spl結(jié)果為結(jié)果為(dph)=70h,(dpl)=60h,所以,所以,dptr=7060h,(sp)=30hl3.3.4 數(shù)據(jù)交換指令(數(shù)據(jù)交換指令(4條)條)l數(shù)據(jù)交

59、換指令共有數(shù)據(jù)交換指令共有4條,其中字節(jié)交換指令條,其中字節(jié)交換指令3條,半字節(jié)交換指令條,半字節(jié)交換指令1條。條。l1字節(jié)交換指令字節(jié)交換指令l1) 指令與指令代碼指令與指令代碼l指令指令 指令代碼指令代碼lxch a,rn 11001rrrlxch a,direct 11000101 directlxch a,ri 1100011i微機(jī)原理與控制微機(jī)原理與控制 工學(xué)院工學(xué)院3.3 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令l2) 功能功能 將累加器將累加器a的內(nèi)容和源操作數(shù)內(nèi)容相互交換。的內(nèi)容和源操作數(shù)內(nèi)容相互交換。l3) 源操作數(shù)尋址方式源操作數(shù)尋址方式 寄存器尋址;直接尋址;寄存器寄存器尋址;直接尋址;

60、寄存器間接尋址。間接尋址。l例例3一一20 設(shè)設(shè)(a)=80h,(r1)=74h,(74h)=60h,(60h)=50h,(80h)=40h,順序執(zhí)行下列指令后結(jié)果怎,順序執(zhí)行下列指令后結(jié)果怎樣樣?lxch a,r1lxch a,60hlxch a,r1l解解 執(zhí)行指令執(zhí)行指令結(jié)果:結(jié)果:(a)=74h,(r1)=80hl 結(jié)果:結(jié)果:(a)=50h,(60h)=74hl 結(jié)果:結(jié)果:(a)=40h,(80h)=50h微機(jī)原理與控制微機(jī)原理與控制 工學(xué)院工學(xué)院3.3 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令l2半字節(jié)交換指令半字節(jié)交換指令l1) 指令與指令代碼指令與指令代碼l指令指令 指令代碼指令代碼lxch

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論