第二章尋址方式與指令系統(tǒng)_第1頁
第二章尋址方式與指令系統(tǒng)_第2頁
第二章尋址方式與指令系統(tǒng)_第3頁
第二章尋址方式與指令系統(tǒng)_第4頁
第二章尋址方式與指令系統(tǒng)_第5頁
已閱讀5頁,還剩134頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、匯編語言程序設計匯編語言程序設計方法、技術、應用方法、技術、應用第二章第二章 尋址方式與指令系統(tǒng)尋址方式與指令系統(tǒng)任課教師:陶雪麗任課教師:陶雪麗xueli_匯編語言程序設計匯編語言程序設計方法、技術、應用方法、技術、應用河南師范大學計算機與信息技術學院河南師范大學計算機與信息技術學院22021-10-16本章內容提要本章內容提要 尋址方式尋址方式指令系統(tǒng)指令系統(tǒng)指令格式指令格式匯編語言程序設計匯編語言程序設計方法、技術、應用方法、技術、應用河南師范大學計算機與信息技術學院河南師范大學計算機與信息技術學院32021-10-162.1 2.1 匯編語言指令格式匯編語言指令格式指令由操作碼和操作數(shù)

2、兩部分組成。指令由操作碼和操作數(shù)兩部分組成。 操作碼操作碼說明計算機要執(zhí)行哪種操作,如傳送、運算、移位、跳轉說明計算機要執(zhí)行哪種操作,如傳送、運算、移位、跳轉等操作,它是指令中不可缺少的組成部分。等操作,它是指令中不可缺少的組成部分。操作數(shù)操作數(shù)是指令執(zhí)行的參與者,也就是各種操作的對象。是指令執(zhí)行的參與者,也就是各種操作的對象。操作碼操作碼操作數(shù)操作數(shù)用助記符表達的指令的一般格式:用助記符表達的指令的一般格式: 操作碼操作碼 操作數(shù)操作數(shù)1 1,操作數(shù),操作數(shù)n n ;注釋;注釋匯編語言程序設計匯編語言程序設計方法、技術、應用方法、技術、應用河南師范大學計算機與信息技術學院河南師范大學計算機與

3、信息技術學院42021-10-162.1 2.1 匯編語言指令格式匯編語言指令格式操作碼:操作碼:用一個唯一的助記符表示(指令功能的英文縮寫)用一個唯一的助記符表示(指令功能的英文縮寫)對應著機器指令的一個二進制編碼對應著機器指令的一個二進制編碼操作數(shù):操作數(shù):可以是操作數(shù)本身(一個具體的數(shù)值)可以是操作數(shù)本身(一個具體的數(shù)值)也可以是存放數(shù)據(jù)的寄存器也可以是存放數(shù)據(jù)的寄存器或指明數(shù)據(jù)在主存位置的存儲器地址或指明數(shù)據(jù)在主存位置的存儲器地址匯編語言程序設計匯編語言程序設計方法、技術、應用方法、技術、應用河南師范大學計算機與信息技術學院河南師范大學計算機與信息技術學院52021-10-162.1

4、2.1 匯編語言指令格式匯編語言指令格式 操作數(shù)字段可以是一個、二個或三個,通常稱為一地址、二地址操作數(shù)字段可以是一個、二個或三個,通常稱為一地址、二地址或三地址指令?;蛉刂分噶?。單操作數(shù)指令單操作數(shù)指令就是一地址指令它只需要指定一個操作數(shù)。就是一地址指令它只需要指定一個操作數(shù)。雙操作數(shù)指令雙操作數(shù)指令就是二地址指令。就是二地址指令。 操作數(shù)操作數(shù)2 2稱為源操作數(shù)稱為源操作數(shù)scrscr,操作數(shù),操作數(shù)1 1稱為目的操作數(shù)稱為目的操作數(shù)destdest,它不僅,它不僅作為指令操作的一個對象,還用來存放指令操作的結果。作為指令操作的一個對象,還用來存放指令操作的結果。操作碼操作碼 操作數(shù)操作

5、數(shù)操作碼操作碼 操作數(shù)操作數(shù)1 1,操作數(shù),操作數(shù)2 2匯編語言程序設計匯編語言程序設計方法、技術、應用方法、技術、應用河南師范大學計算機與信息技術學院河南師范大學計算機與信息技術學院62021-10-162.1 2.1 匯編語言指令格式匯編語言指令格式大多數(shù)運算指令可使用三地址指令:大多數(shù)運算指令可使用三地址指令: 除給出參加運算的兩個操作數(shù)(操作數(shù)除給出參加運算的兩個操作數(shù)(操作數(shù)2 2,操作數(shù),操作數(shù)3 3)外,還指出)外,還指出運算結果的存放地址(操作數(shù)運算結果的存放地址(操作數(shù)1 1)。)。分號后的內容是對指令的解釋。分號后的內容是對指令的解釋。操作碼操作碼 操作數(shù)操作數(shù)1 1,操作

6、數(shù),操作數(shù)2 2,操作數(shù),操作數(shù)3 3匯編語言程序設計匯編語言程序設計方法、技術、應用方法、技術、應用河南師范大學計算機與信息技術學院河南師范大學計算機與信息技術學院72021-10-162.1 2.1 匯編語言指令格式匯編語言指令格式 而操作數(shù)的給出方式比較復雜,指令系統(tǒng)設計了多種操作數(shù)的來而操作數(shù)的給出方式比較復雜,指令系統(tǒng)設計了多種操作數(shù)的來源。源。尋找操作數(shù)的方式叫做操作數(shù)的尋址方式。尋找操作數(shù)的方式叫做操作數(shù)的尋址方式。操作數(shù)采取哪一種尋址方式,會影響機器運行的速度和效率。操作數(shù)采取哪一種尋址方式,會影響機器運行的速度和效率。這種符號指令系統(tǒng)中,操作碼的給出方式比較簡單。這種符號指令

7、系統(tǒng)中,操作碼的給出方式比較簡單。如何尋址一個操作數(shù)對程序的設計來講也是很重要的。如何尋址一個操作數(shù)對程序的設計來講也是很重要的。匯編語言程序設計匯編語言程序設計方法、技術、應用方法、技術、應用河南師范大學計算機與信息技術學院河南師范大學計算機與信息技術學院82021-10-162.2 2.2 尋址方式尋址方式 轉移地址尋址方式轉移地址尋址方式數(shù)據(jù)尋址方式數(shù)據(jù)尋址方式匯編語言程序設計匯編語言程序設計方法、技術、應用方法、技術、應用河南師范大學計算機與信息技術學院河南師范大學計算機與信息技術學院92021-10-162.2.1 2.2.1 數(shù)據(jù)尋址方式數(shù)據(jù)尋址方式 8086 8086、80286

8、80286的機器字長位的機器字長位1616位,一般情況下只處理位,一般情況下只處理8 8、1616位數(shù),位數(shù),只在乘、除指令中才會有只在乘、除指令中才會有3232位數(shù)。位數(shù)。 80386 80386及其后繼機型字長位及其后繼機型字長位3232位,它可處理位,它可處理8 8、1616、3232位操作數(shù),位操作數(shù),在乘除指令中還可產生在乘除指令中還可產生6464位數(shù)。位數(shù)。這種尋址方式用來確定操作數(shù)地址從而找到操作數(shù)。這種尋址方式用來確定操作數(shù)地址從而找到操作數(shù)。本節(jié)對數(shù)據(jù)尋址方式的討論,均以本節(jié)對數(shù)據(jù)尋址方式的討論,均以MOVMOV指令指令為例。為例。匯編語言程序設計匯編語言程序設計方法、技術、

9、應用方法、技術、應用河南師范大學計算機與信息技術學院河南師范大學計算機與信息技術學院102021-10-162.2.1 2.2.1 數(shù)據(jù)尋址方式數(shù)據(jù)尋址方式 立即尋址方式立即尋址方式寄存器尋址方式寄存器尋址方式直接尋址方式直接尋址方式寄存器間接尋址方式寄存器間接尋址方式寄存器相對尋址方式寄存器相對尋址方式基址變址尋址方式基址變址尋址方式知識要點知識要點相對基址變址尋址方式相對基址變址尋址方式匯編語言程序設計匯編語言程序設計方法、技術、應用方法、技術、應用河南師范大學計算機與信息技術學院河南師范大學計算機與信息技術學院112021-10-161. 1. 立即尋址(立即尋址(immediate a

10、ddressingimmediate addressing) 操作數(shù)直接存放在指令中,緊跟在操作碼之后,作為指令的一部分操作數(shù)直接存放在指令中,緊跟在操作碼之后,作為指令的一部分存放在代碼段里。存放在代碼段里。如圖所示如圖所示。這種操作數(shù)被稱為這種操作數(shù)被稱為立即數(shù)立即數(shù)immimm:它可以是它可以是8 8位數(shù)值位數(shù)值i8i8;也可以是也可以是1616位數(shù)值位數(shù)值i16i16。數(shù)據(jù)存放時采用數(shù)據(jù)存放時采用“小端方式小端方式”。立即數(shù)尋址方式常用來給寄存器賦值。立即數(shù)尋址方式常用來給寄存器賦值。只能用于源操作數(shù)字段,不能用于目的操作數(shù)字段。只能用于源操作數(shù)字段,不能用于目的操作數(shù)字段。匯編語言程

11、序設計匯編語言程序設計方法、技術、應用方法、技術、應用河南師范大學計算機與信息技術學院河南師范大學計算機與信息技術學院122021-10-16立即尋址舉例立即尋址舉例例例2-32-3Y EQU 2005HY EQU 2005H; ;定義常量定義常量MOV AX, 2002HMOV AX, 2002HMOV BL, 36HMOV BL, 36HMOV BX, YMOV BX, Y匯編語言程序設計匯編語言程序設計方法、技術、應用方法、技術、應用河南師范大學計算機與信息技術學院河南師范大學計算機與信息技術學院132021-10-162. 2. 寄存器尋址(寄存器尋址(register address

12、ingregister addressing) 操作數(shù)存放在操作數(shù)存放在CPUCPU的內部寄存器的內部寄存器regreg中,無需訪問存儲器,因而可以中,無需訪問存儲器,因而可以得到較高的運算速度,得到較高的運算速度,如圖所示如圖所示。寄存器可以是:寄存器可以是:8 8位位(r8)(r8): AHAH、ALAL、BHBH、BLBL、CHCH、CLCL、DHDH、DLDL1616位位(r16)(r16): AXAX、BXBX、CXCX、DXDX、SISI、DIDI、BPBP、SPSP段寄存器段寄存器(seg(seg) );CSCS、DSDS、SSSS、ESES匯編語言程序設計匯編語言程序設計方法、

13、技術、應用方法、技術、應用河南師范大學計算機與信息技術學院河南師范大學計算機與信息技術學院142021-10-16寄存器尋址舉例寄存器尋址舉例例例2-42-4(1 1)MOV AX, 1234HMOV AX, 1234H(2 2)MOV AX, BXMOV AX, BX(3 3)MOV AH, BHMOV AH, BH執(zhí)行動畫演示執(zhí)行動畫演示匯編語言程序設計匯編語言程序設計方法、技術、應用方法、技術、應用河南師范大學計算機與信息技術學院河南師范大學計算機與信息技術學院152021-10-16存儲器尋址方式存儲器尋址方式以下各種尋址方式的以下各種尋址方式的操作數(shù)都在除代碼段以外的存儲區(qū)中操作數(shù)都

14、在除代碼段以外的存儲區(qū)中。 操作數(shù)地址是由段基地址和偏移地址相加而取得的。段基地址在操作數(shù)地址是由段基地址和偏移地址相加而取得的。段基地址在實模式和保護模式下可從不同途徑取得。實模式和保護模式下可從不同途徑取得。這里要解決的問題是如何取這里要解決的問題是如何取得操作數(shù)的偏移地址。得操作數(shù)的偏移地址。 在在80 x8680 x86里,把操作數(shù)的偏移地址稱為里,把操作數(shù)的偏移地址稱為有效地址(有效地址(effective effective addressaddress,EAEA)。)。通過不同尋址方式求得操作數(shù)地址,從而取得操作數(shù)。通過不同尋址方式求得操作數(shù)地址,從而取得操作數(shù)。下述各種尋址方式

15、即為求得有效地址(下述各種尋址方式即為求得有效地址(EAEA)的不同途徑。)的不同途徑。 匯編語言程序設計匯編語言程序設計方法、技術、應用方法、技術、應用河南師范大學計算機與信息技術學院河南師范大學計算機與信息技術學院162021-10-16存儲器尋址方式存儲器尋址方式 指令中給出操作數(shù)的主存地址信息(偏移地址,稱之為有效地址指令中給出操作數(shù)的主存地址信息(偏移地址,稱之為有效地址EAEA),而段地址在默認的或用段超越前綴指定的段寄存器中。),而段地址在默認的或用段超越前綴指定的段寄存器中。 80X86 80X86設計了多種存儲器尋址方式:設計了多種存儲器尋址方式:1616位尋址:位尋址: 直

16、接尋址方式直接尋址方式寄存器間接尋址方式寄存器間接尋址方式 寄存器相對尋址方式寄存器相對尋址方式基址變址尋址方式基址變址尋址方式 相對基址變址尋址方式相對基址變址尋址方式3232位尋址:位尋址: 比例變址尋址方式比例變址尋址方式 基址比例變址尋址方式基址比例變址尋址方式 相對基址比例變址尋址方式相對基址比例變址尋址方式匯編語言程序設計匯編語言程序設計方法、技術、應用方法、技術、應用河南師范大學計算機與信息技術學院河南師范大學計算機與信息技術學院172021-10-16有效地址有效地址EA EA (Effective AddressEffective Address) 位移量(位移量(displ

17、acementdisplacement)是存放在指令中的一個是存放在指令中的一個8 8位或位或1616位的數(shù),位的數(shù),但它不是立即數(shù),而是一個地址。但它不是立即數(shù),而是一個地址。 基址(基址(basebase)是存放在基址寄存器中的內容。它是有效地址中的是存放在基址寄存器中的內容。它是有效地址中的基址部分,通常用來指向數(shù)據(jù)段中數(shù)組或字符串的首地址?;凡糠郑ǔS脕碇赶驍?shù)據(jù)段中數(shù)組或字符串的首地址。 變址(變址(indexindex)是存放在變址寄存器中的內容。它通常用來訪問數(shù)是存放在變址寄存器中的內容。它通常用來訪問數(shù)組中的某個元素或字符串中的某個字符。組中的某個元素或字符串中的某個字符。有

18、效地址的四種組成成分:有效地址的四種組成成分: * *比例因子(比例因子(scale factorscale factor)是是386386及其后繼機型新增加的尋址方式及其后繼機型新增加的尋址方式中的一個術語,其值可為中的一個術語,其值可為1 1,2 2,4 4或或8 8。在尋址中,可用變址寄存器的內。在尋址中,可用變址寄存器的內容乘以比例因子來取得變址值。這類尋址方式對訪問元素長度為容乘以比例因子來取得變址值。這類尋址方式對訪問元素長度為2 2,4 4,8 8字節(jié)的數(shù)組特別有用。字節(jié)的數(shù)組特別有用。 匯編語言程序設計匯編語言程序設計方法、技術、應用方法、技術、應用河南師范大學計算機與信息技術

19、學院河南師范大學計算機與信息技術學院182021-10-16有效地址有效地址EA EA (Effective AddressEffective Address) EA EA基址(變址基址(變址比例因子)比例因子)+ +位移量位移量 這四個成分中,除比例因子是固定值外,其他三個成分都可正可這四個成分中,除比例因子是固定值外,其他三個成分都可正可負,以保證指針移動的靈活性。負,以保證指針移動的靈活性。 8086/80286 8086/80286只能使用只能使用1616位尋址,而位尋址,而8038680386及其后繼機型則既可用及其后繼機型則既可用3232位尋址,也可用位尋址,也可用1616位尋址。

20、在這兩種情況下,對以上四種成分的組成位尋址。在這兩種情況下,對以上四種成分的組成有不同的規(guī)定,有不同的規(guī)定,表表1 1說明了這一規(guī)定。說明了這一規(guī)定。 有效地址的計算公式:有效地址的計算公式: 這四種成分可以任意組合使用,在各種不同組合下其中每一種成這四種成分可以任意組合使用,在各種不同組合下其中每一種成分均可空缺,但比例因子只能與變址寄存器同時使用。其中分均可空缺,但比例因子只能與變址寄存器同時使用。其中有關比例有關比例因子的三種組合只能用于因子的三種組合只能用于8038680386及其后繼機型。及其后繼機型。匯編語言程序設計匯編語言程序設計方法、技術、應用方法、技術、應用河南師范大學計算機

21、與信息技術學院河南師范大學計算機與信息技術學院192021-10-16段選擇規(guī)則段選擇規(guī)則 表表2 2則說明了各種訪存類型下所對應的則說明了各種訪存類型下所對應的段的默認選擇段的默認選擇。實際上,在。實際上,在某些情況下,某些情況下,80 x8680 x86允許程序員用允許程序員用段跨越前綴段跨越前綴來改變系統(tǒng)所指定的默認來改變系統(tǒng)所指定的默認段段,如允許數(shù)據(jù)存放在除,如允許數(shù)據(jù)存放在除DSDS段以外的其他段中,此時程序中應使用段段以外的其他段中,此時程序中應使用段跨越前綴??缭角熬Y。段的選擇和段跨越前綴段的選擇和段跨越前綴以下三種情況下,不允許使用段跨越前綴:以下三種情況下,不允許使用段跨越

22、前綴:串處理指令的目的串必須用串處理指令的目的串必須用ESES段;段;PUSHPUSH指令的目的和指令的目的和POPPOP指令的源必須用指令的源必須用SSSS段;段;指令必須存放在指令必須存放在CSCS段中。段中。匯編語言程序設計匯編語言程序設計方法、技術、應用方法、技術、應用河南師范大學計算機與信息技術學院河南師范大學計算機與信息技術學院202021-10-163. 3. 直接尋址(直接尋址(direct addressingdirect addressing) 操作數(shù)的有效地址只包含位移量一種成分,其值就存放在代碼段中操作數(shù)的有效地址只包含位移量一種成分,其值就存放在代碼段中指令的操作碼之

23、后,位移量的值即操作數(shù)的有效地址。指令的操作碼之后,位移量的值即操作數(shù)的有效地址。如圖所示如圖所示。默認的段地址在默認的段地址在DSDS段寄存器,可使用段超越前綴改變。段寄存器,可使用段超越前綴改變。直接尋址方式適用于處理單個變量。直接尋址方式適用于處理單個變量。 例如,要處理某個存放在存儲器里的變量,可以用存儲器尋址方式,例如,要處理某個存放在存儲器里的變量,可以用存儲器尋址方式,這就是一個常量常常先要送到寄存器的原因。這就是一個常量常常先要送到寄存器的原因。匯編語言程序設計匯編語言程序設計方法、技術、應用方法、技術、應用河南師范大學計算機與信息技術學院河南師范大學計算機與信息技術學院212

24、021-10-16直接尋址舉例直接尋址舉例 例例 MOV AXMOV AX,2000H2000H 如(如(DSDS)3000H3000H,則執(zhí)行情況,則執(zhí)行情況如圖所示如圖所示。 執(zhí)行結果為:(執(zhí)行結果為:(AXAX)3050H3050H 在匯編語言指令中,可以用符號地址代替數(shù)值地址,如:在匯編語言指令中,可以用符號地址代替數(shù)值地址,如:MOV AXMOV AX,VALUEVALUE 此時此時VALUEVALUE為存放操作數(shù)單元的符號地址。如寫成:為存放操作數(shù)單元的符號地址。如寫成:MOV AXMOV AX,VALUEVALUE 也是可以的,兩者是等效的。如也是可以的,兩者是等效的。如VALU

25、EVALUE在附加段中,則應指定在附加段中,則應指定段跨越前綴如下:段跨越前綴如下:MOV AXMOV AX,ESES:VALUEVALUE或或MOV AXMOV AX,ESES:VALUEVALUE匯編語言程序設計匯編語言程序設計方法、技術、應用方法、技術、應用河南師范大學計算機與信息技術學院河南師范大學計算機與信息技術學院222021-10-164. 4. 寄存器間接尋址寄存器間接尋址(register indirect addressingregister indirect addressing) 操作數(shù)的有效地址為基址寄存器內容或變址寄存器的內容。因此,操作數(shù)的有效地址為基址寄存器內容

26、或變址寄存器的內容。因此,有效地址就在某個寄存器中,而操作數(shù)則在存儲器中,有效地址就在某個寄存器中,而操作數(shù)則在存儲器中,如圖所示如圖所示。其他寄存器默認的段地址在其他寄存器默認的段地址在DSDS段寄存器,可使用段超越前綴改變。段寄存器,可使用段超越前綴改變。凡使用凡使用BPBP,ESPESP和和EBPEBP寄存器時,其默認段為寄存器時,其默認段為SSSS段。段。 這種尋址方式可以用于表格處理,執(zhí)行完一條指令后,只需修改寄這種尋址方式可以用于表格處理,執(zhí)行完一條指令后,只需修改寄存器內容就可以取出表格的下一項。存器內容就可以取出表格的下一項。匯編語言程序設計匯編語言程序設計方法、技術、應用方法

27、、技術、應用河南師范大學計算機與信息技術學院河南師范大學計算機與信息技術學院232021-10-16寄存器間接尋址舉例寄存器間接尋址舉例 例例 MOV AX,BXMOV AX,BX 如果(如果(DSDS)2000H2000H,(,(BXBX)1000H1000H 則物理地址則物理地址20000200001000100021000H21000H 執(zhí)行情況執(zhí)行情況如圖所示如圖所示。 執(zhí)行結果為:(執(zhí)行結果為:(AXAX)50A0H50A0H。指令中也可指定段跨越前綴來取得其他段中的數(shù)據(jù)。指令中也可指定段跨越前綴來取得其他段中的數(shù)據(jù)。如:如:MOV AXMOV AX,ESES:BXBX匯編語言程序設

28、計匯編語言程序設計方法、技術、應用方法、技術、應用河南師范大學計算機與信息技術學院河南師范大學計算機與信息技術學院242021-10-165. 5. 寄存器相對尋址寄存器相對尋址(register relative addressingregister relative addressing)又稱直接變址尋址方式。又稱直接變址尋址方式。寄存器的使用和段寄存器的默認情況,同寄存器的使用和段寄存器的默認情況,同“寄存器間接尋址寄存器間接尋址”。 操作數(shù)的有效地址為基址寄存器或變址寄存器的內容與指令中指定操作數(shù)的有效地址為基址寄存器或變址寄存器的內容與指令中指定的位移量之和,所以有效地址由兩種成分組

29、成。這種尋址方式的位移量之和,所以有效地址由兩種成分組成。這種尋址方式如圖所示如圖所示。 這種尋址方式同樣可用于表格處理,表格的首地址可設置為位移量,這種尋址方式同樣可用于表格處理,表格的首地址可設置為位移量,利用修改基址或變址寄存器的內容來取得表格中的值。利用修改基址或變址寄存器的內容來取得表格中的值。匯編語言程序設計匯編語言程序設計方法、技術、應用方法、技術、應用河南師范大學計算機與信息技術學院河南師范大學計算機與信息技術學院252021-10-16寄存器相對尋址舉例寄存器相對尋址舉例 例例 MOV AXMOV AX,COUNTSICOUNTSI(也可表示為(也可表示為MOV AXMOV

30、AX,COUNTCOUNTSISI)其中其中COUNTCOUNT為為1616位位移量的符號地址。位位移量的符號地址。 如果(如果(DSDS)3000H3000H,(,(SISI)2000H2000H,COUNTCOUNT3000H3000H 則物理地址則物理地址3000030000200020003000300035000H35000H 指令執(zhí)行情況指令執(zhí)行情況如圖所示如圖所示。 執(zhí)行結果是:(執(zhí)行結果是:(AXAX)1234H1234H 類似地,可有類似地,可有MOV EAXMOV EAX,TABLEESITABLEESITABLETABLE為為3232位位移量的符號地址,位位移量的符號地址

31、,ESIESI的內容指向此表格中的一項。的內容指向此表格中的一項。 這種尋址方式也可以使用段跨越前綴。例如:這種尋址方式也可以使用段跨越前綴。例如:MOV DLMOV DL,ESES:STRINGSISTRINGSI匯編語言程序設計匯編語言程序設計方法、技術、應用方法、技術、應用河南師范大學計算機與信息技術學院河南師范大學計算機與信息技術學院262021-10-166. 6. 基址變址尋址基址變址尋址(based indexed addressingbased indexed addressing) 操作數(shù)的有效地址是一個基址寄存器和一個變址寄存器的內容之操作數(shù)的有效地址是一個基址寄存器和一個

32、變址寄存器的內容之和,所以有效地址由兩種成分組成。和,所以有效地址由兩種成分組成。如圖所示如圖所示。 這種尋址方式同樣適用于數(shù)組或表格處理,首地址可存放在基址寄這種尋址方式同樣適用于數(shù)組或表格處理,首地址可存放在基址寄存器中,而用變址寄存器來訪問數(shù)組中的各個元素。由于兩個寄存器都存器中,而用變址寄存器來訪問數(shù)組中的各個元素。由于兩個寄存器都可以修改,所以它比直接尋址方式更加靈活。可以修改,所以它比直接尋址方式更加靈活。匯編語言程序設計匯編語言程序設計方法、技術、應用方法、技術、應用河南師范大學計算機與信息技術學院河南師范大學計算機與信息技術學院272021-10-16基址變址尋址舉例基址變址尋

33、址舉例 例例 MOV AXMOV AX,BXDIBXDI (或寫為:(或寫為:MOV AXMOV AX,BXBXDIDI) 如(如(DSDS)2100H2100H,(,(BXBX)0158H0158H,(,(DIDI)10A5H10A5H 則則EAEA0158015810A510A511FDH11FDH, 物理地址物理地址210002100011FD11FD221FDH221FDH 指令執(zhí)行情況指令執(zhí)行情況如圖所示如圖所示。 執(zhí)行結果(執(zhí)行結果(AXAX)1234H1234H。 此種尋址方式使用段跨越前綴時的格式為:此種尋址方式使用段跨越前綴時的格式為:MOV AXMOV AX,ESES:BX

34、SIBXSI匯編語言程序設計匯編語言程序設計方法、技術、應用方法、技術、應用河南師范大學計算機與信息技術學院河南師范大學計算機與信息技術學院282021-10-167. 7. 相對基址變址尋址(相對基址變址尋址(relativedrelatived based indexed addressing based indexed addressing) 操作數(shù)的有效地址是一個基址寄存器與一個變址寄存器的內容操作數(shù)的有效地址是一個基址寄存器與一個變址寄存器的內容和指令中指定的位移量之和,所以有效地址由三種成分組成。和指令中指定的位移量之和,所以有效地址由三種成分組成。如圖如圖所示所示。 這種尋址方式

35、通常用于對二維數(shù)組的尋址。例如,存儲器中存這種尋址方式通常用于對二維數(shù)組的尋址。例如,存儲器中存放著由多個記錄組成的文件,在位移量可指向文件之首,基址寄存放著由多個記錄組成的文件,在位移量可指向文件之首,基址寄存器指向某個記錄,變址寄存器則指向該記錄中的一個元素。這種尋器指向某個記錄,變址寄存器則指向該記錄中的一個元素。這種尋址方式也為堆棧處理提供了方便,一般(址方式也為堆棧處理提供了方便,一般(BPBP)可指向棧頂,從棧頂)可指向棧頂,從棧頂?shù)綌?shù)組的首址可用位移量表示,變址寄存器可用來訪問數(shù)組中的某到數(shù)組的首址可用位移量表示,變址寄存器可用來訪問數(shù)組中的某個元素。個元素。匯編語言程序設計匯編

36、語言程序設計方法、技術、應用方法、技術、應用河南師范大學計算機與信息技術學院河南師范大學計算機與信息技術學院292021-10-16相對基址變址尋址舉例相對基址變址尋址舉例 例例 MOV AXMOV AX,MASKBXSIMASKBXSI(也可寫成(也可寫成 MOV AXMOV AX,MASKBXMASKBXSISI 或或 MOV AXMOV AX,MASKMASKBXBXSISI)。)。 如(如(DSDS)3000H3000H,(,(BXBX)2000H2000H,(,(SISI)10001000,MASKMASK0250H0250H, 則物理地址則物理地址16d16d(DSDS)()(BX

37、BX)()(SISI)MASKMASK 300003000020002000100010000250025033250H33250H 指令執(zhí)行情況指令執(zhí)行情況如圖所示如圖所示。 執(zhí)行結果(執(zhí)行結果(AXAX)1234H1234H。 類似地,對于類似地,對于3232位尋址方式可有:位尋址方式可有:MOV EAXMOV EAX,ARRAYEBXECXARRAYEBXECX提示:提示:位移量可用符號表示位移量可用符號表示同一尋址方式有多種表達形式同一尋址方式有多種表達形式匯編語言程序設計匯編語言程序設計方法、技術、應用方法、技術、應用河南師范大學計算機與信息技術學院河南師范大學計算機與信息技術學院3

38、02021-10-162.2.2 2.2.2 轉移地址尋址方式轉移地址尋址方式 段內直接尋址段內直接尋址段內間接尋址段內間接尋址段間直接尋址段間直接尋址段間間接尋址段間間接尋址知識要點知識要點匯編語言程序設計匯編語言程序設計方法、技術、應用方法、技術、應用河南師范大學計算機與信息技術學院河南師范大學計算機與信息技術學院312021-10-162.2.2 2.2.2 轉移地址尋址方式轉移地址尋址方式 如圖所示如圖所示。這種尋址方式用來確定轉移指令及這種尋址方式用來確定轉移指令及CALLCALL指令的轉向地址。指令的轉向地址。本節(jié)均以無條件轉移指令本節(jié)均以無條件轉移指令JMPJMP為例。為例。匯編

39、語言程序設計匯編語言程序設計方法、技術、應用方法、技術、應用河南師范大學計算機與信息技術學院河南師范大學計算機與信息技術學院322021-10-162.2.2 2.2.2 轉移地址尋址方式轉移地址尋址方式目標地址的尋址方式目標地址的尋址方式直接尋址:直接尋址: 轉移地址象立即數(shù)一樣,直接在指令的機器代碼中,就是直轉移地址象立即數(shù)一樣,直接在指令的機器代碼中,就是直接尋址方式。接尋址方式。間接尋址:間接尋址: 轉移地址在寄存器或主存單元中,就是通過寄存器或存儲器轉移地址在寄存器或主存單元中,就是通過寄存器或存儲器的間接尋址方式。的間接尋址方式。用寄存器或存儲器用寄存器或存儲器操作數(shù)表達操作數(shù)表達

40、用符號表達用符號表達匯編語言程序設計匯編語言程序設計方法、技術、應用方法、技術、應用河南師范大學計算機與信息技術學院河南師范大學計算機與信息技術學院332021-10-162.2.2 2.2.2 轉移地址尋址方式轉移地址尋址方式目標地址的范圍:段內目標地址的范圍:段內段內轉移段內轉移近轉移(近轉移(nearnear) 在當前代碼段在當前代碼段64KB64KB范圍內轉移(范圍內轉移( 32KB32KB范圍)范圍)不需要更改不需要更改CSCS段地址,只要改變段地址,只要改變IPIP偏移地址偏移地址段內轉移段內轉移短轉移(短轉移(shortshort) 轉移范圍可以用一個字節(jié)表達,在段內轉移范圍可以

41、用一個字節(jié)表達,在段內128128127127范圍的轉移范圍的轉移代碼段代碼段代碼段代碼段匯編語言程序設計匯編語言程序設計方法、技術、應用方法、技術、應用河南師范大學計算機與信息技術學院河南師范大學計算機與信息技術學院342021-10-162.2.2 2.2.2 轉移地址尋址方式轉移地址尋址方式目標地址的范圍:段間目標地址的范圍:段間段間轉移段間轉移遠轉移(遠轉移(farfar) 從當前代碼段跳轉到另一個代碼段,從當前代碼段跳轉到另一個代碼段,可以在可以在1MB1MB范圍。范圍。 需要更改需要更改CSCS段地址和段地址和IPIP偏移地址。偏移地址。 目標地址必須用一個目標地址必須用一個323

42、2位數(shù)表達,叫位數(shù)表達,叫做做3232位遠指針,它就是邏輯地址。位遠指針,它就是邏輯地址。代碼段代碼段代碼段代碼段 實際編程時,匯編程序會根據(jù)目標地址的距離,自動處理成實際編程時,匯編程序會根據(jù)目標地址的距離,自動處理成短轉移、近轉移或遠轉移。短轉移、近轉移或遠轉移。 可用操作符可用操作符shortshort、near ptrnear ptr 或或far ptrfar ptr強制。強制。匯編語言程序設計匯編語言程序設計方法、技術、應用方法、技術、應用河南師范大學計算機與信息技術學院河南師范大學計算機與信息技術學院352021-10-161. 1. 段內直接尋址段內直接尋址(intrasegme

43、ntintrasegment direct addressing direct addressing) 轉向的有效地址是轉向的有效地址是當前當前IPIP寄存器的內容和指令中指定的寄存器的內容和指令中指定的8 8位或位或1616位位位移量之和位移量之和,如圖所示如圖所示。 指令中的位移量是轉向的有效地址與當前指令中的位移量是轉向的有效地址與當前IPIP值之差,所以當這一程值之差,所以當這一程序段在內存中的不同區(qū)域運行時,這種尋址方式的轉移指令本身不會發(fā)序段在內存中的不同區(qū)域運行時,這種尋址方式的轉移指令本身不會發(fā)生變化,這是符合程序的再定位要求的。生變化,這是符合程序的再定位要求的。 轉向有效地

44、址用相對于當前轉向有效地址用相對于當前IPIP值的位移量來表示,所以它是一種相值的位移量來表示,所以它是一種相對尋址方式。對尋址方式。匯編語言程序設計匯編語言程序設計方法、技術、應用方法、技術、應用河南師范大學計算機與信息技術學院河南師范大學計算機與信息技術學院362021-10-161. 1. 段內直接尋址段內直接尋址(intrasegmentintrasegment direct addressing direct addressing)這種尋址方式適用于條件轉移及無條件轉移指令:這種尋址方式適用于條件轉移及無條件轉移指令: 當它用于條件轉移指令時,位移量只允許當它用于條件轉移指令時,位移

45、量只允許8 8位。位。 無條件轉移指令在位移量為無條件轉移指令在位移量為8 8位時稱為短跳轉,位移量為位時稱為短跳轉,位移量為1616位時則稱位時則稱為近跳轉為近跳轉 。匯編語言程序設計匯編語言程序設計方法、技術、應用方法、技術、應用河南師范大學計算機與信息技術學院河南師范大學計算機與信息技術學院372021-10-161. 1. 段內直接尋址段內直接尋址(intrasegmentintrasegment direct addressing direct addressing) 指令的匯編語言格式表示為:指令的匯編語言格式表示為:JMP NEAR PTR PROGIAJMP NEAR PTR

46、PROGIAJMP SHORT QUESTJMP SHORT QUEST PROGIA PROGIA和和QUESTQUEST均為轉向的符號地址,在機器指令中,用位移量來表均為轉向的符號地址,在機器指令中,用位移量來表示。示。 在匯編指令中:在匯編指令中: 如果位移量為如果位移量為1616位,則在符號地址前加操作符位,則在符號地址前加操作符NERA PTRNERA PTR; 如果位移量為如果位移量為8 8位,則在符號地址前加操作符位,則在符號地址前加操作符SHORTSHORT。 匯編語言程序設計匯編語言程序設計方法、技術、應用方法、技術、應用河南師范大學計算機與信息技術學院河南師范大學計算機與信

47、息技術學院382021-10-162. 2. 段內間接尋址段內間接尋址(intrasegmentintrasegment indirect addressing indirect addressing) 轉向有效地址是一個寄存器或是一個存儲單元的內容。轉向有效地址是一個寄存器或是一個存儲單元的內容。 這種尋址方式以及以下的兩種段間尋址方式都不能用于條件轉移指這種尋址方式以及以下的兩種段間尋址方式都不能用于條件轉移指令。也就是說:令。也就是說: 轉向有效地址轉向有效地址可以用數(shù)據(jù)尋址方式中除立即數(shù)以外的任何一種尋可以用數(shù)據(jù)尋址方式中除立即數(shù)以外的任何一種尋址方式取得址方式取得,所得到的轉向的有效

48、地址用來取代,所得到的轉向的有效地址用來取代IPIP寄存器的內容。寄存器的內容。如圖所示如圖所示。 條件轉移指令只能使用段內直接尋址的條件轉移指令只能使用段內直接尋址的8 8位位移量;位位移量; JMP JMP和和CALLCALL指令則可用四種尋址方式中的任何一種。指令則可用四種尋址方式中的任何一種。匯編語言程序設計匯編語言程序設計方法、技術、應用方法、技術、應用河南師范大學計算機與信息技術學院河南師范大學計算機與信息技術學院392021-10-162. 2. 段內間接尋址段內間接尋址(intrasegmentintrasegment indirect addressing indirect

49、addressing) 段內間接尋址轉移指令的匯編格式可以表示為:段內間接尋址轉移指令的匯編格式可以表示為:JMP BXJMP BXJMP WORD PTRBP+TABLE JMP WORD PTRBP+TABLE 其中其中WORD PTRWORD PTR為操作符,用以指出其后的尋址方式所取得的轉向地為操作符,用以指出其后的尋址方式所取得的轉向地址是一個字的有效地址,也就是說它是一種段內轉移。址是一個字的有效地址,也就是說它是一種段內轉移。 以上兩種尋址方式均為段內轉移,所以直接把求以上兩種尋址方式均為段內轉移,所以直接把求得的轉向的有效地址送到得的轉向的有效地址送到IPIP寄存器就可以了。寄

50、存器就可以了。匯編語言程序設計匯編語言程序設計方法、技術、應用方法、技術、應用河南師范大學計算機與信息技術學院河南師范大學計算機與信息技術學院402021-10-16段內間接尋址舉例段內間接尋址舉例 假設:(假設:(DSDS)2000H2000H,(,(BXBX)1256H1256H,(,(SISI)528FH528FH,位移量,位移量20A1H20A1H,(,(232F7H232F7H)3280H3280H,(,(264E5H264E5H)2450H2450H。例例1 1 JMP BXJMP BX則執(zhí)行該指令后(則執(zhí)行該指令后(IPIP)1256H1256H例例2 2JMP TABLEBXJ

51、MP TABLEBX則執(zhí)行該指令后則執(zhí)行該指令后(IPIP)()(16d16d(DSDS)()(BXBX)位移量)位移量) (20000200001256125620A120A1) (232F7232F7) 3280H3280H匯編語言程序設計匯編語言程序設計方法、技術、應用方法、技術、應用河南師范大學計算機與信息技術學院河南師范大學計算機與信息技術學院412021-10-16段內間接尋址舉例段內間接尋址舉例 例例3 3 JMP BXSI JMP BXSI則執(zhí)行該指令后則執(zhí)行該指令后 (IPIP)()(16d16d(DSDS)()(BXBX)位移量)位移量) (2000020000125612

52、56528F528F) (264E5264E5) 2450H2450H匯編語言程序設計匯編語言程序設計方法、技術、應用方法、技術、應用河南師范大學計算機與信息技術學院河南師范大學計算機與信息技術學院422021-10-163. 3. 段間直接尋址段間直接尋址(intersegmentintersegment direct addressing direct addressing) 指令中直接提供了轉向段地址和偏移地址,所以只要指令中直接提供了轉向段地址和偏移地址,所以只要用指令中指定的偏移地址取代用指令中指定的偏移地址取代IPIP寄存器的內容;寄存器的內容; 用指令中指定的段地址取代用指令中指

53、定的段地址取代CSCS寄存器的內容就完成了從一個段到寄存器的內容就完成了從一個段到另一個段的轉移操作。另一個段的轉移操作。如圖所示如圖所示。匯編語言程序設計匯編語言程序設計方法、技術、應用方法、技術、應用河南師范大學計算機與信息技術學院河南師范大學計算機與信息技術學院432021-10-163. 3. 段間直接尋址段間直接尋址(intersegmentintersegment direct addressing direct addressing) 指令的匯編語言格式可表示為:指令的匯編語言格式可表示為:JMP FAR PTR NEXTROUTINTJMP FAR PTR NEXTROUTIN

54、T 其中,其中,NEXTROUTINTNEXTROUTINT為轉向的符號地址,為轉向的符號地址,F(xiàn)AR PTRFAR PTR則是表示段間轉移則是表示段間轉移的操作符。的操作符。匯編語言程序設計匯編語言程序設計方法、技術、應用方法、技術、應用河南師范大學計算機與信息技術學院河南師范大學計算機與信息技術學院442021-10-164. 4. 段間間接尋址段間間接尋址(intersegmentintersegment indirect addressing indirect addressing) 用用存儲器中的兩個相繼字的內容來取代存儲器中的兩個相繼字的內容來取代IPIP和和CSCS寄存器中的原始

55、內容寄存器中的原始內容,以達到段間轉移的目的。以達到段間轉移的目的。 存儲單元的地址是由指令指定除立即數(shù)方式和寄存器方式以外的存儲單元的地址是由指令指定除立即數(shù)方式和寄存器方式以外的任何一種數(shù)據(jù)尋址方式取得。任何一種數(shù)據(jù)尋址方式取得。 如圖所示如圖所示。 匯編語言程序設計匯編語言程序設計方法、技術、應用方法、技術、應用河南師范大學計算機與信息技術學院河南師范大學計算機與信息技術學院452021-10-164. 4. 段間間接尋址段間間接尋址(intersegmentintersegment indirect addressing indirect addressing) 這種指令的匯編語言格式

56、可表示為:這種指令的匯編語言格式可表示為:JMP DWORD PTRINTERSJMP DWORD PTRINTERSBXBX 其中,其中,INTERSINTERSBXBX說明數(shù)據(jù)尋址方式為直接變址尋址方式,說明數(shù)據(jù)尋址方式為直接變址尋址方式,DWORD PTRDWORD PTR為雙字操作符,說明轉向地址需取雙字為段間轉移指令。為雙字操作符,說明轉向地址需取雙字為段間轉移指令。匯編語言程序設計匯編語言程序設計方法、技術、應用方法、技術、應用河南師范大學計算機與信息技術學院河南師范大學計算機與信息技術學院462021-10-162.2.3 2.2.3 尋址方式的選擇尋址方式的選擇 立即尋址方式主

57、要用于:立即尋址方式主要用于: (1 1) 寄存器初始化,如寄存器初始化,如MOV CX, 12;MOV CX, 12; (3 3) 與寄存器中內容進行算術或邏輯運算,如與寄存器中內容進行算術或邏輯運算,如ADD AX, 100ADD AX, 100 (2 2) 為存儲單元賦值,如為存儲單元賦值,如MOV XX, 12;MOV XX, 12; 寄存器尋址方式主要用于:寄存器尋址方式主要用于: 存放運算對象、中間結果、預算結果、計數(shù)值等。存放運算對象、中間結果、預算結果、計數(shù)值等。匯編語言程序設計匯編語言程序設計方法、技術、應用方法、技術、應用河南師范大學計算機與信息技術學院河南師范大學計算機與

58、信息技術學院472021-10-162.2.3 2.2.3 尋址方式的選擇尋址方式的選擇 存儲器尋址方式主要用于:存儲器尋址方式主要用于: 訪問存儲單元中一片連續(xù)存儲單元,這片連續(xù)單元地址不用變量訪問存儲單元中一片連續(xù)存儲單元,這片連續(xù)單元地址不用變量一一給出,只需為存儲區(qū)首地址定義一個變量,某個存儲單元用存儲一一給出,只需為存儲區(qū)首地址定義一個變量,某個存儲單元用存儲器尋址方式中的一種均可方便訪問。器尋址方式中的一種均可方便訪問。 與與C C語言中用指針處理數(shù)組的方法類似。語言中用指針處理數(shù)組的方法類似。匯編語言程序設計匯編語言程序設計方法、技術、應用方法、技術、應用河南師范大學計算機與信息

59、技術學院河南師范大學計算機與信息技術學院482021-10-162.3 2.3 指令系統(tǒng)指令系統(tǒng) 通用數(shù)據(jù)傳送指令通用數(shù)據(jù)傳送指令處理機控制與雜項操作指令處理機控制與雜項操作指令地址傳送指令地址傳送指令標志傳送指令標志傳送指令輸入輸出指令輸入輸出指令匯編語言程序設計匯編語言程序設計方法、技術、應用方法、技術、應用河南師范大學計算機與信息技術學院河南師范大學計算機與信息技術學院492021-10-16準備知識準備知識指令系統(tǒng)指令系統(tǒng)計算機的指令系統(tǒng)就是指該計算機能夠執(zhí)行的全部指令的集合。計算機的指令系統(tǒng)就是指該計算機能夠執(zhí)行的全部指令的集合。每種計算機都有它支持的指令集合每種計算機都有它支持的指

60、令集合 。1616位位80868086指令系統(tǒng)是指令系統(tǒng)是Intel 80 x86Intel 80 x86系列微處理器指令系統(tǒng)的基礎。系列微處理器指令系統(tǒng)的基礎。匯編語言程序設計匯編語言程序設計方法、技術、應用方法、技術、應用河南師范大學計算機與信息技術學院河南師范大學計算機與信息技術學院502021-10-16準備知識準備知識學習指令的注意事項學習指令的注意事項 指令的功能指令的功能該指令能夠實現(xiàn)何種操作。通常指令助記符就是該指令能夠實現(xiàn)何種操作。通常指令助記符就是指令功能的英文單詞或其縮寫形式。指令功能的英文單詞或其縮寫形式。 指令支持的尋址方式指令支持的尋址方式該指令中的操作數(shù)可以采用何

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論