匯編語言程序設(shè)計(jì)全冊(cè)配套最完整精品課件2_第1頁
匯編語言程序設(shè)計(jì)全冊(cè)配套最完整精品課件2_第2頁
匯編語言程序設(shè)計(jì)全冊(cè)配套最完整精品課件2_第3頁
匯編語言程序設(shè)計(jì)全冊(cè)配套最完整精品課件2_第4頁
匯編語言程序設(shè)計(jì)全冊(cè)配套最完整精品課件2_第5頁
已閱讀5頁,還剩530頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、匯編語言程序設(shè)計(jì)全冊(cè)配套最匯編語言程序設(shè)計(jì)全冊(cè)配套最完整精品課件完整精品課件2 2匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)21世紀(jì)高職高專新概念教材世紀(jì)高職高專新概念教材匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì) 第第1 1章章 基礎(chǔ)知識(shí)基礎(chǔ)知識(shí) 第第2 2章章 尋址方式和指令系統(tǒng)尋址方式和指令系統(tǒng) 第第3 3章章 宏匯編語言宏匯編語言 第第4 4章章 程序設(shè)計(jì)方法程序設(shè)計(jì)方法 第第5 5章章 輸入輸出和中斷輸入輸出和中斷 第第6 6章章 應(yīng)用系統(tǒng)開發(fā)應(yīng)用系統(tǒng)開發(fā)第第1章章 基礎(chǔ)知識(shí)基礎(chǔ)知識(shí) 1.1 1.1 匯編語言及特點(diǎn)匯編語言及特點(diǎn) 1.2 1.2 數(shù)據(jù)表示數(shù)據(jù)表示 1.3 80861.3 8086CPUC

2、PU和寄存器組和寄存器組 1.4 1.4 存儲(chǔ)器物理地址的形成存儲(chǔ)器物理地址的形成第第2章章 尋址方式和指令系統(tǒng)尋址方式和指令系統(tǒng) 2.1 尋址方式尋址方式 2.2 數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令 2.3 算術(shù)運(yùn)算類指令算術(shù)運(yùn)算類指令 2.4 位操作類指令位操作類指令 2.5 串操作類指令串操作類指令 2.6 控制轉(zhuǎn)移類指令控制轉(zhuǎn)移類指令 2.7 處理機(jī)控制類指令處理機(jī)控制類指令第第3章章 宏匯編語言宏匯編語言 3.1 3.1 宏匯編語言格式宏匯編語言格式 3.2 3.2 匯編語句表達(dá)式匯編語句表達(dá)式 3.3 3.3 偽指令偽指令 3.4 3.4 DOSDOS系統(tǒng)功能調(diào)用系統(tǒng)功能調(diào)用 3.5 3

3、.5 綜合舉例綜合舉例第4章 程序設(shè)計(jì)方法 4.1 概述概述 4.2 順序程序設(shè)計(jì)順序程序設(shè)計(jì) 4.3 分支程序設(shè)計(jì)分支程序設(shè)計(jì) 4.4 循環(huán)程序設(shè)計(jì)循環(huán)程序設(shè)計(jì) 4.5 子程序設(shè)計(jì)子程序設(shè)計(jì) 4.6 模塊化程序設(shè)計(jì)模塊化程序設(shè)計(jì) 4.7 高級(jí)匯編語言技高級(jí)匯編語言技術(shù)術(shù)第第5 5章章 輸入輸出和中斷輸入輸出和中斷 5.1 5.1 I/OI/O設(shè)備數(shù)據(jù)傳送方式設(shè)備數(shù)據(jù)傳送方式 5.2 5.2 中斷傳送方式中斷傳送方式 5.3 5.3 BIOSBIOS中斷調(diào)用方式中斷調(diào)用方式 5.4 5.4 綜合舉例綜合舉例第第6章章 應(yīng)用系統(tǒng)開發(fā)應(yīng)用系統(tǒng)開發(fā) 6.1 6.1 汽車動(dòng)畫程序開發(fā)汽車動(dòng)畫程序開發(fā)

4、6.2 6.2 發(fā)聲系統(tǒng)程序開發(fā)發(fā)聲系統(tǒng)程序開發(fā)歡迎您使用歡迎您使用匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)Thank you very much !Thank you very much !中國(guó)水利水電出版社結(jié)結(jié) 束束第第1章章 基礎(chǔ)知識(shí)基礎(chǔ)知識(shí) 1.1 1.1 匯編語言及特點(diǎn)匯編語言及特點(diǎn) 1.2 1.2 數(shù)據(jù)表示數(shù)據(jù)表示 1.3 80861.3 8086CPUCPU和寄存器組和寄存器組 1.4 1.4 存儲(chǔ)器物理地址的形成存儲(chǔ)器物理地址的形成開開 始始1.1 1.1 匯編語言及特點(diǎn)匯編語言及特點(diǎn) 1.1.1 機(jī)器語言機(jī)器語言 1.1.2 匯編語言匯編語言 1.1.3 高級(jí)語言高級(jí)語言 1.1.4

5、 匯編語言的特點(diǎn)匯編語言的特點(diǎn)返回本章首頁返回本章首頁1.1.1 機(jī)器語言機(jī)器語言計(jì)算機(jī)能夠直接識(shí)別的數(shù)據(jù)是由二進(jìn)計(jì)算機(jī)能夠直接識(shí)別的數(shù)據(jù)是由二進(jìn)制數(shù)制數(shù)0 0和和1 1組成的代碼。機(jī)器指令就是用組成的代碼。機(jī)器指令就是用二進(jìn)制代碼組成的指令,一條機(jī)器指令二進(jìn)制代碼組成的指令,一條機(jī)器指令控制計(jì)算機(jī)完成一個(gè)基本操作。控制計(jì)算機(jī)完成一個(gè)基本操作。用機(jī)器語言編寫的程序是計(jì)算機(jī)惟一用機(jī)器語言編寫的程序是計(jì)算機(jī)惟一能夠直接識(shí)別并執(zhí)行的程序,而用其他能夠直接識(shí)別并執(zhí)行的程序,而用其他語言編寫的程序必須經(jīng)過翻譯才能變換語言編寫的程序必須經(jīng)過翻譯才能變換成機(jī)器語言程序,所以,機(jī)器語言程序成機(jī)器語言程序,所以

6、,機(jī)器語言程序被稱為目標(biāo)程序。被稱為目標(biāo)程序。返回本節(jié)返回本節(jié)1.1.2 匯編語言匯編語言為了克服機(jī)器語言的缺點(diǎn),人們采用助記符表示機(jī)為了克服機(jī)器語言的缺點(diǎn),人們采用助記符表示機(jī)器指令的操作碼器指令的操作碼, ,用變量代替操作數(shù)的存放地址等,這樣用變量代替操作數(shù)的存放地址等,這樣就形成了匯編語言。所以匯編語言是一種用符號(hào)書寫的、就形成了匯編語言。所以匯編語言是一種用符號(hào)書寫的、基本操作與機(jī)器指令相對(duì)應(yīng)的、并遵循一定語法規(guī)則的基本操作與機(jī)器指令相對(duì)應(yīng)的、并遵循一定語法規(guī)則的計(jì)算機(jī)語言。計(jì)算機(jī)語言。用匯編語言編寫的程序稱為匯編源程序。用匯編語言編寫的程序稱為匯編源程序。 匯編語言是一種符號(hào)語言,比

7、機(jī)器語言容易理解和匯編語言是一種符號(hào)語言,比機(jī)器語言容易理解和掌握,也容易調(diào)試和維護(hù)。但是,匯編語言源程序要翻掌握,也容易調(diào)試和維護(hù)。但是,匯編語言源程序要翻譯成機(jī)器語言程序才可以由計(jì)算機(jī)執(zhí)行。這個(gè)翻譯的過譯成機(jī)器語言程序才可以由計(jì)算機(jī)執(zhí)行。這個(gè)翻譯的過程稱為程稱為“匯編匯編”,這種把匯編源程序翻譯成目標(biāo)程序的,這種把匯編源程序翻譯成目標(biāo)程序的語言加工程序稱為匯編程序。語言加工程序稱為匯編程序。 返回本節(jié)返回本節(jié)1.1.3 高級(jí)語言高級(jí)語言匯編語言雖然較機(jī)器語言直觀,但仍匯編語言雖然較機(jī)器語言直觀,但仍然煩瑣難懂。于是人們研制出了高級(jí)程然煩瑣難懂。于是人們研制出了高級(jí)程序設(shè)計(jì)語言。高級(jí)程序設(shè)計(jì)

8、語言接近于序設(shè)計(jì)語言。高級(jí)程序設(shè)計(jì)語言接近于人類自然語言的語法習(xí)慣,與計(jì)算機(jī)硬人類自然語言的語法習(xí)慣,與計(jì)算機(jī)硬件無關(guān),易被用戶掌握和使用。件無關(guān),易被用戶掌握和使用。目前廣目前廣泛應(yīng)用的高級(jí)語言有多種,如泛應(yīng)用的高級(jí)語言有多種,如BASICBASIC、FORTRANFORTRAN、PASCALPASCAL、C C、C+C+等等。等等。返回本節(jié)返回本節(jié)1.1.4 匯編語言的特點(diǎn)匯編語言的特點(diǎn) (1 1)匯編語言與處理器密切相關(guān)。)匯編語言與處理器密切相關(guān)。 (2 2)匯編語言程序效率高。)匯編語言程序效率高。 (3 3)編寫匯編語言源程序比編寫高級(jí))編寫匯編語言源程序比編寫高級(jí)語言源程序煩瑣。

9、語言源程序煩瑣。 (4 4)調(diào)試匯編語言程序比調(diào)試高級(jí)語言)調(diào)試匯編語言程序比調(diào)試高級(jí)語言程序困難。程序困難。 匯編語言的主要應(yīng)用場(chǎng)合:匯編語言的主要應(yīng)用場(chǎng)合: (1 1)程序執(zhí)行占用較短的時(shí)間,或者占)程序執(zhí)行占用較短的時(shí)間,或者占用較小存儲(chǔ)容量的場(chǎng)合。用較小存儲(chǔ)容量的場(chǎng)合。 (2 2)程序與計(jì)算機(jī)硬件密切相關(guān),程序)程序與計(jì)算機(jī)硬件密切相關(guān),程序直接控制硬件的場(chǎng)合。直接控制硬件的場(chǎng)合。 (3 3)需提高大型軟件性能的場(chǎng)合。)需提高大型軟件性能的場(chǎng)合。 (4 4)沒有合適的高級(jí)語言的場(chǎng)合。)沒有合適的高級(jí)語言的場(chǎng)合。 返回本節(jié)返回本節(jié)1.2 1.2 數(shù)據(jù)表示數(shù)據(jù)表示 1.2.1 數(shù)值數(shù)據(jù)數(shù)值

10、數(shù)據(jù) 1.2.2 字符數(shù)據(jù)字符數(shù)據(jù)返回本章首頁返回本章首頁1.2.1 數(shù)值數(shù)據(jù)數(shù)值數(shù)據(jù) 數(shù)值數(shù)據(jù)分為有符號(hào)數(shù)和無符號(hào)數(shù)。無數(shù)值數(shù)據(jù)分為有符號(hào)數(shù)和無符號(hào)數(shù)。無符號(hào)數(shù)最高位表示數(shù)值符號(hào)數(shù)最高位表示數(shù)值, ,而有符號(hào)數(shù)最高而有符號(hào)數(shù)最高位表示符號(hào)。有符號(hào)數(shù)有不同的編碼方位表示符號(hào)。有符號(hào)數(shù)有不同的編碼方式,常用的是補(bǔ)碼。式,常用的是補(bǔ)碼。1. 1. 原碼原碼 最高位表示符號(hào)(正數(shù)用最高位表示符號(hào)(正數(shù)用0,0,負(fù)數(shù)用負(fù)數(shù)用1 1),),其他位表示數(shù)值位,稱為有符號(hào)數(shù)的原其他位表示數(shù)值位,稱為有符號(hào)數(shù)的原碼表示法。碼表示法。 【例【例1.11.1】有符號(hào)數(shù)的原碼】有符號(hào)數(shù)的原碼表示。表示。 X = 4

11、 5 = 0 0 1 0 1 1 0 1 B X X = 4 5 = 0 0 1 0 1 1 0 1 B X 原原 = = 0010110100101101B B X=-45, XX=-45, X原原=10101101=10101101B B 原碼表示簡(jiǎn)單易懂,但若是兩個(gè)異號(hào)數(shù)原碼表示簡(jiǎn)單易懂,但若是兩個(gè)異號(hào)數(shù)相加(或兩個(gè)同號(hào)數(shù)相減)相加(或兩個(gè)同號(hào)數(shù)相減), ,就要做減法。就要做減法。為了把減法運(yùn)算轉(zhuǎn)換為加法運(yùn)算就引進(jìn)為了把減法運(yùn)算轉(zhuǎn)換為加法運(yùn)算就引進(jìn)了反碼和補(bǔ)碼。了反碼和補(bǔ)碼。. . 反碼反碼 正數(shù)的反碼與原碼相同,符號(hào)位用正數(shù)的反碼與原碼相同,符號(hào)位用0 0表示,表示,數(shù)值位值不變。負(fù)數(shù)

12、的反碼符號(hào)位用數(shù)值位值不變。負(fù)數(shù)的反碼符號(hào)位用1 1表表示示, , 數(shù)值位為原碼數(shù)值位按位取反形成,數(shù)值位為原碼數(shù)值位按位取反形成,即即0 0變變1 1、1 1變變0 0。 【例【例1.21.2】有符號(hào)數(shù)的反碼表示。】有符號(hào)數(shù)的反碼表示。 X=45=00101101B, XX=45=00101101B, X反反=00101101=00101101B B X=-45, XX=-45, X反反=11010010=11010010B B3. 3. 補(bǔ)碼補(bǔ)碼 正數(shù)的補(bǔ)碼與原碼相同,即符號(hào)位用正數(shù)的補(bǔ)碼與原碼相同,即符號(hào)位用0 0表表示,數(shù)值位值不變。負(fù)數(shù)的補(bǔ)碼為反碼示,數(shù)值位值不變。負(fù)數(shù)的補(bǔ)碼為反碼加

13、加1 1 形成。形成。 【例【例1.31.3】有符號(hào)數(shù)的補(bǔ)碼表示?!坑蟹?hào)數(shù)的補(bǔ)碼表示。 X=45=00101101B XX=45=00101101B X補(bǔ)補(bǔ)=00101101=00101101B B X=-45 XX=-45 X補(bǔ)補(bǔ)=11010011=11010011B B4. 4. 符號(hào)擴(kuò)展符號(hào)擴(kuò)展 在數(shù)據(jù)處理時(shí)在數(shù)據(jù)處理時(shí), ,有時(shí)需要把有時(shí)需要把8 8位二進(jìn)制數(shù)擴(kuò)展成位二進(jìn)制數(shù)擴(kuò)展成1616位二位二進(jìn)制數(shù)進(jìn)制數(shù), ,當(dāng)要擴(kuò)展的數(shù)是無符號(hào)數(shù)時(shí)當(dāng)要擴(kuò)展的數(shù)是無符號(hào)數(shù)時(shí), ,可在最高位前擴(kuò)展可在最高位前擴(kuò)展8 8個(gè)個(gè)0 0。如果要擴(kuò)展的數(shù)是補(bǔ)碼形式的有符號(hào)數(shù)。如果要擴(kuò)展的數(shù)是補(bǔ)碼形式的有符號(hào)

14、數(shù), ,那么那么, ,就要進(jìn)行符號(hào)位的擴(kuò)展,符號(hào)擴(kuò)展后,其結(jié)果仍是該就要進(jìn)行符號(hào)位的擴(kuò)展,符號(hào)擴(kuò)展后,其結(jié)果仍是該數(shù)的補(bǔ)碼。數(shù)的補(bǔ)碼。 【例【例1.41.4】符號(hào)擴(kuò)展表示。】符號(hào)擴(kuò)展表示。 2121的的8 8位二進(jìn)制補(bǔ)碼為:位二進(jìn)制補(bǔ)碼為:00010101 00010101 符 號(hào) 擴(kuò) 展 后符 號(hào) 擴(kuò) 展 后 2 12 1 的的 1 61 6 位 二 進(jìn) 制 補(bǔ) 碼 為 :位 二 進(jìn) 制 補(bǔ) 碼 為 : 00000000000101010000000000010101。 0001010100010101和和00000000000101010000000000010101都是都是2121的補(bǔ)碼

15、。的補(bǔ)碼。5. 5. 數(shù)據(jù)的表示范圍和大小數(shù)據(jù)的表示范圍和大小 n n位二進(jìn)制數(shù)能夠表示的無符號(hào)整數(shù)的范位二進(jìn)制數(shù)能夠表示的無符號(hào)整數(shù)的范圍是圍是: : 0 0 I 2n-1I 2n-1 n n位二進(jìn)制數(shù)能夠表示的有符號(hào)整數(shù)的范位二進(jìn)制數(shù)能夠表示的有符號(hào)整數(shù)的范圍是圍是: : -2-2(n-1n-1) I +2 I +2(n-1n-1)-1-16 6十六進(jìn)制表示十六進(jìn)制表示 由于二進(jìn)制數(shù)的基數(shù)太小,書寫和閱讀由于二進(jìn)制數(shù)的基數(shù)太小,書寫和閱讀都不方便都不方便. .而十六進(jìn)制的基數(shù)而十六進(jìn)制的基數(shù)16162 24 4,這,這樣二進(jìn)制數(shù)與十六進(jìn)制之間能方便地轉(zhuǎn)樣二進(jìn)制數(shù)與十六進(jìn)制之間能方便地轉(zhuǎn)換。

16、因此,習(xí)慣把二進(jìn)制數(shù)改寫成十六換。因此,習(xí)慣把二進(jìn)制數(shù)改寫成十六進(jìn)制數(shù),在匯編語言程序設(shè)計(jì)時(shí)尤其如進(jìn)制數(shù),在匯編語言程序設(shè)計(jì)時(shí)尤其如此。此。 在書寫時(shí),為了區(qū)別于十六進(jìn)制和二進(jìn)在書寫時(shí),為了區(qū)別于十六進(jìn)制和二進(jìn)制數(shù),通常在十六進(jìn)制數(shù)后加字母制數(shù),通常在十六進(jìn)制數(shù)后加字母HH。返回本節(jié)返回本節(jié)1.2.2 字符數(shù)據(jù)字符數(shù)據(jù) 1 1ASCIIASCII碼碼 2 2BCDBCD碼碼1 1ASCIIASCII碼碼 標(biāo)準(zhǔn)標(biāo)準(zhǔn)ASCIIASCII碼用碼用7 7位二進(jìn)制數(shù)編碼,共有位二進(jìn)制數(shù)編碼,共有128128個(gè)。個(gè)。 計(jì)算機(jī)存儲(chǔ)器基本單位為計(jì)算機(jī)存儲(chǔ)器基本單位為8 8位,位,ASCIIASCII碼的最高位

17、通常為碼的最高位通常為0 0,通信時(shí),最高位用,通信時(shí),最高位用作奇偶校驗(yàn)位。作奇偶校驗(yàn)位。 ASCII ASCII碼表中的前碼表中的前3232個(gè)和最后個(gè)和最后1 1個(gè)編碼個(gè)編碼是不能顯示的控制字符,用于表示某種是不能顯示的控制字符,用于表示某種操作。操作。 ASCII ASCII碼表中碼表中2020HH后的后的9494個(gè)編碼是可個(gè)編碼是可顯示和打印的字符,其中包括數(shù)碼顯示和打印的字符,其中包括數(shù)碼0 09 9,英文字母,標(biāo)點(diǎn)符號(hào)等。英文字母,標(biāo)點(diǎn)符號(hào)等。 2 2BCDBCD碼碼雖然二進(jìn)制數(shù)實(shí)現(xiàn)容易雖然二進(jìn)制數(shù)實(shí)現(xiàn)容易, ,但不符合人們但不符合人們的使用習(xí)慣的使用習(xí)慣, ,且書寫閱讀不方便,所

18、以在且書寫閱讀不方便,所以在計(jì)算機(jī)輸入輸出時(shí)通常還是采用十進(jìn)制計(jì)算機(jī)輸入輸出時(shí)通常還是采用十進(jìn)制來表示數(shù),這就需要實(shí)現(xiàn)十進(jìn)制與二進(jìn)來表示數(shù),這就需要實(shí)現(xiàn)十進(jìn)制與二進(jìn)制間的轉(zhuǎn)換。為了轉(zhuǎn)換方便制間的轉(zhuǎn)換。為了轉(zhuǎn)換方便, ,常采用二進(jìn)常采用二進(jìn)制編碼的十進(jìn)制制編碼的十進(jìn)制, ,簡(jiǎn)稱為簡(jiǎn)稱為BCDBCD碼。碼。BCDBCD碼就是用碼就是用4 4位二進(jìn)制數(shù)表示位二進(jìn)制數(shù)表示1 1位位十進(jìn)制整數(shù)。表示的方法有多種,常用十進(jìn)制整數(shù)。表示的方法有多種,常用的是的是84218421BCDBCD碼,它的表示規(guī)律如表碼,它的表示規(guī)律如表1.11.1所示。所示。 表1.1 十進(jìn)制數(shù)字的8421BCD碼十進(jìn)制數(shù)字842

19、1BCD碼十進(jìn)制數(shù)字8421BCD碼00000501011000160110200107011130011810004010091001返回本節(jié)返回本節(jié)1.3 80861.3 8086CPUCPU和寄存器組和寄存器組 1.3.1 Intel8086CPU內(nèi)部結(jié)內(nèi)部結(jié)構(gòu)構(gòu) 1.3.2 8086寄存器組寄存器組 1.3.3 標(biāo)志寄存器標(biāo)志寄存器返回本章首頁返回本章首頁1.3.1 Intel8086CPU內(nèi)部?jī)?nèi)部結(jié)構(gòu)結(jié)構(gòu)圖1.2 8086CPU內(nèi)部結(jié)構(gòu)圖圖1.2 8086CPU內(nèi)部結(jié)構(gòu)內(nèi)部結(jié)構(gòu)返回本節(jié)返回本節(jié)1.3.2 8086寄存器組寄存器組圖圖1.3 8086CPU寄存器分組寄存器分組1通用寄存

20、器通用寄存器 (1 1)數(shù)據(jù)寄存器)數(shù)據(jù)寄存器 數(shù)據(jù)寄存器共有數(shù)據(jù)寄存器共有4 4個(gè)寄存器個(gè)寄存器AXAX、BXBX、CXCX、DXDX,用用來保存操作數(shù)或運(yùn)算結(jié)果等信息。來保存操作數(shù)或運(yùn)算結(jié)果等信息。 AXAX寄存器稱為累加器。使用頻度最高,用于算術(shù)、邏寄存器稱為累加器。使用頻度最高,用于算術(shù)、邏輯運(yùn)算以及與外設(shè)傳送信息等。輯運(yùn)算以及與外設(shè)傳送信息等。 BXBX寄存器稱為基址寄存器。常用于存放存儲(chǔ)器地址。寄存器稱為基址寄存器。常用于存放存儲(chǔ)器地址。 CXCX寄存器稱為計(jì)數(shù)器。一般作為循環(huán)或串操作等指令寄存器稱為計(jì)數(shù)器。一般作為循環(huán)或串操作等指令中的隱含計(jì)數(shù)器。中的隱含計(jì)數(shù)器。 DXDX寄存器

21、稱為數(shù)據(jù)寄存器。常用來存放雙字?jǐn)?shù)據(jù)的高寄存器稱為數(shù)據(jù)寄存器。常用來存放雙字?jǐn)?shù)據(jù)的高1616位,或存放外設(shè)端口地址。位,或存放外設(shè)端口地址。 變址和指針寄存器包括變址和指針寄存器包括SISI、DIDI、SPSP、BPBP個(gè)個(gè)1616位寄位寄存器,主要用于存放某個(gè)存儲(chǔ)單元的偏移地址。存器,主要用于存放某個(gè)存儲(chǔ)單元的偏移地址。 SISI是源變址寄存器,是源變址寄存器,DIDI是目的變址寄存器,在字符串是目的變址寄存器,在字符串操作中,操作中,SISI和和DIDI都具有自動(dòng)增量或減量的功能。都具有自動(dòng)增量或減量的功能。 SP SP為堆棧指針寄存器,用于存放當(dāng)前堆棧段中棧頂為堆棧指針寄存器,用于存放當(dāng)前

22、堆棧段中棧頂?shù)钠频刂罚坏钠频刂?;BPBP為基址指針寄存器,用于存放堆棧段為基址指針寄存器,用于存放堆棧段中某一存儲(chǔ)單元的偏移地址。中某一存儲(chǔ)單元的偏移地址。 (2)變址和指針寄存器)變址和指針寄存器2 2段寄存器段寄存器 80868086CPUCPU的個(gè)的個(gè)1616位的段寄存器分別位的段寄存器分別稱為代碼段寄存器稱為代碼段寄存器CSCS,數(shù)據(jù)段寄存器數(shù)據(jù)段寄存器DSDS,堆棧段寄存器堆棧段寄存器SSSS,附加數(shù)據(jù)段寄附加數(shù)據(jù)段寄存器存器ESES。段寄存器用來確定該段在內(nèi)存段寄存器用來確定該段在內(nèi)存中的起始地址。中的起始地址。 代碼段用來存放程序的指令序列。代碼段用來存放程序的指令序列。CS

23、CS存存放代碼段的段首址,指令指針寄存器放代碼段的段首址,指令指針寄存器IPIP指示代碼段中指令的偏移地址。指示代碼段中指令的偏移地址。3 3指令指針指令指針80868086CPUCPU中的指令指針中的指令指針I(yè)PIP,它總是它總是保存下一次將要從主存中取出指令的偏保存下一次將要從主存中取出指令的偏移地址,偏移地址的值為該指令到所在移地址,偏移地址的值為該指令到所在段段首址的字節(jié)距離。在目標(biāo)程序運(yùn)行段段首址的字節(jié)距離。在目標(biāo)程序運(yùn)行時(shí),時(shí),IPIP的內(nèi)容由微處理器硬件自動(dòng)設(shè)置,的內(nèi)容由微處理器硬件自動(dòng)設(shè)置,程序不能直接訪問程序不能直接訪問IPIP,但一些指令卻可但一些指令卻可改變改變IPIP的

24、值,如轉(zhuǎn)移指令、子程序調(diào)用的值,如轉(zhuǎn)移指令、子程序調(diào)用指令等。指令等。返回本節(jié)返回本節(jié)1.3.3 標(biāo)志寄存器標(biāo)志寄存器 80868086CPUCPU中有一個(gè)很重要的中有一個(gè)很重要的1616位標(biāo)志位標(biāo)志寄存器,它包含寄存器,它包含9 9個(gè)標(biāo)志位,主要用于保個(gè)標(biāo)志位,主要用于保存一條指令執(zhí)行后,存一條指令執(zhí)行后,CPUCPU所處狀態(tài)信息所處狀態(tài)信息及運(yùn)算結(jié)果的特征。及運(yùn)算結(jié)果的特征。 1 1條件標(biāo)志條件標(biāo)志 2 2狀態(tài)控制標(biāo)志狀態(tài)控制標(biāo)志 1條件標(biāo)志條件標(biāo)志 (1)進(jìn)位標(biāo)志)進(jìn)位標(biāo)志CF(2)零標(biāo)志)零標(biāo)志ZF(3)符號(hào)標(biāo)志)符號(hào)標(biāo)志SF(4)溢出標(biāo)志)溢出標(biāo)志 OF (5)奇偶標(biāo)志)奇偶標(biāo)志 P

25、F (6)輔助進(jìn)位標(biāo)志輔助進(jìn)位標(biāo)志AF2狀態(tài)控制標(biāo)志狀態(tài)控制標(biāo)志 (1 1)方向標(biāo)志)方向標(biāo)志DFDF (2 2)中斷允許標(biāo)志)中斷允許標(biāo)志IFIF (3 3)追蹤標(biāo)志)追蹤標(biāo)志TFTF返回本節(jié)返回本節(jié)1.4 1.4 存儲(chǔ)器物理地址的形成存儲(chǔ)器物理地址的形成 1.4.1 存儲(chǔ)器存儲(chǔ)器 1.4.2 存儲(chǔ)器單元的地址和內(nèi)存儲(chǔ)器單元的地址和內(nèi)容容 1.4.3 物理地址的形成物理地址的形成返回本章首頁返回本章首頁1.4.1 存儲(chǔ)器存儲(chǔ)器存儲(chǔ)器是計(jì)算機(jī)的記憶部件,用來存放程序和數(shù)存儲(chǔ)器是計(jì)算機(jī)的記憶部件,用來存放程序和數(shù)據(jù)。按所在的位置,存儲(chǔ)器可以分成主存儲(chǔ)器和輔助據(jù)。按所在的位置,存儲(chǔ)器可以分成主存儲(chǔ)

26、器和輔助存儲(chǔ)器。存儲(chǔ)器。主存儲(chǔ)器存放當(dāng)前正在執(zhí)行的程序和使用的數(shù)據(jù),主存儲(chǔ)器存放當(dāng)前正在執(zhí)行的程序和使用的數(shù)據(jù),CPUCPU可以直接存取,它由半導(dǎo)體存儲(chǔ)器芯片構(gòu)成,其可以直接存取,它由半導(dǎo)體存儲(chǔ)器芯片構(gòu)成,其成本高,容量小,但速度快。成本高,容量小,但速度快。輔助存儲(chǔ)器可用來長(zhǎng)期保存大量程序和數(shù)據(jù)輔助存儲(chǔ)器可用來長(zhǎng)期保存大量程序和數(shù)據(jù), ,CPUCPU需要通過需要通過I/OI/O接口訪問,它由磁盤或光盤構(gòu)成,其成本接口訪問,它由磁盤或光盤構(gòu)成,其成本低,容量大,但速度較慢。低,容量大,但速度較慢。 返回本節(jié)返回本節(jié)1.4.2 存儲(chǔ)器單元的地址和內(nèi)存儲(chǔ)器單元的地址和內(nèi)容容 存儲(chǔ)單元地址存儲(chǔ)單元地

27、址 :80868086系統(tǒng)中,為了標(biāo)系統(tǒng)中,為了標(biāo)識(shí)和存取每一個(gè)存儲(chǔ)單元,給每個(gè)存儲(chǔ)識(shí)和存取每一個(gè)存儲(chǔ)單元,給每個(gè)存儲(chǔ)單元規(guī)定一個(gè)編號(hào),這就是存儲(chǔ)單元地單元規(guī)定一個(gè)編號(hào),這就是存儲(chǔ)單元地址。址。 存儲(chǔ)單元的內(nèi)容存儲(chǔ)單元的內(nèi)容 :一個(gè)存儲(chǔ)單元中存放:一個(gè)存儲(chǔ)單元中存放的信息稱為該存儲(chǔ)單元的內(nèi)容。的信息稱為該存儲(chǔ)單元的內(nèi)容。 圖圖1.41.4表明了存表明了存儲(chǔ)器中部分存儲(chǔ)器中部分存儲(chǔ)單元存放信儲(chǔ)單元存放信息情況。從圖息情況。從圖1.41.4可看到可看到, ,地地址為址為3456034560HH的字節(jié)的存儲(chǔ)的字節(jié)的存儲(chǔ)單元中的內(nèi)容單元中的內(nèi)容是是3434HH,而地而地址為址為3456134561HH

28、的字節(jié)存儲(chǔ)單的字節(jié)存儲(chǔ)單元中的內(nèi)容是元中的內(nèi)容是1212HH。返回本節(jié)返回本節(jié)1.4.3 物理地址的形成物理地址的形成80868086CPUCPU的地址線是的地址線是2020位的,這樣最大可尋址位的,這樣最大可尋址空間應(yīng)為空間應(yīng)為2 22020=1=1MBMB,其物理地址范圍從其物理地址范圍從0000000000HHFFFFFHFFFFFH。而而80868086CPUCPU寄存器都是寄存器都是1616位的。那么,位的。那么,這這1 1MBMB空間如何用空間如何用1616位寄存器表達(dá)呢?位寄存器表達(dá)呢?根據(jù)要求可把根據(jù)要求可把1 1MM字節(jié)地址空間劃成若干邏輯段。字節(jié)地址空間劃成若干邏輯段。每個(gè)

29、邏輯段必須滿足兩個(gè)條件:一是邏輯段的起始地每個(gè)邏輯段必須滿足兩個(gè)條件:一是邏輯段的起始地址(簡(jiǎn)稱段首址)必須是址(簡(jiǎn)稱段首址)必須是1616的倍數(shù);二是邏輯段的最的倍數(shù);二是邏輯段的最大長(zhǎng)度為大長(zhǎng)度為6464KK。按照這兩個(gè)條件,按照這兩個(gè)條件,1 1MM字節(jié)地址空間字節(jié)地址空間最多可劃分成最多可劃分成6464KK個(gè)邏輯段,最少也要?jiǎng)澐殖蓚€(gè)邏輯段,最少也要?jiǎng)澐殖?616個(gè)邏個(gè)邏輯段。邏輯段與邏輯段可以相連,也可以不連,還可輯段。邏輯段與邏輯段可以相連,也可以不連,還可以重疊。以重疊。【例【例1.51.5】各獨(dú)立段的分配情況示例?!扛鳘?dú)立段的分配情況示例。 設(shè)設(shè)CS=B000HCS=B000H、

30、DS=1CDEHDS=1CDEH、SS=4200HSS=4200H、ES=0150H,ES=0150H,它們分別為它們分別為代碼段、數(shù)據(jù)段、堆棧段和附加段的段代碼段、數(shù)據(jù)段、堆棧段和附加段的段首址。自每個(gè)段首址開始,各段均占首址。自每個(gè)段首址開始,各段均占6464KBKB的范圍,各段之間互不重疊。如的范圍,各段之間互不重疊。如圖圖1.51.5所示。所示?!纠纠?.61.6】各段相互重疊情況示例?!扛鞫蜗嗷ブ丿B情況示例。 設(shè)設(shè)CS=0200HCS=0200H、DS=0400HDS=0400H、SS=0480HSS=0480H,這樣代碼段、數(shù)據(jù)段和堆這樣代碼段、數(shù)據(jù)段和堆棧段的物理首地址分別為棧

31、段的物理首地址分別為0200002000HH、04000H04000H和和0480004800HH。其中代碼段占其中代碼段占8 8KBKB地址空間,數(shù)據(jù)段占地址空間,數(shù)據(jù)段占2 2KBKB,堆棧段堆棧段占占256256B B,SP=0100HSP=0100H。如圖如圖1.61.6所示。所示。 圖圖1.6 各段重疊存儲(chǔ)單元分配圖各段重疊存儲(chǔ)單元分配圖返回本節(jié)返回本節(jié)Thank you very much !Thank you very much !本章到此結(jié)束,謝謝您的光臨!返回本章首頁返回本章首頁結(jié)結(jié) 束束第第2章章 尋址方式和指令系統(tǒng)尋址方式和指令系統(tǒng) 2.1 尋址方式尋址方式 2.2 數(shù)據(jù)

32、傳送類指令數(shù)據(jù)傳送類指令 2.3 算術(shù)運(yùn)算類指令算術(shù)運(yùn)算類指令 2.4 位操作類指令位操作類指令 2.5 串操作類指令串操作類指令 2.6 控制轉(zhuǎn)移類指令控制轉(zhuǎn)移類指令 2.7 處理機(jī)控制類指令處理機(jī)控制類指令開開 始始80868086CPUCPU的指令系統(tǒng)的基本指令的指令系統(tǒng)的基本指令 包括包括數(shù)據(jù)傳送類指令、算術(shù)運(yùn)算數(shù)據(jù)傳送類指令、算術(shù)運(yùn)算類指令、位操作類指令類指令、位操作類指令、串操作、串操作類指令類指令、控制轉(zhuǎn)移類指令、控制轉(zhuǎn)移類指令、處理、處理機(jī)控制類指令。后幾節(jié)將分別介機(jī)控制類指令。后幾節(jié)將分別介紹這些指令的語句格式和功能。紹這些指令的語句格式和功能。80868086CPUCPU的

33、指令的共同的規(guī)律的指令的共同的規(guī)律 l l 大多數(shù)數(shù)據(jù)傳送類指令、算術(shù)運(yùn)算類指令、大多數(shù)數(shù)據(jù)傳送類指令、算術(shù)運(yùn)算類指令、位操作類指令及串操作類指令,其雙操作數(shù)位操作類指令及串操作類指令,其雙操作數(shù)指令有相同的語句格式和操作規(guī)定。指令有相同的語句格式和操作規(guī)定。 語句格式:語句格式: 標(biāo)號(hào):標(biāo)號(hào): 操作符操作符 OPDOPD, OPS OPS ;注釋注釋 l l 算術(shù)運(yùn)算和位操作類指令的部分單操作數(shù)算術(shù)運(yùn)算和位操作類指令的部分單操作數(shù)指令有相同的語句格式和操作規(guī)定。指令有相同的語句格式和操作規(guī)定。 語句格式:語句格式: 標(biāo)號(hào):標(biāo)號(hào): 操作符操作符 OPD OPD ;注釋注釋 2.1 尋址方式尋址

34、方式 2.1.1 2.1.1 寄存器尋址寄存器尋址 2.1.2 2.1.2 寄存器間接尋址寄存器間接尋址 2.1.3 2.1.3 變址尋址變址尋址 2.1.4 2.1.4 基址加變址尋址基址加變址尋址 2.1.5 2.1.5 立即尋址立即尋址 2.1.6 2.1.6 直接尋址直接尋址 2.1.7 2.1.7 跨段問題跨段問題返回本章首頁返回本章首頁2.1.1 寄存器尋址寄存器尋址 寄存器尋址方式的操作數(shù)在指令指明的寄存器尋址方式的操作數(shù)在指令指明的寄存器中。寄存器中。 匯編格式:匯編格式:R R 其中其中R R表示寄存器名。表示寄存器名。 功能:操作數(shù)直接存放在寄存器功能:操作數(shù)直接存放在寄存

35、器R R中。中。 圖形表示:圖形表示: R R 指令指令操作數(shù)操作數(shù)【例【例2.12.1】 下列程序執(zhí)行后,下列程序執(zhí)行后,(AXAX)= =?,(?,(BXBX)= =? MOV AX MOV AX,1234H1234H MOV BX MOV BX,5678H5678H ADD AX ADD AX,BXBX 該程序中該程序中MOVMOV指令為數(shù)據(jù)傳送指令操作符,指令為數(shù)據(jù)傳送指令操作符,ADDADD指令指令為加法指令操作符,三條指令皆為雙操作數(shù)指令。第為加法指令操作符,三條指令皆為雙操作數(shù)指令。第一、二條指令一、二條指令A(yù)XAX、BXBX皆為目的操作數(shù)地址,為寄存皆為目的操作數(shù)地址,為寄存器

36、尋址方式。第三條指令中,器尋址方式。第三條指令中,AXAX為目的操作數(shù)地址,為目的操作數(shù)地址,BXBX為源操作數(shù)地址。源地址和目的地址皆為寄存器尋為源操作數(shù)地址。源地址和目的地址皆為寄存器尋址方式。址方式。 圖形表示:圖形表示: 執(zhí)行:執(zhí)行:12341234HAXHAX 5678HBX 5678HBX (AXAX)+ +(BXBX)AXAX 執(zhí)行后:(執(zhí)行后:(AXAX)=68ACH=68ACH,(,(BXBX)=5678H=5678H返回本節(jié)返回本節(jié)2.1.2 寄存器間接尋址寄存器間接尋址 寄存器間接尋址方式中,寄存寄存器間接尋址方式中,寄存器的內(nèi)容為操作數(shù)的偏移地址器的內(nèi)容為操作數(shù)的偏移地

37、址EAEA,操作數(shù)在存儲(chǔ)器中。操作數(shù)在存儲(chǔ)器中。 匯編格式:匯編格式: RR 功能:操作數(shù)存放在存儲(chǔ)器,功能:操作數(shù)存放在存儲(chǔ)器,寄存器寄存器R R存放操作數(shù)的偏移地址存放操作數(shù)的偏移地址EAEA。偏移地址偏移地址EA計(jì)算方法如下:計(jì)算方法如下:EA=SISI作間址寄存器。 DIDI作間址寄存器。BX BX作間址寄存器。BP BP作間址寄存器。 執(zhí)行指令:執(zhí)行指令:MOV AX MOV AX ,BP BP 執(zhí)行后:(執(zhí)行后:(AXAX)=?=?,(,(BPBP)=?=?,(,(SSSS)=?=?,(20030H20030H)=?=? 圖形表示如下:圖形表示如下: 【例【例2.2】寄存器和存儲(chǔ)器

38、內(nèi)容分】寄存器和存儲(chǔ)器內(nèi)容分別為:(別為:(AX)=0,(,(BP)=0030H,(,(SS)=2000H,(20030H)=1234H返回本節(jié)返回本節(jié)2.1.3 變址尋址變址尋址 變址尋址方式操作數(shù)的偏移地址變址尋址方式操作數(shù)的偏移地址EAEA為寄為寄存器的內(nèi)容加位移量,操作數(shù)在存儲(chǔ)器存器的內(nèi)容加位移量,操作數(shù)在存儲(chǔ)器中。中。 匯編格式:匯編格式:XRXR(X X表示位移量,是表示位移量,是8 8位位或或1616位二進(jìn)制補(bǔ)碼表示的有符號(hào)數(shù))位二進(jìn)制補(bǔ)碼表示的有符號(hào)數(shù)) 功能:操作數(shù)存放在存儲(chǔ)器,寄存器功能:操作數(shù)存放在存儲(chǔ)器,寄存器R R的的內(nèi)容加位移量?jī)?nèi)容加位移量X X為操作數(shù)的偏移地址為

39、操作數(shù)的偏移地址EAEA。 圖形表示如下:圖形表示如下: 偏移地址偏移地址EAEA計(jì)算方法如下:計(jì)算方法如下:【例【例2.32.3】 設(shè)執(zhí)行前:設(shè)執(zhí)行前: (AXAX)=0040H=0040H,(,(BXBX)=0030H=0030H,(,(DSDS)=2000H=2000H,(20036H20036H)=0050H =0050H 執(zhí)行指執(zhí)行指令:令:ADD 6BXADD 6BX,AXAX 執(zhí)行后:執(zhí)行后:(AXAX)=?=?,(,(BXBX)=?=?,(DSDS)=?=?,(,(20036H20036H)=?=? 圖形表示如下:圖形表示如下: 執(zhí)行:(執(zhí)行:(20036H)+(AX) 200

40、36H執(zhí)行后:(執(zhí)行后:(AX)=0040H,(,(BX)=0030H,(,(DS)=2000H,(20036H)=0090H。返回本節(jié)返回本節(jié)2.1.4 基址加變址尋址基址加變址尋址 基址加變址尋址方式中,操作數(shù)的偏移基址加變址尋址方式中,操作數(shù)的偏移地址地址EAEA是指令中基址寄存器內(nèi)容、變址是指令中基址寄存器內(nèi)容、變址寄存器內(nèi)容、位移量三項(xiàng)之和,操作寄存器內(nèi)容、位移量三項(xiàng)之和,操作數(shù)在存儲(chǔ)器中。數(shù)在存儲(chǔ)器中。 匯編格式:匯編格式:X BR+IRX BR+IR 功能:操作數(shù)存放在存儲(chǔ)器,功能:操作數(shù)存放在存儲(chǔ)器,BRBR的內(nèi)容的內(nèi)容加加IRIR的內(nèi)容加位移量的內(nèi)容加位移量X X是操作數(shù)的偏

41、移地是操作數(shù)的偏移地址址EAEA。 圖形表示:圖形表示: 操作數(shù)偏移地址操作數(shù)偏移地址EAEA計(jì)算方法如下計(jì)算方法如下返回本節(jié)返回本節(jié)2.1.5 立即尋址立即尋址 立即尋址方式中,指令操作碼和操作數(shù)立即尋址方式中,指令操作碼和操作數(shù)都在存儲(chǔ)器代碼段中。都在存儲(chǔ)器代碼段中。 匯編格式:匯編格式:n n(n n為立即操作數(shù),是用為立即操作數(shù),是用8 8位或位或1616位二進(jìn)制補(bǔ)碼表示的有符號(hào)數(shù))位二進(jìn)制補(bǔ)碼表示的有符號(hào)數(shù)) 功能:操作數(shù)存放在存儲(chǔ)器,指令下一功能:操作數(shù)存放在存儲(chǔ)器,指令下一單元的內(nèi)容為立即操作數(shù)單元的內(nèi)容為立即操作數(shù)n n。 圖形表示:圖形表示: 【例【例2.52.5】 【例【例

42、2.52.5】MOV AXMOV AX, 10 10 執(zhí)行后(執(zhí)行后(AXAX)= =? 該例中源操作數(shù)為立即尋址方式,立即數(shù)為該例中源操作數(shù)為立即尋址方式,立即數(shù)為1010,存放在指令的下一單元。存放在指令的下一單元。 圖形表示:圖形表示: 執(zhí)行:執(zhí)行:1010AXAX 執(zhí)行后:執(zhí)行后:(AXAX)=000AH=000AH 返回本節(jié)返回本節(jié)2.1.6 直接尋址直接尋址 匯編格式:含有變量的地址表達(dá)式。匯編格式:含有變量的地址表達(dá)式。 段寄存器名:段寄存器名: EA EA 。 功能:指令下一字單元的內(nèi)容是操作數(shù)的功能:指令下一字單元的內(nèi)容是操作數(shù)的偏移地址偏移地址EAEA。 圖形表示:圖形表示

43、:【例【例2.62.6】 【例【例2.62.6】寄存器和存儲(chǔ)器內(nèi)容為】寄存器和存儲(chǔ)器內(nèi)容為:(AXAX)=1212H=1212H,BUFBUF為數(shù)據(jù)段定義的變量,其偏移地址是為數(shù)據(jù)段定義的變量,其偏移地址是20002000HH,(DSDS)=3000H=3000H,(,(32000H32000H)=4545H=4545H。執(zhí)行指令執(zhí)行指令:MOV AX MOV AX ,BUFBUF執(zhí)行后:(執(zhí)行后:(AXAX)=?=?圖形表示:圖形表示:執(zhí)行:(執(zhí)行:(3200032000HH)AXAX執(zhí)行后:(執(zhí)行后:(AXAX)=4545H=4545H返回本節(jié)返回本節(jié)2.1.7 跨段問題跨段問題 按前述規(guī)

44、定:若選用按前述規(guī)定:若選用BPBP作間址基址寄存器、變址寄存作間址基址寄存器、變址寄存器或基址寄存器,則操作數(shù)在堆棧段,操作數(shù)的物理器或基址寄存器,則操作數(shù)在堆棧段,操作數(shù)的物理地址地址PAPA由堆棧段寄存器由堆棧段寄存器SSSS的內(nèi)容左移的內(nèi)容左移4 4位與偏移地址位與偏移地址EAEA相加后形成;否則,操作數(shù)在數(shù)據(jù)段,操作數(shù)的物理相加后形成;否則,操作數(shù)在數(shù)據(jù)段,操作數(shù)的物理地址地址PAPA由數(shù)據(jù)段寄存器由數(shù)據(jù)段寄存器DSDS的內(nèi)容左移的內(nèi)容左移4 4位與偏移位與偏移EAEA相加相加后形成。該規(guī)定為系統(tǒng)默認(rèn)狀態(tài)。當(dāng)要否定默認(rèn)狀態(tài),后形成。該規(guī)定為系統(tǒng)默認(rèn)狀態(tài)。當(dāng)要否定默認(rèn)狀態(tài),到非約定段尋

45、找操作數(shù)時(shí),必須用跨段前綴指明操作到非約定段尋找操作數(shù)時(shí),必須用跨段前綴指明操作數(shù)的段寄存器名。數(shù)的段寄存器名。 匯編格式:段寄存器名:操作數(shù)地址。匯編格式:段寄存器名:操作數(shù)地址。 功能:段寄存器名指明操作數(shù)屬哪個(gè)段。功能:段寄存器名指明操作數(shù)屬哪個(gè)段。 【例【例2.72.7】跨段前綴示例?!靠缍吻熬Y示例。 MOVMOVAXAX,DSDS:BP BP MOVMOVCXCX,SSSS:SI SI 該例中,該例中,DSDS:,:,SSSS:均為跨段前綴,此均為跨段前綴,此時(shí)默認(rèn)狀態(tài)無效,操作數(shù)的物理地址時(shí)默認(rèn)狀態(tài)無效,操作數(shù)的物理地址PAPA由段寄存器內(nèi)容左移由段寄存器內(nèi)容左移4 4位加偏移位加

46、偏移EAEA形成。形成。上述上述2 2條指令的源操作數(shù)物理地址分別為:條指令的源操作數(shù)物理地址分別為: PA1 =PA1 =(DSDS)左移左移4 4位位+BPBP PA2 =PA2 =(SSSS)左移左移4 4位位+SISI返回本節(jié)返回本節(jié)2.2 數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令 2.2.1 2.2.1 通用數(shù)據(jù)傳送指令通用數(shù)據(jù)傳送指令 2.2.2 2.2.2 堆棧操作指令堆棧操作指令 2.2.3 2.2.3 標(biāo)志寄存器傳送指標(biāo)志寄存器傳送指令令 2.2.4 2.2.4 地址傳送指令地址傳送指令 2.2.5 2.2.5 輸入輸出指令輸入輸出指令返回本章首頁返回本章首頁2.2.1 2.2.1 通用

47、數(shù)據(jù)傳送指令通用數(shù)據(jù)傳送指令 1 1傳送指令傳送指令MOVMOV 2 2數(shù)據(jù)交換指令數(shù)據(jù)交換指令XCHGXCHG 3 3查表轉(zhuǎn)換指令查表轉(zhuǎn)換指令 XLATXLAT 1 1傳送指令傳送指令MOVMOV 語句格式:語句格式:MOV OPDMOV OPD,OPSOPS 功能:將源操作數(shù)傳送入目的地功能:將源操作數(shù)傳送入目的地址,源地址內(nèi)容不變。即(址,源地址內(nèi)容不變。即(OPSOPS)OPDOPD。 下圖下圖2.12.1描述了描述了MOVMOV指令在傳送數(shù)指令在傳送數(shù)據(jù)時(shí)允許傳送的路徑及類型。據(jù)時(shí)允許傳送的路徑及類型。圖圖2.1 MOV指令所允許的數(shù)據(jù)傳送路徑及類型指令所允許的數(shù)據(jù)傳送路徑及類型【例

48、【例2.82.8】存儲(chǔ)器與寄存器間數(shù)據(jù)傳送。存儲(chǔ)器與寄存器間數(shù)據(jù)傳送。MOV AXMOV AX,BUF BUF ;BUFBUF是變量,源操作數(shù)為直接尋是變量,源操作數(shù)為直接尋址址MOV BHMOV BH,DIDI ;源操作數(shù)為寄存器間接尋址源操作數(shù)為寄存器間接尋址MOV DIMOV DI,ESES:3SI 3SI ;源操作數(shù)為變址尋址,使用跨段源操作數(shù)為變址尋址,使用跨段前綴前綴MOV BPMOV BP,3BX+SI3BX+SI;源操作數(shù)為基址加變址尋址源操作數(shù)為基址加變址尋址MOV BUFAMOV BUFA,DLDL ;BUFABUFA是一字節(jié)變量是一字節(jié)變量MOV BPMOV BP,AXA

49、X;使用使用SSSS段寄存器段寄存器MOV DSMOV DS:BPBP,DLDL;使用跨段前綴使用跨段前綴MOV BUFMOV BUF,DSDS;BUFBUF是個(gè)字變量是個(gè)字變量MOV ES MOV ES ,BUFBUF2 2數(shù)據(jù)交換指令數(shù)據(jù)交換指令XCHGXCHG語句格式:語句格式:XCHG OPDXCHG OPD,OPSOPS功能:將源地址與目的地址中的內(nèi)容互換。即(功能:將源地址與目的地址中的內(nèi)容互換。即(OPDOPD)OPSOPS,(,(OPSOPS)OPDOPD。【例例2.92.9】寄存器與存儲(chǔ)器之間數(shù)據(jù)交換寄存器與存儲(chǔ)器之間數(shù)據(jù)交換。MOVMOVAXAX,5678H5678H;(;

50、(AXAX)=5678H=5678HMOVMOVBXBX,0FFFFH0FFFFH ;(;(BXBX)=0FFFFH=0FFFFHXCHGXCHGAXAX,BXBX;(;(AXAX)=0FFFFH =0FFFFH ,(,( BX BX)=5678H=5678H3 3查表轉(zhuǎn)換指令查表轉(zhuǎn)換指令 XLAXLA 語句格式:語句格式:XLAT OPSXLAT OPS或或XLATXLAT 功能:將(功能:將(BXBX)為首址(為首址(ALAL)為為位移量的字節(jié)存儲(chǔ)單元中的數(shù)據(jù)位移量的字節(jié)存儲(chǔ)單元中的數(shù)據(jù)送送ALAL寄存器。寄存器。即(即( BX+ALBX+AL)ALAL。返回本節(jié)返回本節(jié)2.2.2 2.2

51、.2 堆棧操作指令堆棧操作指令 1 1進(jìn)棧指令進(jìn)棧指令PUSHPUSH 2 2出棧指令出棧指令POPPOP1 1進(jìn)棧指令進(jìn)棧指令PUSHPUSH 語句格式:語句格式: PUSH OPSPUSH OPS 功能:將寄存器、段寄存器或存儲(chǔ)功能:將寄存器、段寄存器或存儲(chǔ)器中的一個(gè)字?jǐn)?shù)據(jù)壓入堆棧,堆棧器中的一個(gè)字?jǐn)?shù)據(jù)壓入堆棧,堆棧指針減指針減2 2。 即:(即:(SPSP)SPSP(OPSOPS)158SP158SP (SPSP)SPSP(OPSOPS)70SP70SP2 2出棧指令出棧指令POPPOP 語句格式:語句格式: POP OPDPOP OPD 功能:功能: 將棧頂元素彈出送至某一寄存器、段寄

52、存將棧頂元素彈出送至某一寄存器、段寄存器(除器(除CSCS外)或存儲(chǔ)器,堆棧指針加外)或存儲(chǔ)器,堆棧指針加2 2。 從從POPPOP指令功能可看出,該指令為指令功能可看出,該指令為PUSHPUSH指令的逆過指令的逆過程。程。 即:(即:( SPSP)(OPDOPD)7070(SPSP)+ +SP SP (SPSP)(OPDOPD)158158(SPSP)+ +SPSP返回本節(jié)返回本節(jié)2.2.3 2.2.3 標(biāo)志寄存器傳送指令標(biāo)志寄存器傳送指令 1 1標(biāo)志送標(biāo)志送AHAH指令指令LAHFLAHF 2 2AHAH送標(biāo)志指令送標(biāo)志指令SAHFSAHF 3 3標(biāo)志寄存器進(jìn)棧指令標(biāo)志寄存器進(jìn)棧指令PUS

53、HFPUSHF 4 4標(biāo)志寄存器出棧指令標(biāo)志寄存器出棧指令POPFPOPF1 1標(biāo)志送標(biāo)志送AHAH指令指令LAHFLAHF 語句格式:語句格式:LAHFLAHF 功能:將標(biāo)志寄存器的低功能:將標(biāo)志寄存器的低8 8位送入位送入AHAH寄存器。寄存器。 即(即(FLAGSFLAGS)7-0AH7-0AH。該指令的執(zhí)行該指令的執(zhí)行對(duì)標(biāo)志位無影響。對(duì)標(biāo)志位無影響。 【例【例2.132.13】標(biāo)志寄存器傳送?!繕?biāo)志寄存器傳送。 執(zhí)行前:(執(zhí)行前:(FLAGSFLAGS)=0485H=0485H,(,(AXAX)=0FFFFH=0FFFFH 執(zhí)行指令:執(zhí)行指令:LAHFLAHF2 2AHAH送標(biāo)志指令送

54、標(biāo)志指令SAHFSAHF 語句格式:語句格式:SAHFSAHF 功能:將功能:將AHAH的內(nèi)容送入標(biāo)志寄存器的低的內(nèi)容送入標(biāo)志寄存器的低8 8位,高位,高8 8位不變。位不變。即(即(AHAH) FLAGS7- FLAGS7-0.0.。 從該指令功能可看出,從該指令功能可看出,SAHFSAHF為為L(zhǎng)AHFLAHF的逆的逆過程。過程。 3 3標(biāo)志寄存器進(jìn)棧指令標(biāo)志寄存器進(jìn)棧指令PUSHFPUSHF 語句格式:語句格式:PUSHFPUSHF 功能:將標(biāo)志寄存器的內(nèi)容壓入功能:將標(biāo)志寄存器的內(nèi)容壓入堆 棧 。堆 棧 。 即即 ( F L A G SF L A G S ) (SPSP)。)。4 4標(biāo)志

55、寄存器出棧指令標(biāo)志寄存器出棧指令POPFPOPF 功能:功能: 將棧頂內(nèi)容彈出送入標(biāo)志寄存器中。即將棧頂內(nèi)容彈出送入標(biāo)志寄存器中。即(SPSP)FLAGSFLAGS。 POPFPOPF指令與指令與PUSHFPUSHF指令互為逆過程。指令互為逆過程。 【例【例2.142.14】將標(biāo)志寄存器的單步標(biāo)志將標(biāo)志寄存器的單步標(biāo)志TFTF置位。置位。 PUSHFPUSHF;(;(FLSGSFLSGS)(SPSP) POP AXPOP AX;(;(SPSP)AXAX OR AXOR AX, 0100H 0100H;設(shè)置設(shè)置D8=TF=1D8=TF=1 PUSH AXPUSH AX;(;(AXAX)(SPSP

56、) POPFPOPF;(;(SPSP)FLAGSFLAGS,即(即(AXAX)FLAGSFLAGS返回本節(jié)返回本節(jié)2.2.4 2.2.4 地址傳送指令地址傳送指令 1 1傳送偏移地址指令傳送偏移地址指令 LEALEA 2 2傳送偏移地址及數(shù)據(jù)段首址指令傳送偏移地址及數(shù)據(jù)段首址指令LDSLDS 3 3傳送偏移地址及附加數(shù)據(jù)段指令傳送偏移地址及附加數(shù)據(jù)段指令LESLES1 1傳送偏移地址指令傳送偏移地址指令 LEALEA 語句格式:語句格式: LEA OPDLEA OPD,OPSOPS 功能:主存按源地址的尋址方式計(jì)算偏功能:主存按源地址的尋址方式計(jì)算偏移地址,將偏移地址送入指定寄存器。移地址,將

57、偏移地址送入指定寄存器。 【例【例2.152.15】主存偏移地址的獲取。主存偏移地址的獲取。 MOV BXMOV BX,0100H0100H;(;(BXBX)=0100H=0100H MOV SIMOV SI, 0210H 0210H;(;(SISI) =0210H =0210H LEA BXLEA BX,1234BX+SI1234BX+SI ; (BXBX)=1544H=1544H2 2傳送偏移地址及數(shù)據(jù)段首址指令傳送偏移地址及數(shù)據(jù)段首址指令LDSLDS 語句格式:語句格式:LDS OPDLDS OPD,OPSOPS 功能:將主存中指定字單元數(shù)據(jù)功能:將主存中指定字單元數(shù)據(jù)送入指定存儲(chǔ)器,下

58、一字單元數(shù)送入指定存儲(chǔ)器,下一字單元數(shù)據(jù)送據(jù)送DSDS寄存器。寄存器。3 3傳送偏移地址及附加數(shù)據(jù)段指令傳送偏移地址及附加數(shù)據(jù)段指令LESLES 語句格式:語句格式:LES OPDLES OPD,OPSOPS 功能:將主存某字單元內(nèi)容送指定寄功能:將主存某字單元內(nèi)容送指定寄存器。即(存器。即(OPSOPS)OPDOPD,(,(OPS+2OPS+2)ESES。返回本節(jié)返回本節(jié)2.2.5 2.2.5 輸入輸出指令輸入輸出指令 1 1輸入指令輸入指令I(lǐng)NIN 2 2輸出指令輸出指令OUTOUT1 1輸入指令輸入指令I(lǐng)NIN 輸入指令用來從指定的外設(shè)寄存器取信息輸入指令用來從指定的外設(shè)寄存器取信息送入

59、累加器。它有四種形式:送入累加器。它有四種形式: (1 1)語句格式:)語句格式:ININALAL,PORT PORT 功能:(功能:(PORTPORT)ALAL (2 2)語句格式:語句格式:ININAXAX,PORTPORT 功能:(功能:(PORTPORT)AXAX (3 3)語句格式:語句格式:ININALAL,DXDX 功能:(功能:( DXDX)ALAL (4 4)語句格式:語句格式:ININAXAX,DXDX 功能:(功能:( DXDX)ALAL2 2輸出指令輸出指令OUTOUT輸出指令用來把累加器的內(nèi)容送往指定的外輸出指令用來把累加器的內(nèi)容送往指定的外設(shè)存儲(chǔ)器,它有四種形式:設(shè)

60、存儲(chǔ)器,它有四種形式:(1 1)語句格式:)語句格式:OUTOUTPORTPORT,AL AL 功能:(功能:(ALAL)PORTPORT(2 2)語句格式:語句格式:OUTOUTPORTPORT,AX AX 功能:(功能:(AXAX)PORTPORT(3 3)語句格式:語句格式:OUTOUTDXDX,AL AL 功能:(功能:(ALAL)DXDX(4 4)語句格式:語句格式:OUTOUTDXDX,AX AX 功能:(功能:(AXAX)DXDX返回本節(jié)返回本節(jié)2.3 算術(shù)運(yùn)算類指令算術(shù)運(yùn)算類指令 2.3.1 2.3.1 加法指令加法指令 2.3.2 2.3.2 減運(yùn)算指令減運(yùn)算指令 2.3.3

溫馨提示

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

評(píng)論

0/150

提交評(píng)論