第4章 匯編語言基礎(chǔ)-新_第1頁
第4章 匯編語言基礎(chǔ)-新_第2頁
第4章 匯編語言基礎(chǔ)-新_第3頁
第4章 匯編語言基礎(chǔ)-新_第4頁
第4章 匯編語言基礎(chǔ)-新_第5頁
已閱讀5頁,還剩160頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、2022-4-3014.1 匯編語言的基本概念匯編語言的基本概念 4.2 80 x86指令系統(tǒng)指令系統(tǒng) 4.3 80 x86的尋址方式的尋址方式 4.4 8086指令系統(tǒng)指令系統(tǒng) 4.5 80 x86指令系統(tǒng)指令系統(tǒng) 第4章 匯編語言基礎(chǔ)本章重點u 8086指令特點指令特點u 8086的尋址方式的尋址方式u 8086的指令格式及數(shù)據(jù)類型的指令格式及數(shù)據(jù)類型u 8086的指令集的指令集u 匯編語言(匯編語言(Assembly Language)是面向機(jī)器)是面向機(jī)器的程序設(shè)計語言。的程序設(shè)計語言。 u 在匯編語言中,用助記符(在匯編語言中,用助記符(Memoni)代替操作)代替操作碼,用地址符號

2、(碼,用地址符號(Symbol)或標(biāo)號()或標(biāo)號(Label)代)代替地址碼書寫程序,使程序編寫更加簡單、容易,替地址碼書寫程序,使程序編寫更加簡單、容易,大大提高了編程效率,用匯編語言書寫出的程序大大提高了編程效率,用匯編語言書寫出的程序就稱為匯編語言源程序。就稱為匯編語言源程序。 u 匯編語言也稱為符號語言。匯編語言也稱為符號語言。4.1 匯編語言的基本概念匯編語言的基本概念 4.1 匯編語言的基本概念匯編語言的基本概念 4.1.1 匯編語言的基本語法匯編語言的基本語法 4.1.1.1 匯編語言的語句類型匯編語言的語句類型(1)指令型語句由指令助記符構(gòu)成,每一條指令性語句都)指令型語句由指

3、令助記符構(gòu)成,每一條指令性語句都有一條機(jī)器碼指令與其相對應(yīng),即匯編時生成目標(biāo)代碼(機(jī)有一條機(jī)器碼指令與其相對應(yīng),即匯編時生成目標(biāo)代碼(機(jī)器代碼)。器代碼)。 (2)指示型語句由偽指令構(gòu)成,它告訴匯編器應(yīng)如何對源)指示型語句由偽指令構(gòu)成,它告訴匯編器應(yīng)如何對源程序進(jìn)行匯編,如何定義變量、分配存儲單元以及指示程序程序進(jìn)行匯編,如何定義變量、分配存儲單元以及指示程序開始和結(jié)束等。這種動作并不會產(chǎn)生機(jī)器指令,也不會對目開始和結(jié)束等。這種動作并不會產(chǎn)生機(jī)器指令,也不會對目標(biāo)代碼有任何影響。標(biāo)代碼有任何影響。 4.1.1 匯編語言的基本語法匯編語言的基本語法 4.1.1.2常量、變量、標(biāo)號、運算符和表達(dá)式

4、常量、變量、標(biāo)號、運算符和表達(dá)式 1常量常量 常量是沒有任何屬性的純數(shù)值。在匯編期間,它的值已常量是沒有任何屬性的純數(shù)值。在匯編期間,它的值已能完全確定,且在程序運行中,它也不會發(fā)生變化。它可以能完全確定,且在程序運行中,它也不會發(fā)生變化。它可以有以下幾種類型:有以下幾種類型:(1)二進(jìn)制常量是由一串)二進(jìn)制常量是由一串“0”和和“1”組成的序列,并以字組成的序列,并以字母母B結(jié)尾。例如結(jié)尾。例如00110110B是二進(jìn)制數(shù)。是二進(jìn)制數(shù)。(2)八進(jìn)制常量是以字母)八進(jìn)制常量是以字母O或或Q結(jié)尾的,由結(jié)尾的,由07的數(shù)字組成的數(shù)字組成的序列。例如的序列。例如357Q、65O都是八進(jìn)制數(shù)。都是八進(jìn)

5、制數(shù)。(3)十進(jìn)制常量是由若干個)十進(jìn)制常量是由若干個09的數(shù)字組成的序列,并以字的數(shù)字組成的序列,并以字母母D結(jié)尾??墒÷越Y(jié)尾??墒÷訢,數(shù)字序列后無任何字母的常數(shù)被默認(rèn),數(shù)字序列后無任何字母的常數(shù)被默認(rèn)為十進(jìn)制數(shù)。例如為十進(jìn)制數(shù)。例如375D、148都是十進(jìn)制數(shù)。都是十進(jìn)制數(shù)。 (4)十六進(jìn)制常量是由若干個)十六進(jìn)制常量是由若干個09的數(shù)字及的數(shù)字及AF的字母組的字母組成的序列,并以字母成的序列,并以字母H結(jié)尾。例如結(jié)尾。例如5BF8H、3214H。對于以。對于以字母字母AF起頭的十六進(jìn)制數(shù),必須在前邊加一個起頭的十六進(jìn)制數(shù),必須在前邊加一個0,以便與,以便與標(biāo)識符區(qū)別開,否則匯編程序會將

6、其誤認(rèn)為標(biāo)識符,匯編時標(biāo)識符區(qū)別開,否則匯編程序會將其誤認(rèn)為標(biāo)識符,匯編時將報錯。將報錯。 (5)實數(shù):它由整數(shù)、小數(shù)和指數(shù)部分組成,這是計)實數(shù):它由整數(shù)、小數(shù)和指數(shù)部分組成,這是計算機(jī)中的浮點表示法。實數(shù)一般用十進(jìn)制數(shù)形式給出,實數(shù)算機(jī)中的浮點表示法。實數(shù)一般用十進(jìn)制數(shù)形式給出,實數(shù)的格式如下:的格式如下: 整數(shù)部分整數(shù)部分.小數(shù)部分小數(shù)部分指數(shù)部分。指數(shù)部分。 其中,整數(shù)和小數(shù)部分合成的數(shù)值稱為尾數(shù),是帶符號其中,整數(shù)和小數(shù)部分合成的數(shù)值稱為尾數(shù),是帶符號數(shù)。指數(shù)部分在字母數(shù)。指數(shù)部分在字母E之后,表示尾數(shù)的數(shù)量級。例如之后,表示尾數(shù)的數(shù)量級。例如6.317E-4。 4.1 匯編語言的基

7、本概念匯編語言的基本概念 (6)字符常量和字符串常量:以單引號引起來的單個字符)字符常量和字符串常量:以單引號引起來的單個字符為字符常量。以雙引號引起來的單個或多個字符為字符串常為字符常量。以雙引號引起來的單個或多個字符為字符串常量。這些字符以量。這些字符以ASC碼形式存儲在內(nèi)存中,如:碼形式存儲在內(nèi)存中,如:A為字符常量(內(nèi)存中的為字符常量(內(nèi)存中的ASCII值為值為41H););“A”為字符串常量(內(nèi)存中的為字符串常量(內(nèi)存中的ASCII值為值為41H,00););“ABC”為字符串常量(內(nèi)存中的為字符串常量(內(nèi)存中的ASCII值為值為41H,42H,43H,00););“123”為字符串

8、常量(內(nèi)存中的為字符串常量(內(nèi)存中的ASCII值為值為31H,32H,33H,00););注意,字符常量的大寫與小寫代表不同的常量。注意,字符常量的大寫與小寫代表不同的常量。 4.1 匯編語言的基本概念匯編語言的基本概念 4.1 匯編語言的基本概念匯編語言的基本概念 2變量變量 變量是在程序運行期間可以改變的量,變量名是存放數(shù)變量是在程序運行期間可以改變的量,變量名是存放數(shù)據(jù)的存儲單元的符號地址,而該存儲單元中的數(shù)據(jù)是變量的據(jù)的存儲單元的符號地址,而該存儲單元中的數(shù)據(jù)是變量的值,因此可以用變量名來訪問變量。所有的變量都有三種屬值,因此可以用變量名來訪問變量。所有的變量都有三種屬性:性:(1)段

9、值()段值(SEG):變量所在段的段首地址。):變量所在段的段首地址。 (2)偏移量()偏移量(OFFSET):偏移量是):偏移量是16位無符號數(shù),它表位無符號數(shù),它表示從段首地址到變量存儲單元位置之間的字節(jié)數(shù)。示從段首地址到變量存儲單元位置之間的字節(jié)數(shù)。 (3)類型()類型(TYPE):變量的類型是所定義的每個變量所占):變量的類型是所定義的每個變量所占據(jù)的字節(jié)數(shù)。變量類型可以為字節(jié)、字、雙字、四字或據(jù)的字節(jié)數(shù)。變量類型可以為字節(jié)、字、雙字、四字或10字字節(jié)。變量按標(biāo)識符的規(guī)則取名。變量是由數(shù)據(jù)定義偽指令來節(jié)。變量按標(biāo)識符的規(guī)則取名。變量是由數(shù)據(jù)定義偽指令來定義的。定義的。 3標(biāo)號標(biāo)號 標(biāo)號

10、是存放某條指令的存儲單元的符號地址,常作為轉(zhuǎn)標(biāo)號是存放某條指令的存儲單元的符號地址,常作為轉(zhuǎn)移指令或子程序調(diào)用指令的目的操作數(shù)。標(biāo)號有個屬性:移指令或子程序調(diào)用指令的目的操作數(shù)。標(biāo)號有個屬性:段地址、偏移地址和類型。標(biāo)號的段地址是指標(biāo)號所指向的段地址、偏移地址和類型。標(biāo)號的段地址是指標(biāo)號所指向的指令代碼所在段的段首地址。偏移量是指令代碼所在段的段首地址。偏移量是16位無符號數(shù),它表位無符號數(shù),它表示從段首地址到標(biāo)號位置之間的字節(jié)數(shù)。類似地,上述兩個示從段首地址到標(biāo)號位置之間的字節(jié)數(shù)。類似地,上述兩個屬性就確定了標(biāo)號所指向的指令在存儲器中的段地址和偏移屬性就確定了標(biāo)號所指向的指令在存儲器中的段地

11、址和偏移地址。地址。 標(biāo)號的類型有兩種:標(biāo)號的類型有兩種:NEAR和和FAR類型。類型。NEAR類型將類型將產(chǎn)生一個兩字節(jié)的偏移地址,它指定本標(biāo)號只能被標(biāo)號所在產(chǎn)生一個兩字節(jié)的偏移地址,它指定本標(biāo)號只能被標(biāo)號所在段的轉(zhuǎn)移指令或調(diào)用指令引用,實現(xiàn)段內(nèi)轉(zhuǎn)移或調(diào)用。段的轉(zhuǎn)移指令或調(diào)用指令引用,實現(xiàn)段內(nèi)轉(zhuǎn)移或調(diào)用。FAR類型將產(chǎn)生一個包括段地址和偏移地址的四字節(jié)轉(zhuǎn)移地址,類型將產(chǎn)生一個包括段地址和偏移地址的四字節(jié)轉(zhuǎn)移地址,它指定本標(biāo)號可被其他段的轉(zhuǎn)移指令和調(diào)用指令引用,實現(xiàn)它指定本標(biāo)號可被其他段的轉(zhuǎn)移指令和調(diào)用指令引用,實現(xiàn)段間轉(zhuǎn)移或調(diào)用。段間轉(zhuǎn)移或調(diào)用。 4.1 匯編語言的基本概念匯編語言的基本概念

12、 4運算符和表達(dá)式運算符和表達(dá)式表達(dá)式由操作數(shù)和運算符按語法規(guī)則組合而成,表達(dá)式的計表達(dá)式由操作數(shù)和運算符按語法規(guī)則組合而成,表達(dá)式的計算結(jié)果是一個確定的值,在匯編期間由匯編程序計算。表達(dá)算結(jié)果是一個確定的值,在匯編期間由匯編程序計算。表達(dá)式中的操作數(shù)可以是寄存器名、常量、標(biāo)號或變量。運算符式中的操作數(shù)可以是寄存器名、常量、標(biāo)號或變量。運算符有以下幾種:有以下幾種:(1)算術(shù)運算符:算術(shù)運算符包括:)算術(shù)運算符:算術(shù)運算符包括:、MOD(模除)。(模除)。算術(shù)運算符可用于數(shù)值表達(dá)式或地址表達(dá)式中。當(dāng)用于地址算術(shù)運算符可用于數(shù)值表達(dá)式或地址表達(dá)式中。當(dāng)用于地址表達(dá)式時,只有當(dāng)其結(jié)果有明確的物理意

13、義時才是有效的。表達(dá)式時,只有當(dāng)其結(jié)果有明確的物理意義時才是有效的。例如,兩個地址相乘或相除是無意義的。在地址表達(dá)式中,例如,兩個地址相乘或相除是無意義的。在地址表達(dá)式中,可以使用可以使用或或,但也必須注意其物理意義。例如,兩個不,但也必須注意其物理意義。例如,兩個不同段的地址相加也是無意義的。經(jīng)常使用的形式是地址同段的地址相加也是無意義的。經(jīng)常使用的形式是地址數(shù)數(shù)字量,它們是有意義的。字量,它們是有意義的。 4.1 匯編語言的基本概念匯編語言的基本概念 4運算符和表達(dá)式運算符和表達(dá)式(2)邏輯運算符:邏輯運算符包括)邏輯運算符:邏輯運算符包括NOT、AND、OR、XOR,分別對常數(shù)進(jìn)行按位邏

14、輯非、邏輯與、邏輯或、異或,分別對常數(shù)進(jìn)行按位邏輯非、邏輯與、邏輯或、異或運算。邏輯運算符是按位操作的,它只能用于數(shù)值表達(dá)式中。運算。邏輯運算符是按位操作的,它只能用于數(shù)值表達(dá)式中。(3)關(guān)系運算符:關(guān)系運算符包括)關(guān)系運算符:關(guān)系運算符包括EQ、NE、LT、GT、LE、GE,分別表示相等、不等、小于、大于、小于等于、分別表示相等、不等、小于、大于、小于等于、大于等于。關(guān)系運算符用于比較兩個表達(dá)式,表達(dá)式中的項大于等于。關(guān)系運算符用于比較兩個表達(dá)式,表達(dá)式中的項必須是常數(shù)或同一段內(nèi)的變量。對于常數(shù)按無符號數(shù)比較,必須是常數(shù)或同一段內(nèi)的變量。對于常數(shù)按無符號數(shù)比較,對于變量則比較它們的偏移量。如

15、果比較結(jié)果為對于變量則比較它們的偏移量。如果比較結(jié)果為真真,用,用0FFFFH表示;結(jié)果為表示;結(jié)果為假假,用,用表示。表示。 4.1 匯編語言的基本概念匯編語言的基本概念 4運算符和表達(dá)式運算符和表達(dá)式(4)分析運算符:)分析運算符:分析運算符用于分解存儲器操作數(shù)(標(biāo)號、變量)的各部分分析運算符用于分解存儲器操作數(shù)(標(biāo)號、變量)的各部分(段地址、偏移地址、類型等),并返回相應(yīng)的值。分析運(段地址、偏移地址、類型等),并返回相應(yīng)的值。分析運算符包括:算符包括:TYPE、LENGTH、SIZE、OFFSET、SEG等。等。TYPE:取類型運算符:取類型運算符格式為:格式為:TYPE 表達(dá)式表達(dá)式

16、如果表達(dá)式是變量,則匯編程序?qū)⒒厮驮撟兞康囊宰止?jié)數(shù)表如果表達(dá)式是變量,則匯編程序?qū)⒒厮驮撟兞康囊宰止?jié)數(shù)表示的類型:示的類型:DB為為1,DW為為2,DD為為4,DF為為6,DQ為為8,DT為為10。如果表達(dá)式是標(biāo)號,則匯編程序?qū)⒒厮痛碓摌?biāo)。如果表達(dá)式是標(biāo)號,則匯編程序?qū)⒒厮痛碓摌?biāo)號類型的數(shù)值:號類型的數(shù)值:NEAR為為 -1,F(xiàn)AR為為 -2。如果表達(dá)式為常數(shù),。如果表達(dá)式為常數(shù),則應(yīng)回送則應(yīng)回送0。LENGTH:取變量長度運算符:取變量長度運算符格式為:格式為:LENGTH 變量變量 4.1 匯編語言的基本概念匯編語言的基本概念 對于變量中使用對于變量中使用DUP的的情況,匯編程序?qū)⒒厮?/p>

17、分配給該情況,匯編程序?qū)⒒厮头峙浣o該變量的單元數(shù),而對于其他情況則送變量的單元數(shù),而對于其他情況則送1。SIZE:取變量大小運算符:取變量大小運算符格式為:格式為:SIZE 變量變量 匯編程序應(yīng)回送分配給該變量的字節(jié)數(shù)。但是,此值是匯編程序應(yīng)回送分配給該變量的字節(jié)數(shù)。但是,此值是 LENGTH值和值和TYPE值的乘積。值的乘積。 OFFSET:取偏移地址運算符:取偏移地址運算符格式為:格式為:OFFSET 變量或標(biāo)號變量或標(biāo)號匯編程序?qū)⒒厮妥兞炕驑?biāo)號的偏移地址值。匯編程序?qū)⒒厮妥兞炕驑?biāo)號的偏移地址值。 SEG:取段地址運算符:取段地址運算符格式為:格式為:SEG 變量或標(biāo)號變量或標(biāo)號匯編程序?qū)?/p>

18、回送變量或標(biāo)號的段地址值。匯編程序?qū)⒒厮妥兞炕驑?biāo)號的段地址值。 4.1 匯編語言的基本概念匯編語言的基本概念 對于變量中使用對于變量中使用DUP的情況,匯編程序?qū)⒒厮头峙浣o該的情況,匯編程序?qū)⒒厮头峙浣o該變量的單元數(shù),而對于其他情況則送變量的單元數(shù),而對于其他情況則送1。 SIZE:取變量大小運算符:取變量大小運算符格式為:格式為:SIZE 變量變量 匯編程序應(yīng)回送分配給該變量的字節(jié)數(shù)。但是,此值是匯編程序應(yīng)回送分配給該變量的字節(jié)數(shù)。但是,此值是LENGTH值和值和TYPE值的乘積。值的乘積。 OFFSET:取偏移地址運算符取偏移地址運算符 格式為:格式為:OFFSET 變量或標(biāo)號變量或標(biāo)號匯

19、編程序?qū)⒒厮妥兞炕驑?biāo)號的偏移地址值。匯編程序?qū)⒒厮妥兞炕驑?biāo)號的偏移地址值。 SEG:取段地址運算符:取段地址運算符 格式為:格式為:SEG 變量或標(biāo)號變量或標(biāo)號匯編程序?qū)⒒厮妥兞炕驑?biāo)號的段地址值。匯編程序?qū)⒒厮妥兞炕驑?biāo)號的段地址值。 4.1 匯編語言的基本概念匯編語言的基本概念 4運算符和表達(dá)式運算符和表達(dá)式(5)屬性修改運算符:這類運算符有)屬性修改運算符:這類運算符有PTR和和THIS,PTR(修改屬性運算符)是用來重新定義已定義過的變量或標(biāo)號(修改屬性運算符)是用來重新定義已定義過的變量或標(biāo)號的類型。的類型。THIS(類型指定運算符)可以用來改變存儲區(qū)的(類型指定運算符)可以用來改變存儲

20、區(qū)的類型,類型,THIS運算符的運算對象是類型(運算符的運算對象是類型(BYTE、WORD、DWORD)或距離()或距離(NESR、FAR),用于規(guī)定所指變量或),用于規(guī)定所指變量或標(biāo)號的類型屬性或距離屬性。標(biāo)號的類型屬性或距離屬性。 在計算表達(dá)式時,應(yīng)該首先計算優(yōu)先級高的運算符,然在計算表達(dá)式時,應(yīng)該首先計算優(yōu)先級高的運算符,然后從左到右地對優(yōu)先級相同的運算符進(jìn)行計算。括號也可以后從左到右地對優(yōu)先級相同的運算符進(jìn)行計算。括號也可以改變計算次序,括號內(nèi)的表達(dá)式應(yīng)優(yōu)先計算。運算符的優(yōu)先改變計算次序,括號內(nèi)的表達(dá)式應(yīng)優(yōu)先計算。運算符的優(yōu)先級排列如表級排列如表4.1所示。所示。 4.1 匯編語言的基

21、本概念匯編語言的基本概念 2022-4-302022-4-3017174.2 80 x864.2 80 x86指令特點指令特點 指令:指令:u控制計算機(jī)完成某種操作的命令控制計算機(jī)完成某種操作的命令:u處理器所能識別的所有指令的集合處理器所能識別的所有指令的集合指令的兼容性:指令的兼容性:u同一系列機(jī)的指令都是兼容的同一系列機(jī)的指令都是兼容的機(jī)器語言機(jī)器語言:低級語言低級語言, ,它是用二進(jìn)制代碼表示的它是用二進(jìn)制代碼表示的匯編語言匯編語言:中級語言,助記符形式,中級語言,助記符形式,它是符號化的機(jī)器語言它是符號化的機(jī)器語言高級語言高級語言: :如如Java,CJava,C+、C C、Fort

22、ranFortran、BasicBasicu數(shù)據(jù)傳送數(shù)據(jù)傳送Data TransferData Transferu算術(shù)運算算術(shù)運算ArithmeticArithmeticu邏輯運算和移位邏輯運算和移位logiclogicu串操作串操作string manipulationstring manipulationu控制轉(zhuǎn)移類控制轉(zhuǎn)移類control transfercontrol transferu處理器控制處理器控制processor control processor control 80888088和和80868086的指令系統(tǒng)是完全相同的;的指令系統(tǒng)是完全相同的;80868086的指令系統(tǒng)

23、共包含的指令系統(tǒng)共包含9292種基本指令,按照功能分為種基本指令,按照功能分為6 6大類:大類:指令中應(yīng)包含的信息指令中應(yīng)包含的信息運算數(shù)據(jù)的來源運算數(shù)據(jù)的來源運算結(jié)果的去向運算結(jié)果的去向執(zhí)行的操作執(zhí)行的操作1. 1. 指令的基本構(gòu)成指令的基本構(gòu)成 標(biāo)號:標(biāo)號:操作碼操作碼操作數(shù)操作數(shù);注釋;注釋 ,它表示本指令的它表示本指令的操作操作類型類型,用助記符形式表,用助記符形式表示,是指令語句中的關(guān)示,是指令語句中的關(guān)鍵字,鍵字,不可缺省不可缺省,必要,必要時可在指令助記符的前時可在指令助記符的前面加上一個或多個面加上一個或多個“前前綴綴”,從而實現(xiàn)某些附,從而實現(xiàn)某些附加操作加操作。標(biāo)號是標(biāo)號是

24、給該指令所在地給該指令所在地址取的名字址取的名字,必須后跟冒,必須后跟冒號號“:”,它可以,它可以缺省缺省。屬于標(biāo)識符,必須遵循一屬于標(biāo)識符,必須遵循一定的規(guī)則定的規(guī)則。操作數(shù)是操作數(shù)是參加本指令運算參加本指令運算的的數(shù)據(jù)數(shù)據(jù),有些指令不需要操,有些指令不需要操作數(shù),可以缺??;有些指令作數(shù),可以缺?。挥行┲噶钚枰獌蓚€操作數(shù),這時必須需要兩個操作數(shù),這時必須用逗號(,)將兩個操作數(shù)用逗號(,)將兩個操作數(shù)分開;有些操作數(shù)可以用表分開;有些操作數(shù)可以用表達(dá)式來表示。達(dá)式來表示。用來對指令功能加以說用來對指令功能加以說明,給閱讀程序帶來方便,明,給閱讀程序帶來方便,是可選項,允許缺省,如果是可選項,

25、允許缺省,如果帶注釋則必須用分號(;)帶注釋則必須用分號(;)開頭,匯編程序不對它做任開頭,匯編程序不對它做任何處理何處理。操作碼操作碼目的目的操作數(shù),操作數(shù),源源操操作數(shù)作數(shù)12字節(jié)字節(jié)17字節(jié)字節(jié)立即數(shù)操作數(shù)、立即數(shù)操作數(shù)、寄存器操作數(shù)、寄存器操作數(shù)、存儲器操作數(shù)存儲器操作數(shù)(1)指令的基本構(gòu)成指令的基本構(gòu)成一條一條80868086指令包含有操作碼和操作數(shù)兩部分,指令的長度在指令包含有操作碼和操作數(shù)兩部分,指令的長度在1717個字節(jié)之間個字節(jié)之間指明指明操作類型操作類型( (助記助記符符) )指明指令指明指令操作對象操作對象或或操作對象存放操作對象存放地址地址8 8位數(shù)位數(shù)1616位數(shù)位數(shù)

26、無符號數(shù)無符號數(shù)00H00H0 0FFH(0255)FFH(0255)0000H0000H0 0FFFFHFFFFH(065535)(065535)帶符號數(shù)帶符號數(shù)80H7FH(-128+127)80H7FH(-128+127)8000H7FFFH8000H7FFFH(-32768+32767)(-32768+32767)1 1)立即數(shù)操作數(shù))立即數(shù)操作數(shù)即即常數(shù)常數(shù),不因指令的執(zhí)行而改變,可以是字節(jié)(,不因指令的執(zhí)行而改變,可以是字節(jié)(8 8位)、位)、字(字(1616位);可以是有符號數(shù)或無符號數(shù),但數(shù)的取值范位);可以是有符號數(shù)或無符號數(shù),但數(shù)的取值范圍必須符合相應(yīng)字長數(shù)的規(guī)定。圍必須符

27、合相應(yīng)字長數(shù)的規(guī)定。注意:注意:立即立即數(shù)數(shù)操作數(shù)只能用作源操作數(shù)操作數(shù)只能用作源操作數(shù),不能用作目的操作數(shù)不能用作目的操作數(shù)2 2)寄存器操作數(shù)寄存器操作數(shù) 寄存器操作數(shù)存放在寄存器操作數(shù)存放在CPUCPU的的8 8個個通用寄存器或通用寄存器或4 4個段寄存器中,個段寄存器中,既可以用作源操作數(shù)也可以用既可以用作源操作數(shù)也可以用作目的操作數(shù)作目的操作數(shù);但;但CSCS一般不作一般不作為目的操作數(shù)為目的操作數(shù); 個別指令將個別指令將FLAGSFLAGS作為操作數(shù)作為操作數(shù)AHALBLCLDLDHCHBHDXCXBXAXSPBPDISI目的變址寄存器源變址寄存器基址指針寄存器堆棧指針寄存器通用寄

28、存器通用寄存器中AX、BX、CX、DX、SI、DI、BP、SP存放字操作數(shù);AH、AL、BH、BL、CH、CL、DH、DL存放字節(jié)操作數(shù);3 3)存儲器操作數(shù)存儲器操作數(shù)u存儲器操作數(shù)可以是字節(jié)、字、雙字,分別存在存儲器操作數(shù)可以是字節(jié)、字、雙字,分別存在1 1個、個、2 2個、個、4 4個存儲單元中;它個存儲單元中;它既可以用作源操作數(shù)也可以用作目的操既可以用作源操作數(shù)也可以用作目的操作數(shù)作數(shù);u注意:對大多數(shù)指令,注意:對大多數(shù)指令,不允許源操作數(shù)和目的操作數(shù)同時不允許源操作數(shù)和目的操作數(shù)同時為存儲器操作數(shù)為存儲器操作數(shù),即不允許存儲器到存儲器的操作。,即不允許存儲器到存儲器的操作。u存儲

29、器單元的地址由兩部分組成:段基址和偏移地址(也存儲器單元的地址由兩部分組成:段基址和偏移地址(也叫有效地址),叫有效地址),所以各種存儲器操作,都涉及到段寄存器。所以各種存儲器操作,都涉及到段寄存器。u一條指令的執(zhí)行時間應(yīng)包括取指令、取操作數(shù)、執(zhí)行指令一條指令的執(zhí)行時間應(yīng)包括取指令、取操作數(shù)、執(zhí)行指令及傳送結(jié)果及傳送結(jié)果4 4部分時間,通常用部分時間,通常用時鐘周期時鐘周期數(shù)來表示;數(shù)來表示;u不同的指令在執(zhí)行時間上有很大差別。不同的指令在執(zhí)行時間上有很大差別。2. 2. 指令的執(zhí)行時間指令的執(zhí)行時間p寄存器操作數(shù)的指令執(zhí)行速度最快;寄存器操作數(shù)的指令執(zhí)行速度最快;p立即操作數(shù)作為指令的一部分

30、存放在指令隊列中,因此執(zhí)行立即操作數(shù)作為指令的一部分存放在指令隊列中,因此執(zhí)行 指令時不需要訪問內(nèi)存,執(zhí)行速度也比較指令時不需要訪問內(nèi)存,執(zhí)行速度也比較快快;p存儲器操作數(shù)放在內(nèi)存單元中,首先由存儲器操作數(shù)放在內(nèi)存單元中,首先由BIUBIU計算出計算出2020位物理位物理 地址,然后再執(zhí)行存儲器的讀寫操作,指令的執(zhí)行速度最慢。地址,然后再執(zhí)行存儲器的讀寫操作,指令的執(zhí)行速度最慢。例如:例如:CPUCPU的時鐘頻率為的時鐘頻率為5MHz5MHz,即一個時鐘周期為,即一個時鐘周期為0.20.2微秒,微秒,則寄存器到寄存器之間的傳送指令的執(zhí)行時間為:則寄存器到寄存器之間的傳送指令的執(zhí)行時間為: t=

31、2X0.2=0.4t=2X0.2=0.4微秒微秒再如:立即操作數(shù)傳送到寄存器的指令執(zhí)行時間為:再如:立即操作數(shù)傳送到寄存器的指令執(zhí)行時間為: t=4X0.2=0.8t=4X0.2=0.8微秒微秒4.2.2 指令流水線和并行控制指令流水線和并行控制1并行控制技術(shù)并行控制技術(shù) 并行控制技術(shù)是指計算機(jī)同時執(zhí)行多個任務(wù)或多條指令或并行控制技術(shù)是指計算機(jī)同時執(zhí)行多個任務(wù)或多條指令或同時對多個數(shù)據(jù)項進(jìn)行處理的技術(shù)。早期的計算機(jī)是基于同時對多個數(shù)據(jù)項進(jìn)行處理的技術(shù)。早期的計算機(jī)是基于馮馮諾伊曼的體系結(jié)構(gòu),采用的是串行處理方式,計算機(jī)的各諾伊曼的體系結(jié)構(gòu),采用的是串行處理方式,計算機(jī)的各個操作只能串行地完成,

32、某一時刻只能進(jìn)行一個操作。這類計個操作只能串行地完成,某一時刻只能進(jìn)行一個操作。這類計算機(jī)也稱為串行計算機(jī)。隨著計算機(jī)技術(shù)的發(fā)展,現(xiàn)代計算機(jī)算機(jī)也稱為串行計算機(jī)。隨著計算機(jī)技術(shù)的發(fā)展,現(xiàn)代計算機(jī)均具有不同程度的并行性。均具有不同程度的并行性。 并行處理計算機(jī)主要指以下兩種類型的計算機(jī):并行處理計算機(jī)主要指以下兩種類型的計算機(jī):能同時能同時執(zhí)行多條指令或同時處理多個數(shù)據(jù)項的單中央處理器計算機(jī);執(zhí)行多條指令或同時處理多個數(shù)據(jù)項的單中央處理器計算機(jī);多處理機(jī)系統(tǒng)。多處理機(jī)系統(tǒng)。4.2 80 x86指令系統(tǒng)指令系統(tǒng) 2流水線流水線 流水線是流水線是Intel首次在首次在486芯片中開始使用的。它是將指

33、令芯片中開始使用的。它是將指令的執(zhí)行過程分解為若干段,每段進(jìn)行一部分處理。一條指令的執(zhí)行過程分解為若干段,每段進(jìn)行一部分處理。一條指令順序流過所有段即執(zhí)行完畢獲得結(jié)果。當(dāng)本條指令在本段已順序流過所有段即執(zhí)行完畢獲得結(jié)果。當(dāng)本條指令在本段已被處理完畢而進(jìn)入下段時,下條指令即可流入本段。因此,被處理完畢而進(jìn)入下段時,下條指令即可流入本段。因此,在整個流水線上可以同時處理若干條指令。若各段的執(zhí)行時在整個流水線上可以同時處理若干條指令。若各段的執(zhí)行時間均為一個時鐘節(jié)拍,則在正常情況下每拍可以輸出一個結(jié)間均為一個時鐘節(jié)拍,則在正常情況下每拍可以輸出一個結(jié)果,即完成一條指令。這就可加快處理機(jī)的速度。這種指

34、令果,即完成一條指令。這就可加快處理機(jī)的速度。這種指令重疊、處理部件連續(xù)工作的計算機(jī)(或處理器),稱為流水重疊、處理部件連續(xù)工作的計算機(jī)(或處理器),稱為流水線計算機(jī)(或處理器)。線計算機(jī)(或處理器)。4.2 80 x86指令系統(tǒng)指令系統(tǒng) 圖4.3 流水線工作情況時 間 單 位第 一 條 指 令第 二 條 指 令第 三 條 指 令取 指 譯 碼 地 址 生 成 執(zhí) 行 寫 結(jié) 果取 指 譯 碼 地 址 生 成 執(zhí) 行 寫 結(jié) 果取 指 譯 碼 地 址 生 成 執(zhí) 行 寫 結(jié) 果0 1 2 3 4 5 6 74.2 80 x86指令系統(tǒng)指令系統(tǒng) 2022-4-302022-4-3028284.3

35、 80 x864.3 80 x86尋址方式尋址方式操作碼操作碼目的目的操作數(shù),操作數(shù),源源操操作數(shù)作數(shù)指明指明操作類型操作類型( (助記助記符符) )指明指令指明指令操作對象操作對象或或操作對象存放地址操作對象存放地址尋址方式尋址方式是指是指CPUCPU尋找操作數(shù)或操作數(shù)地址尋找操作數(shù)或操作數(shù)地址的方法的方法 對象:對象:目的操作數(shù)、目的操作數(shù)、源操作數(shù)源操作數(shù)1. 1. 立即尋址立即尋址(Immediate Addressing)(Immediate Addressing)n源操作數(shù)是一個源操作數(shù)是一個立即數(shù)立即數(shù),8 8位或位或1616位的整數(shù);位的整數(shù);n操作數(shù)直接放在操作碼的后面,作為

36、指令的一部分,存放操作數(shù)直接放在操作碼的后面,作為指令的一部分,存放 在代碼段里;在代碼段里;若為若為1616位則低位則低8 8位在低地址單元,高位在低地址單元,高8 8位在高位在高 地址單元存放。地址單元存放。例:例: MOV AL,05HMOV AL,05H指令執(zhí)行后指令執(zhí)行后: : (AL)=05H(AL)=05H例:例: MOV AX,3064HMOV AX,3064H指令執(zhí)行后指令執(zhí)行后: (AX)=3064H: (AX)=3064H立即尋址方式立即尋址方式.操作碼操作碼64H64H30H30H代代碼碼段段64H64H.30H30HALALAHAH指指令令.操作碼操作碼05H05H代

37、代碼碼段段05H05H.ALAL指指令令使用場合:使用場合:經(jīng)常用于給寄存器賦初值。經(jīng)常用于給寄存器賦初值。注意:注意:只能用于源操作數(shù)字段只能用于源操作數(shù)字段,不能,不能 用于目的操作數(shù)字段。用于目的操作數(shù)字段。2 2 直接尋址(直接尋址(Direct AddressingDirect Addressing)n數(shù)據(jù)總是在數(shù)據(jù)總是在內(nèi)存中內(nèi)存中,內(nèi)存單元的有效地址(偏移地址)由,內(nèi)存單元的有效地址(偏移地址)由 指令直接指出指令直接指出n1616位偏移地址必須用位偏移地址必須用 括起來括起來n1616位偏移地址直接放在操作碼后面位偏移地址直接放在操作碼后面,與操作碼一起存放在內(nèi)與操作碼一起存放

38、在內(nèi) 存的代碼段;低存的代碼段;低8 8位在前,高位在前,高8 8位在后位在后n默認(rèn)段為默認(rèn)段為DSDS數(shù)據(jù)段,允許段超越。如數(shù)據(jù)段,允許段超越。如MOV AXMOV AX,ES:ES: 1000H1000H MOV AL, 4000H MOV AL, 4000H ;將;將DS:4000HDS:4000H之內(nèi)容送入之內(nèi)容送入AL(AL(字字 節(jié)操作)節(jié)操作)MOV 2000H, BXMOV 2000H, BX;將;將BLBL之內(nèi)容送入之內(nèi)容送入DS:2000HDS:2000H 將將BHBH之內(nèi)容送入之內(nèi)容送入DS:2001H DS:2001H 注意:注意:MOV AX, 2510HMOV AX

39、, 2510H與與MOV AX, 2510HMOV AX, 2510H的區(qū)別!的區(qū)別!MOVMOV操作碼操作碼02H02H31H31H0111010101110101100110111001101123102H23102H23103H23103H代碼段代碼段數(shù)據(jù)段數(shù)據(jù)段AHAHALAL例如:例如:MOV AX, 3102HMOV AX, 3102H (字操作)(字操作)設(shè)設(shè)DS=2000HDS=2000H,則物理地址為:,則物理地址為:2000H2000H* *10H+3102H=23102H10H+3102H=23102H功能:功能:將將DS:3102HDS:3102H之內(nèi)容送入之內(nèi)容送入A

40、LAL將將DS:3103HDS:3103H之內(nèi)容送入之內(nèi)容送入AHAH直接尋址必須先直接尋址必須先求出操作數(shù)的物理地址求出操作數(shù)的物理地址,然后再訪問存儲器,然后再訪問存儲器才能取得操作數(shù)才能取得操作數(shù)又如:用符號地址代替數(shù)值地址。又如:用符號地址代替數(shù)值地址。 MOV AXMOV AX,VALUE VALUE VALUEVALUE:有效操作數(shù)單元的符號:有效操作數(shù)單元的符號 地址。但必須在程序的地址。但必須在程序的 開始處予以定義。開始處予以定義。直接尋址方式直接尋址方式6000H6000H.操作碼操作碼00003131.50H50H30H30H.6 0 0 0 06 0 0 0 03 1

41、0 03 1 0 0+ +6 3 1 0 06 3 1 0 063100H63100H30H30H50H50HAHAHALAL代代碼碼段段數(shù)數(shù)據(jù)據(jù)段段DSDS例:例:MOV AXMOV AX,3100H3100H(DSDS)=6000H , (63100H)=3050H =6000H , (63100H)=3050H 則則: :(AXAX)= = 3050H3050H如:如:VALUEVALUE在附加段中,在附加段中, 則應(yīng)指定段跨越。則應(yīng)指定段跨越。 MOV AXMOV AX,ESES:VALUEVALUE注意:注意:(1 1)直接尋址方式)直接尋址方式隱含的段寄存器是隱含的段寄存器是 DS

42、DS,8086/80888086/8088允許段允許段跨越跨越, ,即即允許使用允許使用 CS SS ESCS SS ES作為段寄存器,這時,必須在指令中特作為段寄存器,這時,必須在指令中特別標(biāo)明。別標(biāo)明。(2 2)IBM PCIBM PC機(jī)中規(guī)定機(jī)中規(guī)定雙操作數(shù)不能同時為內(nèi)存,指令必須有雙操作數(shù)不能同時為內(nèi)存,指令必須有一個操作數(shù)使用寄存器一個操作數(shù)使用寄存器方式,這就是常常先要把一個變量送到方式,這就是常常先要把一個變量送到寄存器去的原因。寄存器去的原因。例:例:要處理某存放在存儲器里的變量,可以用直接尋址方式把變量要處理某存放在存儲器里的變量,可以用直接尋址方式把變量先取到一個寄存器中再

43、作處理。先取到一個寄存器中再作處理。n操作數(shù)在寄存器中,指令指定寄存器號。操作數(shù)在寄存器中,指令指定寄存器號。n對于位操作數(shù),寄存器可以是對于位操作數(shù),寄存器可以是: : ,, ,, 以及以及段寄存器段寄存器。n對于位操作數(shù),寄存器可以是對于位操作數(shù),寄存器可以是: : ,。,。3 3. . 寄存器尋址(寄存器尋址(RegisterRegister Addressing Addressing)這種尋址方式因為操作數(shù)在寄存器中這種尋址方式因為操作數(shù)在寄存器中, ,不需要訪問存儲器,不需要訪問存儲器,運算速度較高運算速度較高。例:例:指令執(zhí)行前指令執(zhí)行前:(AX)3064 (SS)1234 MOV

44、 SS,AX指令執(zhí)行后指令執(zhí)行后:(SS) (AX)指令執(zhí)行前:指令執(zhí)行前:指令執(zhí)行后指令執(zhí)行后:寄存器尋址方式寄存器尋址方式SSSSAXAX3064H3064H3064H3064H1234H1234H3064H3064H3064H保持不變保持不變4.4.寄存器間接尋址寄存器間接尋址(Register Indirect Addressing)(Register Indirect Addressing)n與寄存器的尋址方式不同,指令中指定的寄存器的內(nèi)容不是與寄存器的尋址方式不同,指令中指定的寄存器的內(nèi)容不是 操作數(shù)而是操作數(shù)的操作數(shù)而是操作數(shù)的偏移地址偏移地址;n操作數(shù)本身在操作數(shù)本身在內(nèi)存內(nèi)存

45、中中n能做這種用途的寄存器叫做能做這種用途的寄存器叫做地址指針寄存器地址指針寄存器。它們是。它們是SISI、DI DI 、BXBX、BPBP,也簡稱為,也簡稱為間址寄存器,間址寄存器, 使用時加使用時加 。選擇選擇SISI、DI DI 、BXBX作間址寄存器時,操作數(shù)在數(shù)據(jù)段,作間址寄存器時,操作數(shù)在數(shù)據(jù)段, 段基址由段基址由DSDS決定;決定;如果用如果用BPBP,則操作數(shù)在堆棧段,段基址由,則操作數(shù)在堆棧段,段基址由SSSS決定。決定。無論選擇哪一個間址寄存器,都允許段超越。無論選擇哪一個間址寄存器,都允許段超越。注意:注意:例:例:MOV BX,DI (DS)=6000H (DI)=20

46、00H PA=62000H (62000H)=50A0H (BX)=50A0H寄存器間接尋址方式寄存器間接尋址方式 MOV BX,DI6000H6000H2000H2000HDSDSDIDI6 0 0 0 06 0 0 0 02 20 00 00 0+ +6 2 0 0 06 2 0 0 0.AOHAOH50H50H.62000H62000H50H50HA0HA0HBLBLBHBH數(shù)數(shù)據(jù)據(jù)段段注意:注意:MOV BX,DIMOV BX,DI和和 MOV BX,DIMOV BX,DI的區(qū)別!的區(qū)別!例:例: MOV BP, AX執(zhí)行前:執(zhí)行前: (SS)=1000H , (BP)=3000H ,

47、 (AX)=1234H執(zhí)行后:執(zhí)行后:PA=13000H (13000H)=1234H1000H1000H3000H3000HSSSSBPBP1 0 0 0 01 0 0 0 03 30 00 00 0+ +1 3 0 0 01 3 0 0 0.34H34H12H12H.13000H13000H12H12H34H34HALALAHAH堆堆棧棧段段寄存器間接尋址方式寄存器間接尋址方式 MOV BP, AX指令中可以指定指令中可以指定段跨越前綴段跨越前綴來取得其他來取得其他段中的數(shù)據(jù)。段中的數(shù)據(jù)。例:例:MOV ES:DI, AX MOV DX, DS:BP這種尋址方法可以用于表格處理。這種尋址方

48、法可以用于表格處理。5.5.寄存器相對尋址寄存器相對尋址 (Register relative addressing) (Register relative addressing) EAEA= =(BX)(BX)(SI)(SI)(DI)(DI)+ +8位位移量8位位移量16位位移量16位位移量(BP)(BP)n操作數(shù)存操作數(shù)存放放在在內(nèi)存內(nèi)存中中n操作數(shù)的有效偏移地址操作數(shù)的有效偏移地址是是指令指定的間址寄存器的內(nèi)容指令指定的間址寄存器的內(nèi)容和和指令中給出的一個指令中給出的一個8 8位或位或1616位地址偏移量位地址偏移量之和之和PA=16d (DS)+PA=16d (DS)+(BX)(BX)

49、(SI)(SI)(DI)(DI)+ +8位位移量8位位移量16位位移量16位位移量PA=16d (SS)+PA=16d (SS)+ (BP)(BP)+ +8位位移量8位位移量16位位移量16位位移量除有除有段跨越前綴段跨越前綴之外,形成物理地址有二種方式:之外,形成物理地址有二種方式:例:例: MOV AX, COUNT BP或或MOV AX, COUNT+BP或或MOV AX, COUNT+BP COUNT為為16位位移量。位位移量。指令執(zhí)行前指令執(zhí)行前: (SS)=5000H, (BP)=3000H,COUNT=2040H,(AX)=1234H 寄存器相對尋址方式寄存器相對尋址方式MOV

50、AX,COUNTBPOPOPOPOP40H40H20H20H.48H48H55H55H.55H55H48H48H存儲器存儲器操操作作碼碼位移量位移量COUNTCOUNT代代碼碼段段堆堆棧棧段段55040H55040H50000H50000HAHAHALAL指令執(zhí)行后指令執(zhí)行后:EA=PA=(AX)=5040H55040H5548H用途:這種寄存器相對尋址方式常用于用途:這種寄存器相對尋址方式常用于表格處理表格處理。 表格首地址表格首地址COUNT 修改間址寄存器來取得表格中的值。修改間址寄存器來取得表格中的值。例:某數(shù)據(jù)表的首地址為例:某數(shù)據(jù)表的首地址為COUNT 欲讀取表中第欲讀取表中第10

51、個數(shù)據(jù)個數(shù)據(jù),存放到(存放到(AL)中。中。 第第10個數(shù)據(jù)的有效地址個數(shù)據(jù)的有效地址: EA= COUNT + 9MOV SI , 09HMOV AL , SI+COUNT *相對尋址方式也可以使用段跨越前綴相對尋址方式也可以使用段跨越前綴 MOV DL,ES:STRINGSIn操作數(shù)的操作數(shù)的有效地址是一個基址寄存器和一個變址寄存器的內(nèi)有效地址是一個基址寄存器和一個變址寄存器的內(nèi)容之和容之和,基址寄存器名和變址寄存器名均有指令指定。,基址寄存器名和變址寄存器名均有指令指定。(BP)(BP)+ +(DI)(DI)(SI)(SI)EA=EA=(BX)(BX)+ +(DI)(DI)(SI)(SI

52、)EA=EA=6. 6. 基址基址-變址尋址(變址尋址(Based indexed addressingBased indexed addressing)n操作數(shù)存操作數(shù)存放放在在內(nèi)存內(nèi)存中中除有除有段跨越前綴段跨越前綴之外,形成物理地址有二種方式:之外,形成物理地址有二種方式:PA=16d(DSPA=16d(DS)+)+ (BX)(BX)+ +(DI)(DI)(SI)(SI)PA=16d(SPA=16d(SS S)+)+ (BP)(BP) + +(DI)(DI)(SI)(SI)例:例: MOV AX, BXSI或或 MOV AX, BX+SI執(zhí)行指令前執(zhí)行指令前: (DS)=3200H, (

53、BX)=0456H, (SI) =1094H (334EAH)=4567H執(zhí)行指令后執(zhí)行指令后: EA= PA= (AX)=基址加變址尋址方式基址加變址尋址方式 MOV AX,BX+SI.67H67H45H45H存儲器存儲器32000H32000H334EAH334EAH45H45H67H67HALALAHAH數(shù)數(shù)據(jù)據(jù)段段.14EAH334EAH4567H用途:這種尋址方式同樣適用于用途:這種尋址方式同樣適用于數(shù)組或表格數(shù)組或表格處理。處理。表格首地址放在基址寄存器中表格首地址放在基址寄存器中,用變址寄存器來訪問數(shù)組中的元素。用變址寄存器來訪問數(shù)組中的元素。 二個寄存器都能修改,二個寄存器都能

54、修改,所以比相對尋址方式更靈。所以比相對尋址方式更靈。這種尋址方式允許段跨越。這種尋址方式允許段跨越。使用段跨越前綴格式使用段跨越前綴格式: MOV AX,ES:BXSIMOV AX, BXBPMOV AX, SIDIn操作數(shù)操作數(shù)有效地址是一個基址寄存器和一個變址寄存器的內(nèi)有效地址是一個基址寄存器和一個變址寄存器的內(nèi)容和容和8位或位或16位位移量之和位位移量之和 。(BP)(BP) + +(DI)(DI)(SI)(SI)+ +8位位移量8位位移量16位位移量16位位移量EA=EA=(BX)(BX) + +(DI)(DI)(SI)(SI)+ +8位位移量8位位移量16位位移量16位位移量EA=

55、EA=7. 7. 基址基址-變址變址-相對尋址(相對尋址( Based indexed Based indexed relative addressing relative addressing)n操作數(shù)存操作數(shù)存放放在在內(nèi)存內(nèi)存中中除有除有段跨越前綴段跨越前綴之外,形成物理地址有二種方式:之外,形成物理地址有二種方式:(DI)(DI)PA=16d(SSPA=16d(SS)+)+ (BP)(BP) + +(SI)(SI)+ +8位位移量8位位移量16位位移量16位位移量(DI)(DI)PA=16d(DSPA=16d(DS)+)+ (BX)(BX) + +(SI)(SI)+ +8位位移量8位位移

56、量16位位移量16位位移量例:例:MOV AX, MASKBXDIMOV AX, MASK BX+DIMOV AX,MASK+BX+DI執(zhí)行指令前執(zhí)行指令前:(DS)=3000H(BX)=1346H(DI)=0500HMASK=1234H(32A7AH)=4050H執(zhí)行指令后執(zhí)行指令后:EA=PA=(AX)= 相對基址加變址相對基址加變址MOV AX, MASK+BX+DIOPOPOPOP34H34H12H12H.50H50H40H40H存儲器存儲器30000H30000H32A7AH32A7AH40H40H50H50HALALAHAH數(shù)數(shù)據(jù)據(jù)段段操操作作碼碼位移位移量量MASKMASK代代碼

57、碼段段2A7AH32A7AH4050H用途:用途:這種尋址方式為這種尋址方式為堆棧堆棧處理提供方便:處理提供方便:(BP) 棧頂(一般棧頂(一般 BP 可指向棧頂)可指向棧頂)從棧頂?shù)綌?shù)組的首地址可以用位移從棧頂?shù)綌?shù)組的首地址可以用位移量表示量表示(MASK). 變址寄存器(變址寄存器(SI)或()或(DI)指指向數(shù)組中某個元素。向數(shù)組中某個元素。MOV AX, DATABXBPMOV AX, DATASIDI8 8. .隱含尋址隱含尋址n操作碼本身隱含地指明了操作數(shù)或部分操作數(shù)的地址。操作碼本身隱含地指明了操作數(shù)或部分操作數(shù)的地址。如:如:MUL BL;MUL BL;ALxBLALxBL A

58、X AX CPUCPU的尋址方式總結(jié)的尋址方式總結(jié)獲得操作數(shù)所在地址的獲得操作數(shù)所在地址的尋址方式:尋址方式:u立即尋址立即尋址u直接尋址直接尋址u寄存器尋址寄存器尋址u寄存器間接尋址寄存器間接尋址u寄存器相對尋址寄存器相對尋址u基址基址-變址尋址變址尋址u基址基址-變址變址相對尋址相對尋址u隱含尋址隱含尋址MOV AX, 3102HMOV AX, 3102HMOV AL, 4000H MOV AL, 4000H MOV AL,BL MOV AL,BL MOV AX,SIMOV AX,SIMOV AX,DATABXMOV AX,DATABXMOV AX, BXSIMOV AX, BXSIMOV

59、 AX, DATADIBX MOV AX, DATADIBX MUL BLMUL BL2022-4-302022-4-3053534.4 80864.4 8086指令系統(tǒng)指令系統(tǒng) DATA DATA 8 8位或位或1616位的立即數(shù)位的立即數(shù) OPRD OPRD 各種類型的操作數(shù)各種類型的操作數(shù) REG REG 通用寄存器,長度可以使通用寄存器,長度可以使8 8位或位或1616位位memmem 存儲器操作數(shù)存儲器操作數(shù)accacc累加器操作數(shù)累加器操作數(shù)destdest目的操作數(shù)目的操作數(shù)srcsrc源操作數(shù)源操作數(shù)dispdisp8 8位或位或1616位的位移量,可用符號地址表示位的位移量,

60、可用符號地址表示SEGREGSEGREG 段寄存器段寄存器CSCS、DSDS、SSSS、ESESportport輸入輸出端口輸入輸出端口( (地址地址) )( )( )表示寄存器的內(nèi)容表示寄存器的內(nèi)容 表示表示存儲器操作數(shù),括號內(nèi)容表示偏移存儲器操作數(shù),括號內(nèi)容表示偏移地址地址1. 1. 數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令功功 能能: :實現(xiàn)實現(xiàn)CPUCPU內(nèi)部寄存器之間、內(nèi)部寄存器之間、CPUCPU和存儲器之間以及和存儲器之間以及CPUCPU和和I/OI/O端口之間的端口之間的數(shù)據(jù)傳送數(shù)據(jù)傳送。 存儲器存儲器 寄存器寄存器 I/OI/O 特特 點點: : 含兩個操作數(shù),當(dāng)指令中僅列出一個操作數(shù)時,

溫馨提示

  • 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

提交評論