




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、微機原理及應用微機原理及應用 吳麗娟吳麗娟2022-6-141/94第第5章章86系列微型計算機的指令系統系列微型計算機的指令系統5.2傳送類指令傳送類指令5.4串操作指令串操作指令5.5控制類指令控制類指令5.186系列匯編語言及指令的格式與尋址方式系列匯編語言及指令的格式與尋址方式5.3數據操作類指令數據操作類指令微機原理及應用微機原理及應用 吳麗娟吳麗娟2022-6-142/94 指令是讓計算機完成某種操作的命令指令是讓計算機完成某種操作的命令, 指令的集合稱作指令的集合稱作指令系統指令系統, 不同系列計算機有不同的指令系統。不同系列計算機有不同的指令系統。 指令的符號用規(guī)定的英文字母組
2、成指令的符號用規(guī)定的英文字母組成, 稱為助記符。稱為助記符。 指令進行編程能夠充分開發(fā)計算機硬件資源指令進行編程能夠充分開發(fā)計算機硬件資源, 它的程序它的程序目標代碼短、運行速度快目標代碼短、運行速度快, 因此因此, 指令語言是面向機器的語指令語言是面向機器的語言言, 在自動控制、智能化儀器儀表、監(jiān)測等領域應用廣泛。在自動控制、智能化儀器儀表、監(jiān)測等領域應用廣泛。微機原理及應用微機原理及應用 吳麗娟吳麗娟2022-6-143/945.1 86系列匯編語言及指令的格式與尋址方式系列匯編語言及指令的格式與尋址方式5.1.1 86系列匯編語言指令語句格式系列匯編語言指令語句格式 任何一種匯編語言的指
3、令語句都是與機器指令一一對應的任何一種匯編語言的指令語句都是與機器指令一一對應的, 它通過匯編程序將其翻譯成機器指令代碼它通過匯編程序將其翻譯成機器指令代碼 (目標代碼目標代碼), 讓讓CPU執(zhí)行某種操作。執(zhí)行某種操作。86系列匯編語言指令語句格式如圖系列匯編語言指令語句格式如圖 5.1 所示。所示。圖中由前向后的箭頭表示是可選項圖中由前向后的箭頭表示是可選項, 由后向前的箭頭表示是重由后向前的箭頭表示是重復項復項, 圓頭方框表示是語句中的關鍵字。圓頭方框表示是語句中的關鍵字。微機原理及應用微機原理及應用 吳麗娟吳麗娟2022-6-144/94(1) 標號是給該指令所在地址取的名字標號是給該指
4、令所在地址取的名字, 必須后跟冒號必須后跟冒號“:”, 它它可以缺省可以缺省, 是可供選擇的標識符。是可供選擇的標識符。86系列匯編語言中可使用的系列匯編語言中可使用的標識符必須遵循下列規(guī)則:標識符必須遵循下列規(guī)則:標識符由字母標識符由字母(az, AZ)、數字、數字(09)或某些特殊字符或某些特殊字符(, , ?)組成。組成。第一個字符必須是字母第一個字符必須是字母(az, AZ)或某些特殊的符號或某些特殊的符號(, , ?), 但但“?”不能單獨作標識符。不能單獨作標識符。標識符有效長度為標識符有效長度為31個字符個字符, 若超過若超過31個字符個字符, 則只保留前面則只保留前面的的31個
5、字符為有效標識符。個字符為有效標識符。微機原理及應用微機原理及應用 吳麗娟吳麗娟2022-6-145/94 下面是有效的標識符:下面是有效的標識符:START:MYCODE:ALPHA:NUM1:LOOP1:X: ?MORE350:BETA1:DELAYIS: 下面是無效的標識符:下面是無效的標識符:4LOOP:MAINA/B:BETA*:START3:GAMA1:NUM+1:?:ONE*TWO:微機原理及應用微機原理及應用 吳麗娟吳麗娟2022-6-146/94(2) 指令助記符是指令名稱的代表符號指令助記符是指令名稱的代表符號, 它是指令語句中的關鍵字它是指令語句中的關鍵字, 不可缺省不可
6、缺省, 它表示本指令的操作類型它表示本指令的操作類型, 必要時可在指令助記符的必要時可在指令助記符的前面加上一個或多個前面加上一個或多個“前綴前綴”, 從而實現某些附加操作。從而實現某些附加操作。(3) 操作數是參加本指令運算的數據操作數是參加本指令運算的數據, 有些指令不需要操作數有些指令不需要操作數, 可以可以缺省;有些指令需要兩個操作數缺省;有些指令需要兩個操作數, 這時必須用逗號這時必須用逗號(, )將兩個操將兩個操作數分開;有些操作數可以用表達式來表示。作數分開;有些操作數可以用表達式來表示。(4) 注釋部分是可選項注釋部分是可選項, 允許缺省允許缺省, 如果帶注釋則必須用分號如果帶
7、注釋則必須用分號(;)開開頭頭, 注釋本身只用來對指令功能加以說明注釋本身只用來對指令功能加以說明, 給閱讀程序帶來方便給閱讀程序帶來方便, 匯編程序不對它做任何處理。匯編程序不對它做任何處理。微機原理及應用微機原理及應用 吳麗娟吳麗娟2022-6-147/945.1.2 86系列系列 CPU的尋址方式的尋址方式 機器執(zhí)行指令的目的就是對指定的操作數完成規(guī)定的操作機器執(zhí)行指令的目的就是對指定的操作數完成規(guī)定的操作, 將操作結果存入規(guī)定的地方。因此將操作結果存入規(guī)定的地方。因此, 如何獲得操作數的存放地址如何獲得操作數的存放地址及操作結果的存放地址就是一個很關鍵的問題。及操作結果的存放地址就是一
8、個很關鍵的問題。8086/8088 CPU有多種方法來獲取操作數的存放地址及操作結果的存放地址有多種方法來獲取操作數的存放地址及操作結果的存放地址, 這這些方法統稱為數據尋址方式。些方法統稱為數據尋址方式。微機原理及應用微機原理及應用 吳麗娟吳麗娟2022-6-148/945.1.2 86系列系列 CPU的尋址方式的尋址方式n為什么要設置多種尋址方式?為什么要設置多種尋址方式?n希望用最短的指令長度訪問盡可能大的存儲器空間希望用最短的指令長度訪問盡可能大的存儲器空間 n希望給多樣的程序設計技術和數據結構對數據訪問的靈希望給多樣的程序設計技術和數據結構對數據訪問的靈活性和有效性提供支持活性和有效
9、性提供支持 n變址尋址便于處理表格和矩陣變址尋址便于處理表格和矩陣n相對尋址便于編制浮動的、可重入的程序相對尋址便于編制浮動的、可重入的程序下面主要以下面主要以MOV指令為例指令為例, 介紹介紹86系列系列CPU的尋址方式。的尋址方式。微機原理及應用微機原理及應用 吳麗娟吳麗娟2022-6-149/94MOV指令的功能指令的功能格式:格式:MOV 目的操作數目的操作數(dest) , 源操作數源操作數(src)微機原理及應用微機原理及應用 吳麗娟吳麗娟2022-6-1410/94n 8086 CPU指令系統中指令系統中, 有一部分指令所用的有一部分指令所用的8位或位或16位操作位操作數就在指令
10、中提供數就在指令中提供, 這種方式稱作立即數尋址方式。例如:這種方式稱作立即數尋址方式。例如:n MOV AL, 80H;將十六進制數;將十六進制數80H送入送入ALn MOV AX, 1090H;將;將1090H送送AX, AH中為中為10H, AL中為中為90Hn 采用立即數尋址方式的指令主要用來對寄存器賦值。因為采用立即數尋址方式的指令主要用來對寄存器賦值。因為操作數可以從指令中直接取得操作數可以從指令中直接取得, 不需要運行總線周期不需要運行總線周期, 所以所以, 立即立即數尋址方式的顯著特點就是速度快。數尋址方式的顯著特點就是速度快。n 立即數可以為立即數可以為8位位, 也可以為也可
11、以為16位;規(guī)定立即數只能是整數位;規(guī)定立即數只能是整數, 不能是小數、變量或者其他類型的數據;另外還要注意不能是小數、變量或者其他類型的數據;另外還要注意, 立即數立即數只能作為源操作數。只能作為源操作數。 1. 立即數尋址立即數尋址立即數尋址方式立即數尋址方式微機原理及應用微機原理及應用 吳麗娟吳麗娟微機原理及應用微機原理及應用 吳麗娟吳麗娟2022-6-1412/94n 1. 立即數尋址立即數尋址【例】畫出【例】畫出MOV AX, 1946H 指令執(zhí)行過程示意圖。指令執(zhí)行過程示意圖。解:指令執(zhí)行后解:指令執(zhí)行后, AX=1946H, 16位數據位數據1946H存入寄存器存入寄存器, 下圖
12、中下圖中, 指令存放于代碼段指令存放于代碼段, OP為操作碼為操作碼, 接著存放低位字節(jié)數接著存放低位字節(jié)數46H, 在存放高位在存放高位字節(jié)數字節(jié)數19H, 這是字類型的立即數這是字類型的立即數, 為為指令機器碼的一部分。指令機器碼的一部分。微機原理及應用微機原理及應用 吳麗娟吳麗娟2022-6-1413/94 2. 寄存器尋址寄存器尋址 如果操作數就在如果操作數就在CPU的內部寄存器中的內部寄存器中, 那么寄存器名可在指那么寄存器名可在指令中指出。這種尋址方式就叫寄存器尋址方式。令中指出。這種尋址方式就叫寄存器尋址方式。 對對16位操作數來說位操作數來說, 寄存器可以為寄存器可以為AX,
13、BX, CX, DX, SI, DI, SP或者或者BP, 而對而對8位操作數來說位操作數來說, 寄存器可為寄存器可為AH, AL, BH, BL, CH, CL, DH, DL。例如:。例如: INCCX;將;將CX的內容加的內容加1 ROLAH, 1;將;將AH中的內容循環(huán)左移一位中的內容循環(huán)左移一位 采用寄存器尋址方式的指令在執(zhí)行時采用寄存器尋址方式的指令在執(zhí)行時, 操作就在操作就在CPU內部進內部進行行, 不需要使用總線周期不需要使用總線周期, 因此因此, 執(zhí)行速度快。在一條指令中執(zhí)行速度快。在一條指令中, 可以可以對源操作數采用寄存器尋址方式對源操作數采用寄存器尋址方式, 也可以對目
14、的操作數采用寄存也可以對目的操作數采用寄存器尋址方式器尋址方式, 還可以兩者都用寄存器尋址方式。還可以兩者都用寄存器尋址方式。微機原理及應用微機原理及應用 吳麗娟吳麗娟2022-6-1414/94 2. 寄存器尋址寄存器尋址例:下列程序執(zhí)行后例:下列程序執(zhí)行后, (AX)=?, (BX)=? MOV AX, 1234H MOV BX, 5678H ADD AX, BX 該程序中該程序中MOV指令為數據傳送指令操作符指令為數據傳送指令操作符, ADD指令為加法指指令為加法指令操作符令操作符, 三條指令皆為雙操作數指令。第一、二條指令三條指令皆為雙操作數指令。第一、二條指令AX、BX皆為目的操作數
15、地址皆為目的操作數地址, 為寄存器尋址方式。第三條指令中為寄存器尋址方式。第三條指令中, AX為目的操作數地址為目的操作數地址, BX為源操作數地址。源地址和目的地址為源操作數地址。源地址和目的地址皆為寄存器尋址方式。皆為寄存器尋址方式。執(zhí)行:執(zhí)行:1234HAX 5678HBX (AX)+(BX)AX 執(zhí)行后:執(zhí)行后:(AX)=68ACH, (BX)=5678H微機原理及應用微機原理及應用 吳麗娟吳麗娟2022-6-1415/94微機原理及應用微機原理及應用 吳麗娟吳麗娟2022-6-1416/94 2. 寄存器尋址寄存器尋址例:設例:設AX=4710H, CX=7507H。 問執(zhí)行指令問執(zhí)
16、行指令 MOV AX, CX 后后AX=?, BX=?解:解:AX寄存器的內容被寄存器的內容被CX的內的內容取代容取代, CX本身的內容不變本身的內容不變, 故故 AX=7507H, BX=7507H。微機原理及應用微機原理及應用 吳麗娟吳麗娟2022-6-1417/94 3. 直接尋址直接尋址 使用直接尋址方式時使用直接尋址方式時, 數據總是在存儲器中數據總是在存儲器中, 存儲單元的有效地存儲單元的有效地址由指令直接指出址由指令直接指出, 所以直接尋址是對存儲器進行訪問時可采用的所以直接尋址是對存儲器進行訪問時可采用的最簡單的方式。例如:最簡單的方式。例如:MOV AX, 1070H; 將將
17、DS段的段的1070H和和1071H兩單元的內容取到兩單元的內容取到AX中中 注意:采用直接尋址方式時注意:采用直接尋址方式時, 如果指令前面沒有用前綴指明操作如果指令前面沒有用前綴指明操作數在哪一段數在哪一段, 則默認為段寄存器是數據段寄存器則默認為段寄存器是數據段寄存器DS。例如。例如, 上一上一條指令執(zhí)行時條指令執(zhí)行時, 設設DS2000H, 則執(zhí)行過程是將絕對地址為則執(zhí)行過程是將絕對地址為21070H和和21071H兩單元的內容取出送兩單元的內容取出送AX。直接尋址方式直接尋址方式微機原理及應用微機原理及應用 吳麗娟吳麗娟微機原理及應用微機原理及應用 吳麗娟吳麗娟2022-6-1419
18、/94 如果要對其它段寄存器所指出的存儲區(qū)進行直接尋址如果要對其它段寄存器所指出的存儲區(qū)進行直接尋址, 則本條則本條指令前必須用前綴指出段寄存器名。例如:指令前必須用前綴指出段寄存器名。例如: CS:MOV BX, 3000H;將將CS段的段的3000H和和3001H兩單元兩單元的內容送的內容送BX 設設CS為為5100H, 則本指令在執(zhí)行時則本指令在執(zhí)行時, 將將54000H和和54001H兩單元兩單元的內容取出送的內容取出送BX。微機原理及應用微機原理及應用 吳麗娟吳麗娟2022-6-1420/94n【例例】假設】假設TABLE是在附加數據段定義的一個字節(jié)數組的首地址標是在附加數據段定義的
19、一個字節(jié)數組的首地址標號號, 其偏移地址為其偏移地址為1000H, 則指令:則指令:n MOV AL, ES:TABLEn或或MOV AL, ES:TABLEn或或MOV AL, ES:1000Hn或或MOV AL, ES:1000Hn是等效的是等效的, 都表示將字節(jié)數組的第一個數組元素送入都表示將字節(jié)數組的第一個數組元素送入AL寄存器中。寄存器中。n MOV AL, ES:TABLE+2n或或MOV AL, ES:TABLE+2n或或MOV AL, ES:1000H+2n或或MOV AL, ES:1000H+2n 也是等效的也是等效的, 都表示將字節(jié)數組的第三個數組元素送入都表示將字節(jié)數組的
20、第三個數組元素送入AL寄存器中。寄存器中。這種尋址方式一般適用于處理單個變量。這種尋址方式一般適用于處理單個變量。微機原理及應用微機原理及應用 吳麗娟吳麗娟2022-6-1421/94n例例 (1)MOV AX, 1024H MOV BX, ES1000H n設設DS=2000H, ES=3000H, (21024H)=1784H, (31000H)=1234H。n 指令執(zhí)行后指令執(zhí)行后AX=?, BX=?30000H31000H31001H341200000H21024H21025H8417AH17 84ALBH12 34BL(1)DS16+1024H=21024HAX=1784HES=30
21、00H則則BX=1234H微機原理及應用微機原理及應用 吳麗娟吳麗娟2022-6-1422/94 4. 寄存器間接尋址寄存器間接尋址 采用寄存器間接尋址方式時采用寄存器間接尋址方式時, 操作數一定在存儲器中操作數一定在存儲器中, 存儲單元的存儲單元的有效地址由寄存器指出有效地址由寄存器指出, 這些寄存器可以為這些寄存器可以為BX, BP, SI和和DI之一之一, 即即有效地址等于其中某一個寄存器的值:有效地址等于其中某一個寄存器的值: BX BP SI DI EA偏移地址偏移地址EA計算方法:計算方法: 和直接尋址類似和直接尋址類似, 若指令前面沒有用前綴指明具體的段寄存器若指令前面沒有用前綴
22、指明具體的段寄存器, 則則尋址時默認的段寄存器通常為尋址時默認的段寄存器通常為DS。如寄存器為。如寄存器為BP時時, 則對應的段寄則對應的段寄存器為存器為SS。微機原理及應用微機原理及應用 吳麗娟吳麗娟2022-6-1423/94 采用寄存器間接尋址時采用寄存器間接尋址時, 允許在指令中指定一個位移量允許在指令中指定一個位移量, 這樣這樣, 有效地址通過將一個寄存器的內容加上一個位移量來得到。位有效地址通過將一個寄存器的內容加上一個位移量來得到。位移量可以為移量可以為8位位, 也可以為也可以為16位。即:位。即: BX BP 8位位移量位位移量 SI 16位位移量位位移量 DI 細分起來細分起
23、來, 寄存器間接尋址可分為以下寄存器間接尋址可分為以下4種:種:EA+微機原理及應用微機原理及應用 吳麗娟吳麗娟2022-6-1424/94(1)以以BX寄存器進行間接尋址寄存器進行間接尋址數據段基址尋址數據段基址尋址 如如 MOV AX, BX(2)以以BP寄存器進行間接尋址寄存器進行間接尋址堆棧段基址尋址堆棧段基址尋址 如如 MOV BX, BP(3)以以SI和和DI寄存器進行間接尋址寄存器進行間接尋址變址尋址變址尋址 其中其中 SI為源寄存器、為源寄存器、DI為目的寄存器為目的寄存器(4)將將BX、BP和和SI、DI寄存器組合起來進行間接尋址寄存器組合起來進行間接尋址基址加變址尋址基址加
24、變址尋址 如如 MOV AX, BX+SI MOV AX, BX+SI+0050;相對基址加變址尋址;相對基址加變址尋址微機原理及應用微機原理及應用 吳麗娟吳麗娟2022-6-1425/94 (1) 以以BX寄存器進行間接尋址寄存器進行間接尋址數據段基址尋址數據段基址尋址。 用用BX寄存器進行間接尋址時寄存器進行間接尋址時, 默認的段寄存器為默認的段寄存器為DS, 因為因為BX稱為基稱為基址寄存器址寄存器, 所以這種尋址方式也叫數據段基址尋址。例如所以這種尋址方式也叫數據段基址尋址。例如: MOV AX, BX 設設DS5000H, BX3000H, 則本指令在執(zhí)行時則本指令在執(zhí)行時, 將將5
25、3000H和和53001H兩單元的內容送兩單元的內容送AX。 如果要對其它段寄存器所指的區(qū)域進行尋址如果要對其它段寄存器所指的區(qū)域進行尋址, 則必須在指令前用前綴則必須在指令前用前綴指出段寄存器名。例如:指出段寄存器名。例如:ES MOV CX, BX 設設ES3000H, BX4000H, 則本指令在執(zhí)行時則本指令在執(zhí)行時, 將將34000H和和34001H兩單元的內容送兩單元的內容送CX。寄存器間接尋址方式寄存器間接尋址方式微機原理及應用微機原理及應用 吳麗娟吳麗娟微機原理及應用微機原理及應用 吳麗娟吳麗娟2022-6-1427/94 (2) 以以BP寄存器進行間接尋址寄存器進行間接尋址堆
26、棧段基址尋址。堆棧段基址尋址。 如果以寄存器如果以寄存器BP對操作數進行間接尋址對操作數進行間接尋址, 則必須注意則必須注意, 操操作數默認在堆棧段中作數默認在堆棧段中, 因為因為BP稱為基址寄存器稱為基址寄存器, 所以這種尋址所以這種尋址方式通常稱為堆棧段基址尋址。例如:方式通常稱為堆棧段基址尋址。例如: MOVBX, BP 設設SS5000H, BP4000H, 則本指令在執(zhí)行時則本指令在執(zhí)行時, 將將54000H和和54001H兩單元的內容送兩單元的內容送BX。微機原理及應用微機原理及應用 吳麗娟吳麗娟2022-6-1428/94(3) 以以SI和和DI寄存器進行間接尋址寄存器進行間接尋
27、址變址尋址。變址尋址。 SI和和DI寄存器分別稱為源變址寄存器和目的變址寄存器寄存器分別稱為源變址寄存器和目的變址寄存器, 所以用這兩個寄存器來進行間接尋址也叫變址尋址。變所以用這兩個寄存器來進行間接尋址也叫變址尋址。變址尋址通常用于對數組元素進行操作址尋址通常用于對數組元素進行操作, 另外另外, 后面還會講后面還會講到有些串操作指令要求用固定的變址寄存器對操作數進到有些串操作指令要求用固定的變址寄存器對操作數進行尋址行尋址, 操作過程中操作過程中, 指令會自動修改變址寄存器中的地指令會自動修改變址寄存器中的地址址, 以指向下一個操作數。以指向下一個操作數。寄存器相對尋址方式寄存器相對尋址方式
28、微機原理及應用微機原理及應用 吳麗娟吳麗娟微機原理及應用微機原理及應用 吳麗娟吳麗娟2022-6-1430/94 (3) 以以SI和和DI寄存器進行間接尋址寄存器進行間接尋址變址尋址。變址尋址。例:設例:設DS=2000H, SS=3000H, BX=1000H, BP=2100H, (21000H)=1426H , (32100H)=2017H, 問問 執(zhí)行執(zhí)行 MOV AX, BX MOV BL, BP 指令后指令后 AX=? BL=?2614172021000H21001H32100H32101H答案答案: AX=1426H BL=17H微機原理及應用微機原理及應用 吳麗娟吳麗娟2022
29、-6-1431/94 (4) 將將BX, BP和和SI, DI寄存器組合起來進行間接尋址寄存器組合起來進行間接尋址基址加變基址加變址的尋址。址的尋址。通常將通常將BX和和BP稱為基址寄存器稱為基址寄存器, 將將SI和和DI稱為變址稱為變址寄存器。寄存器。8086指令系統允許把基址寄存器和變址寄存器組成起指令系統允許把基址寄存器和變址寄存器組成起來構成一種新的尋址方式來構成一種新的尋址方式, 叫基址加變址的尋址。用這種尋址方叫基址加變址的尋址。用這種尋址方式時式時, 操作數的有效地址是操作數的有效地址是1個基址寄存器個基址寄存器(BX或或BP)的內容加上的內容加上一個變址寄存器一個變址寄存器(S
30、I或或DI)的內容。即:的內容。即: BX SI BP DIEA+微機原理及應用微機原理及應用 吳麗娟吳麗娟2022-6-1432/94 例如:例如:MOV AX, BX+SI 設設DS1000H, BX5000H, SI2000H, 則上面指令在執(zhí)行則上面指令在執(zhí)行時時, 有效地址為有效地址為7000H, 本指令將本指令將17000H和和17001H兩單元的內兩單元的內容取到容取到AX中。中。 圖圖5.2對堆棧中數組的訪問在基址加變址的尋址方式中對堆棧中數組的訪問在基址加變址的尋址方式中, 只只要用上要用上BP寄存器寄存器, 那么默認的段寄存器就是那么默認的段寄存器就是SS;在其它情況;在其
31、它情況下下, 默認的段寄存器均為默認的段寄存器均為DS。如果操作數不在默認段。如果操作數不在默認段, 則要用則要用前綴指出相應的段寄存器名。前綴指出相應的段寄存器名。微機原理及應用微機原理及應用 吳麗娟吳麗娟2022-6-1433/94 用基址加變址的尋址方式時用基址加變址的尋址方式時, 與變址尋址、基址尋址的情況類與變址尋址、基址尋址的情況類似似, 也允許帶一個也允許帶一個8位或位或16位的位移量。帶位移量的基址加變址的位的位移量。帶位移量的基址加變址的尋址尋址, 在有些資料中也稱為相對的基址加變址尋址。在有些資料中也稱為相對的基址加變址尋址。 如:如:MOV AX, BX+SI+0050;
32、將;將BX和和SI中的內容與中的內容與0050相加作為相加作為有效地址有效地址 由于基址加變址的尋址方式中由于基址加變址的尋址方式中, 允許兩個地址分量分別改變允許兩個地址分量分別改變, 而而且有一個對段寄存器的約定規(guī)則且有一個對段寄存器的約定規(guī)則即如果基址寄存器用即如果基址寄存器用BX, 則默則默認的段寄存器為認的段寄存器為DS;如果基址寄存器用;如果基址寄存器用BP, 則默認的段寄存器為則默認的段寄存器為SS這種尋址方式使用起來很靈活。這種尋址方式使用起來很靈活?;纷冎穼ぶ贩绞交纷冎穼ぶ贩绞轿C原理及應用微機原理及應用 吳麗娟吳麗娟相對基址變址尋址方式相對基址變址尋址方式微機原理及應用
33、微機原理及應用 吳麗娟吳麗娟 圖圖5.3對對8086有關操作數的各種尋址方式進行了總結。圖中不僅指出了每種有關操作數的各種尋址方式進行了總結。圖中不僅指出了每種尋址方式下操作數的來源尋址方式下操作數的來源, 還表明了有效地址的計算方法。還表明了有效地址的計算方法。圖圖5.3 8086/8088的的操作數操作數尋址方式尋址方式微機原理及應用微機原理及應用 吳麗娟吳麗娟2022-6-1437/94 為了對各種尋址方式有個比較為了對各種尋址方式有個比較, 下面舉一個綜合性的例子。下面舉一個綜合性的例子?!纠纠吭O】設BX0158H, DI10A5H, 位移量位移量1B57H, DS2100H, 并
34、假定沒有使用段前綴并假定沒有使用段前綴, 即把即把DS作為操作數對應的段寄存器。作為操作數對應的段寄存器。 在各種尋址方式下在各種尋址方式下, 這些寄存器和位移量所產生的有效地址和這些寄存器和位移量所產生的有效地址和物理地址為:物理地址為:直接尋址:直接尋址:有效地址有效地址1B57H物理地址物理地址21000H+1B57H22B57HMOV AX, 1B57H微機原理及應用微機原理及應用 吳麗娟吳麗娟2022-6-1438/94寄存器間接尋址寄存器間接尋址(寄存器為寄存器為BX):有效地址有效地址0158H物理地址物理地址21000H+0158H21158HBX寄存器相對間接尋址:寄存器相對
35、間接尋址:有效地址有效地址0158H+1B57H1CAFH物理地址物理地址21000H+1CAFH22CAFH變址尋址變址尋址(寄存器為寄存器為DI):有效地址有效地址10A5H物理地址物理地址21000H+10A5H220A5HMOV AX, BXMOV AX, BX+1B57HMOV AX, DI微機原理及應用微機原理及應用 吳麗娟吳麗娟2022-6-1439/94DI寄存器相對變址尋址:寄存器相對變址尋址:有效地址有效地址10A5H+1B57H2BFCH物理地址物理地址21000H+2BFCH23BFCH基址加變址的尋址基址加變址的尋址(BX為基址寄存器為基址寄存器, DI為變址寄存器為
36、變址寄存器):有效地址有效地址0158H+10A5H11FDH物理地址物理地址21000H+11FDH221FDH相對的基址加變址的尋址相對的基址加變址的尋址(BX為基址寄存器為基址寄存器, DI為變址寄存器為變址寄存器):有效地址有效地址0158H+10A5H+1B57H2D54H物理地址物理地址21000H+2D54H23D54H MOV AX, DI+1B57HMOV AX, BX+DIMOV AX, BX+DI+1B57H微機原理及應用微機原理及應用 吳麗娟吳麗娟2022-6-1440/94例:已知例:已知DS=1000H, ES=2000H, SS=1100H, SI=1010H,
37、BX=0200H, BP=0600H. 請指出下列指令的源操作數字段是什么尋址方式請指出下列指令的源操作數字段是什么尋址方式, 源操作數源操作數物理地址是多少。物理地址是多少。MOV AL, 2400HMOV AX, BPADD AX, ES:BP+10MOV AL, BX+SI+25直接尋址直接尋址, PA=DS*16+2400=12400H寄存器間接尋址寄存器間接尋址, PA=SS*16+BP=11600H寄存器相對尋址寄存器相對尋址, PA=ES*16+BP+0AH=2060AH相對基址加變址尋址相對基址加變址尋址, PA=DS*16+BX+SI+19H=11229H微機原理及應用微機原
38、理及應用 吳麗娟吳麗娟2022-6-1441/94例:例:分別指出下列指令的源操作數分別指出下列指令的源操作數和目的操作數的尋址方式。和目的操作數的尋址方式。MOV SI, 200MOV CX, DATA:SIADD AX, BXSIADD AX, BXMOV SI, AX源源:立即數尋址立即數尋址 目的目的:寄存器尋址寄存器尋址源源:寄存器間接尋址寄存器間接尋址 目的目的:寄存器尋址寄存器尋址源源:基址加變址尋址基址加變址尋址 目的目的:寄存器尋址寄存器尋址源源:寄存器尋址寄存器尋址 目的目的:寄存器尋址寄存器尋址源源:寄存器尋址寄存器尋址 目的目的:寄存器間接尋址寄存器間接尋址微機原理及應
39、用微機原理及應用 吳麗娟吳麗娟2022-6-1442/94例:寫出以下指令中內存例:寫出以下指令中內存 操作數的所在地址。操作數的所在地址。(1) MOV AL, BX+5(2) MOV BP+5, AX(3) INC BYTE PTRSI+3(4) MOV DL, ES:BX+DI(5) MOV BX, BX+SI+2(1)數據段基址尋址數據段基址尋址, (DS)*16+(BX)+5(2)以以BP寄存器進行的間接尋址寄存器進行的間接尋址(堆棧段基址尋堆棧段基址尋址址), (SS)*16+(BP)+5(3)本條指令含義為本條指令含義為:將將SI+3所指存儲單元的所指存儲單元的內容加內容加1,
40、(DS)*16+(SI)+3(4)基址加變址尋址基址加變址尋址, (ES)*16+ +(BX)+(DI)(5)相對基址加變址尋址相對基址加變址尋址, (DS)*16+ +(BX)+(SI)+2微機原理及應用微機原理及應用 吳麗娟吳麗娟2022-6-1443/94尋址方式小結尋址方式小結尋址方式尋址方式操作數地址操作數地址(PA)指令格式舉例指令格式舉例立即數尋址立即數尋址操作數由指令給出操作數由指令給出MOV DX, 100H ;(DX)100H寄存器尋址寄存器尋址操作數在寄存器中操作數在寄存器中 ADD AX, BX ;(AX)(AX)+(BX)直接尋址直接尋址操作數的有效地址由指令直接給出
41、操作數的有效地址由指令直接給出MOV AX, 100H ;(AX)(100H)寄存器寄存器間接尋址間接尋址 PA=(DS)16+(BX)或或(SI)或或(DI)PA=(SS) 16+(BP)MOV AX, BX ; (AX)(DS)16+(BX)MOV AX, BP ; (AX)(SS)16+(BP)基址變址尋基址變址尋址址 PA=(DS)16+(BX)+(SI)或或(DI)PA=(SS) 16+(BP) +(SI)或或(DI) MOV AX, BX+DI ;(AX)(DS)16+(BX)+(DI)相對基址相對基址變址尋址變址尋址 PA=(DS)16+(BX)+(SI)或或(DI)+位移量位移
42、量PA=(SS) 16+(BP) +(SI)或或(DI)+位移量位移量 MOV AX, BX+DI+100 ;(AX)(DS)16+(BX)+(DI)+100指令類指令類指令名稱指令名稱指令助憶符指令助憶符傳送傳送數據數據/地址傳送地址傳送進出棧進出棧交換、換碼交換、換碼輸入輸出輸入輸出MOV LEA LDS LES LAHF SAHFPUSH PUSHF POP POPF XCHG XLATIN OUT算術運算算術運算加、減、比較加、減、比較乘、除、擴展乘、除、擴展十進制調整十進制調整ADD ADC INC SUB SBB DEC NEG CMP MUL IMUL DIV IDIV CBW
43、CWDAAA AAS DAA DAS AAM AAD位操作位操作邏輯運算邏輯運算移位移位循環(huán)移位循環(huán)移位AND OR XOR TEST NOTSAL/SHL SHR SAR ROL ROR RCL RCR串操作串操作串傳送串傳送存取串存取串串比較、串掃描串比較、串掃描MOVS MOVSB MOVSW STOS STOSB STOSW LODS LODSB LODSW CMPS CMPSB CMPSW SCAS SCASB SCASW 程序控制程序控制調用、中斷返回調用、中斷返回無條件轉移無條件轉移循環(huán)控制指令循環(huán)控制指令條件轉移條件轉移CALL RET IRET INT INTOJMPLOOP
44、 LOOPE/LOOPZ LOOPNE/LOOPNZ JCXZ JA/JNBE JAE/JNB JB/JNAE JBE/JNA JG/JNLE JE/JZ JNE/JNZJGE/JNL JL/JNGE JLE/JNG JNC JC JNS JS JP/JPE JNP/JPO JNO JO處理器控制處理器控制清置標志清置標志其它其它CLC STC CMC CLD STD CLI STINOP WAIT HLT 前綴前綴重復前綴重復前綴段超越前綴段超越前綴總線封鎖前綴總線封鎖前綴REP REPE/REPZ REPNE/REPNZES: DS: CS: SS: LOCKp常用指令常用指令 微機原理及
45、應用微機原理及應用 吳麗娟吳麗娟2022-6-1445/945.2 傳送類指令傳送類指令n傳送類指令可以分為傳送類指令可以分為4種:種:n通用數據傳送指令通用數據傳送指令n目標地址傳送指令目標地址傳送指令n標志位傳送指令標志位傳送指令nI/O數據傳送指令數據傳送指令 傳送類指令是指令系統中最活躍的一類指令傳送類指令是指令系統中最活躍的一類指令, 也是條數最也是條數最多的一類指令多的一類指令, 主要用于數據的保存及交換等場合。主要用于數據的保存及交換等場合。 除了除了SAHF和和POPF指令外指令外, 其余指令執(zhí)行其余指令執(zhí)行后對標志位都后對標志位都沒有沒有影響。影響。指令指令類型類型指令格式指
46、令格式指令功能指令功能狀態(tài)標志位狀態(tài)標志位備注備注O S Z A P C通用通用數據數據傳送傳送MOV 目標目標, 源源PUSH 源源POP 目標目標XCHG 目標目標, 源源XLAT傳送字節(jié)或字傳送字節(jié)或字字壓入堆棧字壓入堆棧字彈出堆棧字彈出堆棧交換字節(jié)或字交換字節(jié)或字字節(jié)翻譯字節(jié)翻譯 . . . . . . 源:源:R、M、立即數、立即數 目標:目標:R、M源:源:R、M目標:目標:R(CS除外除外)、M源:通用源:通用R、M 目標:通用目標:通用R、M目標目標地址地址傳送傳送LEA 目標目標, 源源LDS目標目標, 源源LES目標目標, 源源裝入有效地址裝入有效地址裝入數據段指針到裝入數
47、據段指針到DS裝入附加段指針到裝入附加段指針到ES 源:內存操作數源:內存操作數 目標:目標:16位通用位通用R源:內存操作數源:內存操作數 目標:目標: 16位通用位通用R源:內存操作數源:內存操作數 目標:目標: 16位通用位通用R標志位標志位 傳送傳送LAHFSAHFPUSHFPOPF把把FR低字節(jié)裝入低字節(jié)裝入AH把把AH內容裝入內容裝入FR低字節(jié)低字節(jié)把把FR內容壓入堆棧內容壓入堆棧從堆棧中彈出從堆棧中彈出FR內容內容 I/O數據數據傳送傳送IN 累加器累加器, 端口端口OUT 端口端口, 累加器累加器輸入字節(jié)或字輸入字節(jié)或字輸出字節(jié)或字輸出字節(jié)或字 累加器:累加器:AL或或AX端口
48、:地址端口:地址0255或間接寄存器或間接寄存器DX : 運算結果影響標志位運算結果影響標志位:運算結果不影響標志位:運算結果不影響標志位傳送類指令傳送類指令微機原理及應用微機原理及應用 吳麗娟吳麗娟2022-6-1447/945.2.1 通用數據傳送指令通用數據傳送指令 通用傳送指令中包括最基本的傳送指令通用傳送指令中包括最基本的傳送指令MOV, 堆棧指令堆棧指令PUSH和和POP, 數據交換指令數據交換指令XCHG。 1. 最基本的傳送指令最基本的傳送指令 MOV指令是形式最簡單、用得最多的指令。它可以實現指令是形式最簡單、用得最多的指令。它可以實現CPU內內部寄存器之間的數據傳送、寄存器
49、和內存之間的數據傳送部寄存器之間的數據傳送、寄存器和內存之間的數據傳送, 還可以還可以把一個立即數送給把一個立即數送給CPU的內部寄存器或者內存單元。的內部寄存器或者內存單元。將數據從一個地址傳送到另一個地址;將數據從一個地址傳送到另一個地址;數據在傳送過程中不發(fā)生任何變化;數據在傳送過程中不發(fā)生任何變化;對標志寄存器的內容無任何影響。對標志寄存器的內容無任何影響。 傳送指令的特點傳送指令的特點 微機原理及應用微機原理及應用 吳麗娟吳麗娟2022-6-1448/94 1. 最基本的傳送指令最基本的傳送指令 MOV BH, DI ;源操作數為寄存器間接尋址;源操作數為寄存器間接尋址 MOV DI
50、, ES:3SI ;源操作數為變址尋址;源操作數為變址尋址, 使用跨段前綴使用跨段前綴 MOV BP, 3BX+SI ;源操作數為基址加變址尋址;源操作數為基址加變址尋址 MOV AL, BL ;BL 中的中的8位數據送位數據送AL MOV ES, DX ;DX 中的中的16位數據送附加段寄存器位數據送附加段寄存器ES MOV AX, BX ;BX和和BX+1 所指的兩個內存單元內容送所指的兩個內存單元內容送AX MOV DI, AX ;累加器的內容送;累加器的內容送DI和和DI+1所指的兩個單元所指的兩個單元 MOV CX, 1000 ;把;把1000和和1001兩個單元的內容送兩個單元的內
51、容送CX微機原理及應用微機原理及應用 吳麗娟吳麗娟2022-6-1449/94 使用使用MOV指令傳送數據時應該注意:指令傳送數據時應該注意: 立即數和段寄存器立即數和段寄存器CS不能作為目的操作數;不能作為目的操作數; 如如 MOV CS, AX 或或 MOV 1000H, AX 立即數不能直接傳送到段寄存器;立即數不能直接傳送到段寄存器; 如如 MOV CS, 1000H 兩個存儲單元之間不能直接傳送數據;兩個存儲單元之間不能直接傳送數據; 如如 MOV 1000H, 2000H 兩個段寄存器之間不能直接傳送數據兩個段寄存器之間不能直接傳送數據 如如 MOV DS, ES 微機原理及應用微
52、機原理及應用 吳麗娟吳麗娟2022-6-1450/94n例如例如:分析如下:分析如下MOV指令的正確性:指令的正確性:MOV AX, BL MOV DS, 1000HMOV BX , SIMOV ES, CSMOV CS, AX;類型不匹配;類型不匹配;不允許立即數送段寄存器;不允許立即數送段寄存器;不允許內存操作數之間傳送;不允許內存操作數之間傳送;不允許段寄存器之間傳送;不允許段寄存器之間傳送; CS不能作為目的操作數不能作為目的操作數微機原理及應用微機原理及應用 吳麗娟吳麗娟2022-6-1451/94補充:堆棧補充:堆棧(STACK) 是按后進先出原則組織的一片存儲區(qū)域,用來暫是按后進
53、先出原則組織的一片存儲區(qū)域,用來暫存一批需要回避的數據或地址。存一批需要回避的數據或地址?!昂筮M先出后進先出”n堆棧:堆棧:暫存數據、斷點信息或傳送信息暫存數據、斷點信息或傳送信息n用途:用途:n存取原則存取原則:n堆棧段的堆棧段的最大深度最大深度:64KB微機原理及應用微機原理及應用 吳麗娟吳麗娟2022-6-1452/94 堆棧的構造堆棧的構造 一端一端固定固定,具有最大地址的單元,具有最大地址的單元(數據由此向上堆積數據由此向上堆積)一端一端浮動浮動,指向最后被壓入堆棧,指向最后被壓入堆棧的數據所在存儲單元的數據所在存儲單元(棧頂的位置棧頂的位置隨堆棧中存放數據多少而變化隨堆棧中存放數據
54、多少而變化)用來指示當前棧頂的位置。用來指示當前棧頂的位置。(壓入壓入的數據放入哪個單元或從那個單的數據放入哪個單元或從那個單元彈出數據均由元彈出數據均由SP決定決定)堆堆棧棧段段SSBottomXXXXXXXXTopSP初始初始SP1. 棧底:棧底:2. 棧頂:棧頂:3. 堆棧指針:堆棧指針:微機原理及應用微機原理及應用 吳麗娟吳麗娟2022-6-1453/94 8086堆棧的組織堆棧的組織 該片存儲區(qū)域所包含存儲單元數,其值有由該片存儲區(qū)域所包含存儲單元數,其值有由初始時初始時SP的值決定的值決定(指向棧底指向棧底+1單元單元)12H34H01954H01955H 如如64KB的堆棧段不能
55、滿足需要,可通的堆棧段不能滿足需要,可通過修改過修改SS來改變當前的堆棧段,使之指向來改變當前的堆棧段,使之指向另一片存儲區(qū)域,同時另一片存儲區(qū)域,同時SP重新賦值重新賦值 堆棧段堆棧段:由由SS存放堆棧段段基值以決定其起始地址存放堆棧段段基值以決定其起始地址 堆棧段的長度:堆棧段的長度:堆棧是按字組織的,數據的存取均為堆棧是按字組織的,數據的存取均為2字節(jié)操作字節(jié)操作 數據在堆棧段內的存放數據在堆棧段內的存放 堆棧區(qū)域的擴展:堆棧區(qū)域的擴展:微機原理及應用微機原理及應用 吳麗娟吳麗娟2022-6-1454/94 堆棧的三種基本操作堆棧的三種基本操作SS、SP賦值賦值(段的起始位置及長度段的起
56、始位置及長度)SP2 SP;棧頂向上浮動棧頂向上浮動數據數據(SS:SP)(SS:SP) (SS:SP) R/M SP+2 SP數據數據;棧頂向下回落棧頂向下回落1、設置堆棧、設置堆棧2、進棧、進棧把數據壓入堆棧,在棧頂進行把數據壓入堆棧,在棧頂進行3、出棧、出棧從棧頂取出數據送入從棧頂取出數據送入R/M微機原理及應用微機原理及應用 吳麗娟吳麗娟2022-6-1455/94n執(zhí)行堆棧指令執(zhí)行堆棧指令PUSH和和POP時,指令地址是由時,指令地址是由SP給出當前給出當前棧頂的偏移地址,故將棧頂的偏移地址,故將SP稱為堆棧指針寄存器稱為堆棧指針寄存器。 SP和和BP在使用上有區(qū)別:在使用上有區(qū)別:
57、nBP則是用來存放位于堆棧段中的一個數據區(qū)基址的偏移則是用來存放位于堆棧段中的一個數據區(qū)基址的偏移地址的,故將地址的,故將BP稱做基址指針寄存器稱做基址指針寄存器。微機原理及應用微機原理及應用 吳麗娟吳麗娟2022-6-1456/94 86系列指令系統中提供了專用的堆棧操作指令系列指令系統中提供了專用的堆棧操作指令, 其中其中PUSH是是把字壓入堆棧把字壓入堆棧, POP是把字彈出堆棧。在程序中采用堆棧操作指是把字彈出堆棧。在程序中采用堆棧操作指令時令時, 應預置堆棧段寄存器應預置堆棧段寄存器SS、堆棧指示器、堆棧指示器SP的值的值, 同時同時, 使使SP的內容為當前堆棧段的棧頂。的內容為當前
58、堆棧段的棧頂。 在執(zhí)行在執(zhí)行PUSH指令時指令時, 首先首先, 堆棧指示器堆棧指示器SP自動減自動減2;然后;然后, 將一將一個字以源操作數傳送至棧頂。個字以源操作數傳送至棧頂。POP指令的執(zhí)行過程正好與指令的執(zhí)行過程正好與PUSH指令相反指令相反, 它把由它把由SP指出的當前堆棧段的棧頂的一個操作數指出的當前堆棧段的棧頂的一個操作數(一一個字個字), 傳送到目的操作數中傳送到目的操作數中, 然后然后, SP自動加自動加2, 指向新的棧頂。指向新的棧頂。2.堆棧操作指令堆棧操作指令微機原理及應用微機原理及應用 吳麗娟吳麗娟2022-6-1457/94 POP指令中的目的操作數可以是除代碼段寄存
59、器指令中的目的操作數可以是除代碼段寄存器CS之外之外的其它寄存器和存儲器。在的其它寄存器和存儲器。在86系列指令系統中系列指令系統中, 不允許不允許CS寄存器作為目的操作數使用。這是因為寄存器作為目的操作數使用。這是因為, 一旦改變了一旦改變了代碼段寄存器代碼段寄存器CS的內容的內容, 使程序有了新的當前代碼段使程序有了新的當前代碼段, 就會導致就會導致CPU從新的從新的CS和和IP給出的毫無意義的地址中給出的毫無意義的地址中去取下一條指令去取下一條指令, 使程序錯誤運行。使程序錯誤運行。2.堆棧操作指令堆棧操作指令 例如例如, 將將16位通用寄存器位通用寄存器CX的內容壓入堆棧的內容壓入堆棧
60、, 然后然后, 彈出棧頂彈出棧頂至至CX中中, 已知已知: (SS)0200H, (SP)0008H, (CX)12FAH, 其其示意圖如下圖所示。示意圖如下圖所示。2.堆棧操作指令堆棧操作指令+20200SS0008SP12FACXSS段段首地址首地址新棧頂新棧頂原棧頂原棧頂12FAH200020062007 2008存儲器存儲器 12FA16PUSH CX指令的操作過程指令的操作過程PUSH指令的功能指令的功能微機原理及應用微機原理及應用 吳麗娟吳麗娟 例如例如, 將將16位通用寄存器位通用寄存器CX的內容壓入堆棧的內容壓入堆棧, 然后然后, 彈出棧頂彈出棧頂至至CX中中, 已知已知: (
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國平紋網數據監(jiān)測研究報告
- 2025至2030年中國仿石桌面數據監(jiān)測研究報告
- 2025年消防設施操作員之消防設備高級技能題庫練習試卷B卷附答案
- 質檢員基礎知識培訓課件
- 2025年大學生防詐騙知識競賽題庫試題及答案(共60題)
- 企業(yè)人力資源管理系統開發(fā)維護合同書
- 如何提升英語聽力水平:聽力技巧與素材選擇教學教案
- 年度金融科技行業(yè)投資研究報告表
- 水暖安裝勞務合同
- 戶外廣告位租賃經營協議書
- 2024年遼寧省中考模擬提升練習英語試卷
- 孕產婦高危五色管理(醫(yī)學講座培訓課件)
- 2024年陪診師準入理論考核試題
- 拼多多企業(yè)戰(zhàn)略分析報告
- 梁柱加固施工方案
- 孕婦枕行業(yè)深度研究報告
- 中考復習物理力學部分綜合試題(人教版含答案)
- 培訓資料預防混料培訓
- 《多元化之教學評量》課件
- 企業(yè)廉政教育培訓課件
- 三年級數學《搭配中的學問》 全國一等獎
評論
0/150
提交評論