第3章 80x86指令系統(tǒng)和尋址方式_第1頁
第3章 80x86指令系統(tǒng)和尋址方式_第2頁
第3章 80x86指令系統(tǒng)和尋址方式_第3頁
第3章 80x86指令系統(tǒng)和尋址方式_第4頁
第3章 80x86指令系統(tǒng)和尋址方式_第5頁
已閱讀5頁,還剩141頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計第第3章章 80 x86指令系統(tǒng)和尋址方式指令系統(tǒng)和尋址方式教學(xué)要求:教學(xué)要求:1. 掌握指令系統(tǒng)的基本概念:指令格式、尋址方掌握指令系統(tǒng)的基本概念:指令格式、尋址方式、指令類型;掌握式、指令類型;掌握8086/8088指令系統(tǒng)中,各指指令系統(tǒng)中,各指令的格式、功能和注意事項。令的格式、功能和注意事項。2. 了解其他的尋址方式和指令類型。了解其他的尋址方式和指令類型。 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計 相關(guān)

2、概念相關(guān)概念一、什么是指令系統(tǒng)?一、什么是指令系統(tǒng)? 計算機(jī)的指令系統(tǒng)就是指該計算機(jī)能夠執(zhí)行計算機(jī)的指令系統(tǒng)就是指該計算機(jī)能夠執(zhí)行的全部指令的集合。的全部指令的集合。 每種計算機(jī)都有它支持的指令集合。每種計算機(jī)都有它支持的指令集合。 16位位8086指令系統(tǒng)是整個指令系統(tǒng)是整個Intel 80 x86 系列微處系列微處理器指令系統(tǒng)的基礎(chǔ)。理器指令系統(tǒng)的基礎(chǔ)。 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計 指令由操作碼和操作數(shù)兩部分組成。指令由操作碼和操作數(shù)兩部分組成。 說明計算機(jī)要執(zhí)行哪種操作,如傳送、運(yùn)算、說明計算機(jī)要執(zhí)行哪種

3、操作,如傳送、運(yùn)算、移位、跳轉(zhuǎn)等操作,它是指令中不可缺少的組成部分。移位、跳轉(zhuǎn)等操作,它是指令中不可缺少的組成部分。 是指令執(zhí)行的參與者,即各種操作的對象。是指令執(zhí)行的參與者,即各種操作的對象。 有些指令不需要操作數(shù),通常的指令都有一個或兩個有些指令不需要操作數(shù),通常的指令都有一個或兩個操作數(shù),也有個別指令有操作數(shù),也有個別指令有3個甚至個甚至4個操作數(shù),通常成為一個操作數(shù),通常成為一地址指令、二地址指令、三地址指令、二地址指令、三操作碼操作碼操作數(shù)操作數(shù) 操作數(shù)操作數(shù) 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計三、學(xué)習(xí)指令的

4、注意事項三、學(xué)習(xí)指令的注意事項 該指令能夠?qū)崿F(xiàn)何種操作。通常指令助該指令能夠?qū)崿F(xiàn)何種操作。通常指令助記符就是指令功能的英文單詞或其縮寫形式。記符就是指令功能的英文單詞或其縮寫形式。 該指令中的操作數(shù)可以采用何該指令中的操作數(shù)可以采用何種尋址方式。種尋址方式。 該指令執(zhí)行后是否對各個標(biāo)志位該指令執(zhí)行后是否對各個標(biāo)志位有影響,以及如何影響。有影響,以及如何影響。 該指令其他需要特別注意的地方,如指令該指令其他需要特別注意的地方,如指令執(zhí)行時的約定設(shè)置、執(zhí)行時的約定設(shè)置、等。等。 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計3.1 8

5、0 x86尋址方式尋址方式尋址、尋址方式的概念尋址、尋址方式的概念 指令中操作數(shù)字段實質(zhì)上是指出操作數(shù)存放于何處。一指令中操作數(shù)字段實質(zhì)上是指出操作數(shù)存放于何處。一般來說,般來說,稱為,稱為立即數(shù)立即數(shù);,稱為,稱為寄存器操作寄存器操作數(shù)數(shù)。,稱為,稱為存儲器操作存儲器操作數(shù)數(shù)。指令指定操作數(shù)的位置,即給出地址信息,在執(zhí)行時需。指令指定操作數(shù)的位置,即給出地址信息,在執(zhí)行時需要根據(jù)這個地址信息找到需要的操作數(shù)。這種要根據(jù)這個地址信息找到需要的操作數(shù)。這種稱為稱為尋址尋址,而尋找操作數(shù)的方法稱為,而尋找操作數(shù)的方法稱為尋址方式尋址方式。 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科

6、學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計指令的助記符格式:指令的助記符格式: 指令助憶符指令助憶符 操作數(shù)操作數(shù)1 , 操作數(shù)操作數(shù)2 , 操作數(shù)操作數(shù)3 ;注釋注釋 指令助憶符體現(xiàn)該指令的功能,它指令助憶符體現(xiàn)該指令的功能,它。指令的操作數(shù)個數(shù)由該指令確定,。指令的操作數(shù)個數(shù)由該指令確定,絕大多數(shù)指令的操作數(shù)要顯式的寫出絕大多數(shù)指令的操作數(shù)要顯式的寫出來,但也有指令的操作數(shù)是隱含的,不需要在指令中寫出。來,但也有指令的操作數(shù)是隱含的,不需要在指令中寫出。注:注:當(dāng)指令含有操作數(shù),則在書寫時必須遵守:當(dāng)指令含有操作數(shù),則在書寫時必須遵守:v v 。 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與

7、計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計3.1.1 與數(shù)據(jù)有關(guān)的尋址方式與數(shù)據(jù)有關(guān)的尋址方式以以 MOV 指令為例:指令為例:立即尋址立即尋址 MOV AX , 3069H寄存器尋址寄存器尋址 MOV AL , BH直接尋址直接尋址 MOV AX , 2000H 寄存器間接尋址寄存器間接尋址 MOV AX , BX 寄存器相對尋址寄存器相對尋址 MOV AX , COUNT SI 基址變址尋址基址變址尋址 MOV AX , BP DI 相對基址變址尋址相對基址變址尋址 MOV AX , MASK BX SI 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)

8、與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計1. 立即尋址方式立即尋址方式 定義:定義:操作數(shù)作為指令的一部分而直接寫在指令中,操作數(shù)作為指令的一部分而直接寫在指令中,這種操作數(shù)稱為立即數(shù),這種尋址方式也就稱為這種操作數(shù)稱為立即數(shù),這種尋址方式也就稱為尋址方式。尋址方式。 匯編格式:匯編格式:n n(n n為立即操作數(shù),是為立即操作數(shù),是)功能:功能:操作數(shù)存放在存儲器,指令下一單元的內(nèi)容為立操作數(shù)存放在存儲器,指令下一單元的內(nèi)容為立即操作數(shù)即操作數(shù)n n。圖形表示:圖形表示:操作數(shù)操作數(shù) n指令指令 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥

9、山 匯編語言程序設(shè)計匯編語言程序設(shè)計【例例3.1】MOV AX, 4576H 執(zhí)行后(執(zhí)行后(AX)=? 該例中源操作數(shù)為立即尋址方式,立即數(shù)為該例中源操作數(shù)為立即尋址方式,立即數(shù)為4576H,存放,存放在指令的下一單元。在指令的下一單元。 執(zhí)行:執(zhí)行:4576HAX 執(zhí)行后:(執(zhí)行后:(AX)=4576H 76HOP45H DSMOV AX,4576H指令的存儲形式指令的存儲形式45 76 AX 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計2. 寄存器尋址方式寄存器尋址方式定義:定義:。把在指令中指出所使用寄存器(即:。把在指

10、令中指出所使用寄存器(即:寄存器的助記符)的尋址方式稱為寄存器尋址方式。寄存器的助記符)的尋址方式稱為寄存器尋址方式。 匯編格式:匯編格式:R R 其中其中R R表示寄存器名。表示寄存器名。功能:功能:操作數(shù)直接存放在寄存器操作數(shù)直接存放在寄存器R R中。中。圖形表示:圖形表示:寄存器寄存器 R指令指令操作數(shù)操作數(shù)寄存器寄存器 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計指令中可以引用的寄存器及其符號名稱如下:指令中可以引用的寄存器及其符號名稱如下: 8位寄存器有:位寄存器有:等;等; 16位寄存器:位寄存器:等;等; v 源操

11、作數(shù)是寄存器尋址方式源操作數(shù)是寄存器尋址方式 如:如:ADD VARW, AXMOV VARB, BH等。等。 其中:其中:VARW和和VARB是字和字節(jié)類型的內(nèi)存變量。是字和字節(jié)類型的內(nèi)存變量。v目的操作數(shù)是寄存器尋址方式目的操作數(shù)是寄存器尋址方式 如:如:ADD BH, 78hADD AX, 1234hv源和目的操作數(shù)都是寄存器尋址方式源和目的操作數(shù)都是寄存器尋址方式 如:如: MOV , MOV , 等。等。 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計注:注:。通常情況下,。通常情況下,提倡在編寫提倡在編寫編語言程序時,

12、應(yīng)盡可能地使用寄存編語言程序時,應(yīng)盡可能地使用寄存器尋址方式,但也不要把它絕對化。器尋址方式,但也不要把它絕對化。 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計【例例3.2】下列程序執(zhí)行后,(下列程序執(zhí)行后,(AX)=?,(?,(BX)=? MOV AX,1234H MOV BX,5678H ADD AX,BX解釋:該程序中解釋:該程序中MOV指令為數(shù)據(jù)傳送指令操作符,指令為數(shù)據(jù)傳送指令操作符,ADD指指令為加法指令操作符,三條指令皆為雙操作數(shù)指令。第一、令為加法指令操作符,三條指令皆為雙操作數(shù)指令。第一、二條指令二條指令A(yù)X、

13、BX皆為目的操作數(shù)地址,為寄存器尋址方式。皆為目的操作數(shù)地址,為寄存器尋址方式。第三條指令中,第三條指令中,AX為目的操作數(shù)地址,為目的操作數(shù)地址,BX為源操作數(shù)地址。為源操作數(shù)地址。源地址和目的地址皆為寄存器尋址方式。源地址和目的地址皆為寄存器尋址方式。執(zhí)行:執(zhí)行:1234HAX 5678HBX (AX)+(BX)AX執(zhí)行后:(執(zhí)行后:(AX)=68ACH,(,(BX)=5678H 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計3. 直接尋址方式直接尋址方式定義:定義:,這種尋址方式為直接尋址方式。,這種尋址方式為直接尋址方式。

14、 匯編格式:匯編格式:。功能:功能:指令下一字單元的內(nèi)容是操作數(shù)的偏移地址指令下一字單元的內(nèi)容是操作數(shù)的偏移地址EA。圖形表示:圖形表示:EA指令指令操作數(shù)操作數(shù)存儲器存儲器段基地址段基地址 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計【例例3.3】執(zhí)行指令:執(zhí)行指令:MOV BX ,1234H 設(shè)(設(shè)(DS)=2000H。執(zhí)行后:(執(zhí)行后:(AX)=?圖示:圖示:執(zhí)行:(執(zhí)行:(21234H)BX執(zhí)行后:(執(zhí)行后:(BX)=5312H 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)

15、計匯編語言程序設(shè)計 在通常情況下,操作數(shù)存放在數(shù)據(jù)段中,所以,在通常情況下,操作數(shù)存放在數(shù)據(jù)段中,所以,但,但如果使用段超越前綴,那么,操作數(shù)可存放在其它段。如果使用段超越前綴,那么,操作數(shù)可存放在其它段。 例如:例如:MOVMOVESES:1000H:1000H, AX AX 注意:注意:,直接尋,直接尋址的地址要寫在括號址的地址要寫在括號“ ”,“ ”內(nèi)。在程序中,內(nèi)。在程序中,如:,如:MOV BX, VARWMOV BX, VARW,其中,其中,VARWVARW是是內(nèi)存字變量。內(nèi)存字變量。 試比較下列指令中源操作數(shù)的尋址方式(試比較下列指令中源操作數(shù)的尋址方式(VARWVARW是內(nèi)存字

16、是內(nèi)存字變量):變量): MOVAX, 1234H MOVAX, 1234H 前者是立即尋址,后者是直接尋址前者是立即尋址,后者是直接尋址 MOVAX, VARW MOVAX, VARW 兩者是等效的,均為直接尋址兩者是等效的,均為直接尋址 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計4. 寄存器間接尋址方式寄存器間接尋址方式定定 義:義:,操作數(shù)的有效地址操作數(shù)的有效地址用用SI、DI、BX和和BP等四個寄存器之一來指定,稱這種尋址方式為寄存等四個寄存器之一來指定,稱這種尋址方式為寄存器間接尋址方式。器間接尋址方式。 匯編格式

17、:匯編格式:R功功 能:能:操作數(shù)存放在存儲器,寄存器操作數(shù)存放在存儲器,寄存器R存放操作數(shù)的偏移存放操作數(shù)的偏移地址地址EA。圖形表示:圖形表示:EA寄存器寄存器操作數(shù)操作數(shù)存儲器存儲器段基地址段基地址基址或變址寄存器基址或變址寄存器指令指令 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計【例例3.4】假設(shè)有指令:假設(shè)有指令:MOV BX, DI,在執(zhí)行時,(,在執(zhí)行時,(DS)=1000H,(,(DI)=2345H,存儲單元,存儲單元12345H的內(nèi)容是的內(nèi)容是4354H。問。問執(zhí)行指令后,執(zhí)行指令后,BX的值是什么?的值是什

18、么?解:寄存器解:寄存器DI的值不是操作數(shù),而是操作數(shù)的地址。的值不是操作數(shù),而是操作數(shù)的地址。該操作數(shù)的物理地址應(yīng)由該操作數(shù)的物理地址應(yīng)由DS和和DI的值形成,即:的值形成,即: 所以,該指令的執(zhí)行效果是:所以,該指令的執(zhí)行效果是:把從物理地址為把從物理地址為12345H開始的開始的一個字的值傳送給一個字的值傳送給BX。 OP CS DS54H43H 10000H 12345H DS:1000HDI:2345H 12345H43 54 BX 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計在不使用段超越前綴的情況下,有下列規(guī)定:在

19、不使用段超越前綴的情況下,有下列規(guī)定: v若有效地址用若有效地址用SI、DI和和BX等之一來指定,則其缺省的段寄存等之一來指定,則其缺省的段寄存器為器為DS;v若有效地址用若有效地址用BP來指定,則其缺省的段寄存器為來指定,則其缺省的段寄存器為SS(即:堆(即:堆棧段)。棧段)。該尋址方式物理地址的計算方法如下:該尋址方式物理地址的計算方法如下: 或或 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計5. 寄存器相對尋址方式寄存器相對尋址方式定定 義:義:操作數(shù)在存儲器中,其有效地址是一個基址寄存器操作數(shù)在存儲器中,其有效地址是一個

20、基址寄存器(BX、BP)或變址寄存器或變址寄存器(SI、DI)的內(nèi)容和指令中的的內(nèi)容和指令中的8位位/16位偏移量之和。位偏移量之和。 匯編格式:匯編格式:XR(X表示位移量,是表示位移量,是8位或位或16位二進(jìn)制補(bǔ)碼表示位二進(jìn)制補(bǔ)碼表示的有符號數(shù))的有符號數(shù))功功 能:能:操作數(shù)存放在存儲器,寄存器操作數(shù)存放在存儲器,寄存器R的內(nèi)容加位移量的內(nèi)容加位移量X為為操作數(shù)的偏移地址操作數(shù)的偏移地址EA。圖形表示如下:圖形表示如下:地址地址寄存器寄存器操作數(shù)操作數(shù)存儲器存儲器段基地址段基地址基址或變址寄存器基址或變址寄存器 位移量位移量指令指令EA 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與

21、計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計【例例3.5】假設(shè)指令:假設(shè)指令:MOV BX, SI+100H,在執(zhí)行它時,(,在執(zhí)行它時,(DS)=1000H,(,(SI)=2345H,內(nèi)存單元,內(nèi)存單元12445H的內(nèi)容為的內(nèi)容為2715H,問該指,問該指令執(zhí)行后,令執(zhí)行后,BX的值是什么?的值是什么?解:解:EA=(SI)+100H=2345H+100H=2445H PA=(DS)*16+EA=1000H*16+2445H=12445H。所以,該指令的執(zhí)行效果是:所以,該指令的執(zhí)行效果是:把從物理地址為把從物理地址為12445H開始開始的一個字的值傳送給的一個字的值傳送給B

22、X。OP CS DS15H27H 10000H 12445H SI:2345H 100H EA:2445H DS:1000H 12445H27 15 BX 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計6. 基址變址尋址方式基址變址尋址方式定定 義:義:操作數(shù)在存儲器中,其有效地址是一個基址寄存器操作數(shù)在存儲器中,其有效地址是一個基址寄存器(BX、BP)和一個變址寄存器和一個變址寄存器(SI、DI)的內(nèi)容之和。的內(nèi)容之和。 匯編格式:匯編格式: BR+IR功功 能:能:操作數(shù)存放在存儲器,操作數(shù)存放在存儲器,BR的內(nèi)容加的內(nèi)容加I

23、R的內(nèi)容是操作數(shù)的偏移地的內(nèi)容是操作數(shù)的偏移地址址EA。圖形表示:圖形表示:操作數(shù)操作數(shù) 存儲器存儲器段基地址段基地址基址寄存器基址寄存器 變址寄存器變址寄存器指令指令基址值基址值基址寄存器基址寄存器變址值變址值變址寄存器變址寄存器EA 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計【例例3.6】假設(shè)指令:假設(shè)指令:MOV BX, BX+SI,在執(zhí)行時,(,在執(zhí)行時,(DS)=1000H,(,(BX)=2100H,(,(SI)=0011H,內(nèi)存單元,內(nèi)存單元12111H的內(nèi)容為的內(nèi)容為1234H。問該指令執(zhí)行后,。問該指令執(zhí)行后,

24、BX的值是什么?的值是什么? 解:操作數(shù)的物理地址解:操作數(shù)的物理地址PA為:為: PA=(DS)*16+ (BX)+(SI) =1000H*16+ 2100H+0011H =12111H所以,該指令的執(zhí)行效果是:所以,該指令的執(zhí)行效果是:把從物理地址為把從物理地址為12111H開始開始的一個字的值傳送給的一個字的值傳送給BX。 OP CS DS34H12H 10000H 12111H BX:2100H SI:0011H EA:2111H DS:1000H 12111H12 34 BX 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)

25、計7. 相對基址變址尋址方式相對基址變址尋址方式定定 義:義:操作數(shù)在存儲器中,其有效地址是一個基址寄存器操作數(shù)在存儲器中,其有效地址是一個基址寄存器(BX、BP)的的值、一個變址寄存器值、一個變址寄存器(SI、DI)的值和指令中的的值和指令中的8位位/16位偏移量之和。位偏移量之和。 匯編格式:匯編格式:X BR+IR功功 能:能:操作數(shù)存放在存儲器,操作數(shù)存放在存儲器,BR內(nèi)容加內(nèi)容加IR內(nèi)容加位移量內(nèi)容加位移量X是操作數(shù)的偏是操作數(shù)的偏移地址移地址EA。圖形表示:圖形表示:存儲器存儲器基址值基址值基址寄存器基址寄存器操作數(shù)操作數(shù)段基地址段基地址基址寄存器基址寄存器 變址寄存器變址寄存器

26、位移量位移量指令指令變址值變址值變址寄存器變址寄存器EA 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計【例例3.7】假設(shè)指令:假設(shè)指令:MOV AX, BX+SI+200H,在執(zhí)行時,(,在執(zhí)行時,(DS)=1000H,(,(BX)=2100H,(,(SI)=0010H,內(nèi)存單元,內(nèi)存單元12310H的內(nèi)容的內(nèi)容為為1234H。問該指令執(zhí)行后,。問該指令執(zhí)行后,AX的值是什么?的值是什么? 解:該操作數(shù)的物理地址應(yīng)由解:該操作數(shù)的物理地址應(yīng)由DS和和EA的值形成,即:的值形成,即:PA=12310H所以,該指令的執(zhí)行效果是:所以

27、,該指令的執(zhí)行效果是:把從物理地址為把從物理地址為12310H開始開始的一個字的值傳送給的一個字的值傳送給AX。 OP CS DS34H12H 10000H 12310H BX:2100H SI:0010H 0200H EA:2310H DS:1000H 12310H12 34 AX 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計v跨段越問題跨段越問題 凡是使用寄存器為凡是使用寄存器為BX、SI、DI時,其默認(rèn)段為時,其默認(rèn)段為DS,使用,使用BP時,默認(rèn)段時,默認(rèn)段為為SS。該規(guī)定為系統(tǒng)默認(rèn)狀態(tài)。當(dāng)要否定默認(rèn)狀態(tài),到非約定段尋找

28、操作數(shù)。該規(guī)定為系統(tǒng)默認(rèn)狀態(tài)。當(dāng)要否定默認(rèn)狀態(tài),到非約定段尋找操作數(shù)時,必須用跨段前綴指明操作數(shù)的段寄存器名。時,必須用跨段前綴指明操作數(shù)的段寄存器名。匯編格式:匯編格式:功能:功能:冒號冒號“:”之前的段寄存器名指明操作數(shù)所在的段。之前的段寄存器名指明操作數(shù)所在的段?!纠?.8】 MOV AX,DS:BP MOV CX,SS:SI 該例中,該例中,DS:,:,SS:均為跨段前綴,此時默認(rèn)狀態(tài)無效,操作數(shù)的物:均為跨段前綴,此時默認(rèn)狀態(tài)無效,操作數(shù)的物理地址理地址PA由段寄存器內(nèi)容左移由段寄存器內(nèi)容左移4位加偏移位加偏移EA形成。上述形成。上述2條指令的源操作數(shù)條指令的源操作數(shù)物理地址分別為

29、:物理地址分別為: PA1 =(DS)左移)左移4位位+BP PA2 =(SS)左移)左移4位位+ SI 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計3.1.2 與轉(zhuǎn)移地址有關(guān)的尋址方式與轉(zhuǎn)移地址有關(guān)的尋址方式 用來確定轉(zhuǎn)移指令及轉(zhuǎn)子(用來確定轉(zhuǎn)移指令及轉(zhuǎn)子(call)指令的轉(zhuǎn)向地址。轉(zhuǎn)移)指令的轉(zhuǎn)向地址。轉(zhuǎn)移地址是由各種尋址方式得到的有效地址和段地址相加而成的,地址是由各種尋址方式得到的有效地址和段地址相加而成的,有效地址存入有效地址存入IP寄存器中,段地址指定為寄存器中,段地址指定為CS段寄存器內(nèi)容。段寄存器內(nèi)容。 段內(nèi)尋址

30、段內(nèi)尋址 段內(nèi)直接尋址段內(nèi)直接尋址 段內(nèi)間接尋址段內(nèi)間接尋址 段間尋址段間尋址 段間直接尋址段間直接尋址 段間間接尋址段間間接尋址 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計(1) 段內(nèi)直接尋址段內(nèi)直接尋址轉(zhuǎn)向的有效地址轉(zhuǎn)向的有效地址 = 當(dāng)前(當(dāng)前(IP) + 位移量(位移量(8bit/16bit) 位移量位移量IP寄存器寄存器EA 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計【例例3.8】 (1)JMP SHORT QUEST 其中其中QUEST表示轉(zhuǎn)移的符

31、號地址,操作符表示轉(zhuǎn)移的符號地址,操作符SHORT表示是個表示是個8位帶符號數(shù),數(shù)的范圍是位帶符號數(shù),數(shù)的范圍是80H 7FH,即,即 -128 +127。它只能。它只能相對于當(dāng)前相對于當(dāng)前IP(轉(zhuǎn)移指令的下一條指令的首地址)所指的位置作(轉(zhuǎn)移指令的下一條指令的首地址)所指的位置作-128 +127范圍內(nèi)跳轉(zhuǎn),所以稱為范圍內(nèi)跳轉(zhuǎn),所以稱為。(2)JMP NEAR PTR PROGA 其中其中PROGA表示轉(zhuǎn)移的符號地址,操作符表示轉(zhuǎn)移的符號地址,操作符NEAR PRT表示表示是個是個16位帶符號數(shù),數(shù)的范圍是位帶符號數(shù),數(shù)的范圍是8000H 7FFFH,即,即 -32768 +32767。它只

32、能相對于當(dāng)前。它只能相對于當(dāng)前IP所指的位置作所指的位置作-32768 +32767范圍范圍內(nèi)跳轉(zhuǎn),所以稱為內(nèi)跳轉(zhuǎn),所以稱為近跳轉(zhuǎn)近跳轉(zhuǎn)。 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計(2) 段內(nèi)間接尋址段內(nèi)間接尋址 轉(zhuǎn)向的有效地址是一個寄存器或存儲單元的內(nèi)容??捎棉D(zhuǎn)向的有效地址是一個寄存器或存儲單元的內(nèi)容。可用除立即數(shù)以外的任何一種數(shù)據(jù)尋址方式得到,所得到的轉(zhuǎn)向除立即數(shù)以外的任何一種數(shù)據(jù)尋址方式得到,所得到的轉(zhuǎn)向的有效地址取代的有效地址取代IP寄存器的內(nèi)容。寄存器的內(nèi)容。轉(zhuǎn)向的有效地址轉(zhuǎn)向的有效地址指令指令數(shù)據(jù)尋址方式數(shù)據(jù)尋址

33、方式或或根據(jù)數(shù)據(jù)尋址根據(jù)數(shù)據(jù)尋址方式計算出方式計算出EA值值轉(zhuǎn)向的有效地址轉(zhuǎn)向的有效地址存儲單元存儲單元 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計 【例例3.9】 已知已知 TABLE=20A2H ,(,(BX)=1256H ,(,(SI)=528EH,(DS)=2000H ,(,(232F8H)= 3280H ,(,(264E4H)=2450H JMP BX ; (IP)=1256H JMP WORD PTR TABLEBX ; (IP)=3280H JMP WORD PTR BXSI ; (IP)=2450H 寧夏師范學(xué)

34、院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計(3) 段間直接尋址段間直接尋址用指令中提供的轉(zhuǎn)向段地址和偏移地址取代用指令中提供的轉(zhuǎn)向段地址和偏移地址取代CS 和和 IP。指令指令偏移地址偏移地址IP寄存器寄存器段地址段地址CS寄存器寄存器 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計【例例3.9】JMPFAR PTR NEXTROUNT32EA01001010CS=0000H CS0000002000 IPIP=2000H CSCS=1000HNEXTROUNTIP=013

35、2H1013210000新新IP新新CS 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計(4) 段間間接尋址段間間接尋址用存儲器中的兩個相繼字的內(nèi)容取代用存儲器中的兩個相繼字的內(nèi)容取代CS 和和 IP,存儲,存儲單元的地址可用存儲器尋址方式得到。單元的地址可用存儲器尋址方式得到。 指令指令數(shù)據(jù)尋址方式數(shù)據(jù)尋址方式根據(jù)數(shù)據(jù)尋址根據(jù)數(shù)據(jù)尋址方式計算出方式計算出EA值值轉(zhuǎn)向的有效地址轉(zhuǎn)向的有效地址轉(zhuǎn)向的有效地址轉(zhuǎn)向的有效地址存儲器中的兩個相繼字存儲器中的兩個相繼字IPCS 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系

36、田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計【例例3.10】 JMPDWORD PTR INTERS+BX 如如DS=3000H,BX=1200H,INTERS=0020H, 則存儲單元的物理地址則存儲單元的物理地址PA=30000+0020+1200=31200H 指令執(zhí)行前,指令執(zhí)行前,CS=0000H,IP=1000H,(,(31220H)=40H, (31221)=01H,(,(31222H)=00H,(,(31223)=10H。 指令執(zhí)行后,指令執(zhí)行后,CS=1000H,IP=0140H,(,(31220H)=40H, (31221)=01H,(,(31222H)=00H,(,(3

37、1223)=10H。 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計指令存儲和執(zhí)行情況:指令存儲和執(zhí)行情況:JMPDWORDPTRINTERBXCS=0000H CS0000001000 IPIP=1000H CSCS=1000H IPIP=0140H1014010000代碼段代碼段01400010DS=3000H DS3000031220INTER+BX數(shù)據(jù)段數(shù)據(jù)段新新IP新新CS312213122231223 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計3.2

38、程序占有的空間和執(zhí)行時間程序占有的空間和執(zhí)行時間 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計3. 80 x86的指令系統(tǒng)的指令系統(tǒng)80X86指令系統(tǒng)分為以下指令系統(tǒng)分為以下6組:組: 在學(xué)習(xí)匯編指令時,指令的功能是我們學(xué)習(xí)和掌握的重點,但在學(xué)習(xí)匯編指令時,指令的功能是我們學(xué)習(xí)和掌握的重點,但要準(zhǔn)確、有效地運(yùn)用這些指令,我們還要熟悉系統(tǒng)對每條指令的一要準(zhǔn)確、有效地運(yùn)用這些指令,我們還要熟悉系統(tǒng)對每條指令的一些規(guī)定或約束。因此,對指令要掌握以下幾個方面內(nèi)容:些規(guī)定或約束。因此,對指令要掌握以下幾個方面內(nèi)容: 寧夏師范學(xué)院寧夏師范學(xué)

39、院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令。它相對于高級語言里的賦值語句。它相對于高級語言里的賦值語句。 :MOV PUSH POP : IN OUT XLAT: LEA LDS LES: LAHF SAHF PUSHF POPF:CBW CWD 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計vMOV 傳送指令傳送指令格格 式:式: 其中:其中:RegRegister(寄存器),(寄存器),MemMemory(存儲器),(存儲器),ImmImmediate(立

40、即數(shù)),它們(立即數(shù)),它們可以是可以是8位、位、16位。位。 功功 能:能:指令的功能是指令的功能是把源操作數(shù)(第二操作數(shù))的值傳給目把源操作數(shù)(第二操作數(shù))的值傳給目的操作數(shù)(第一操作數(shù))。的操作數(shù)(第一操作數(shù))。指令執(zhí)行后,目的操作數(shù)的值被改變,指令執(zhí)行后,目的操作數(shù)的值被改變,而源操作數(shù)的值不變。在存儲單元是該指令的一個操作數(shù)時,該而源操作數(shù)的值不變。在存儲單元是該指令的一個操作數(shù)時,該操作數(shù)的尋址方式可以是任意一種存儲單元尋址方式。操作數(shù)的尋址方式可以是任意一種存儲單元尋址方式。 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程

41、序設(shè)計段寄存器段寄存器CS、DS、SS、ES通用寄存器通用寄存器8位或者位或者16位位存儲器存儲器立即數(shù)立即數(shù)8位或者位或者16位位 在匯編語言中,主要的數(shù)據(jù)傳送方式如下圖所在匯編語言中,主要的數(shù)據(jù)傳送方式如下圖所示。雖然一條示。雖然一條MOV指令能實現(xiàn)其中大多數(shù)的數(shù)據(jù)傳指令能實現(xiàn)其中大多數(shù)的數(shù)據(jù)傳送方式,但也存在送方式,但也存在MOV指令不能實現(xiàn)的傳送方式。指令不能實現(xiàn)的傳送方式。 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計 對對MOV指令有以下幾條具體規(guī)定,其中有些規(guī)定對其它指令指令有以下幾條具體規(guī)定,其中有些規(guī)定對其它指

42、令也同樣有效。也同樣有效。 (1),要同為,要同為8位、位、16位,位, 如:如:MOV BL,AX等是不正確的;等是不正確的; (2),如:,如:MOV ES,DS等;等; (3), 如:指令如:指令MOV CS, AX等不正確,但指令等不正確,但指令MOV AX,CS等等是正確的;是正確的; (4), 如:如:MOV DS,100H等;等; (5),如:,如:MOV 100H,AX等;等; (6); (7), 如:如:MOV VARA,VARB等,其中等,其中VARA和和VARB是同數(shù)據(jù)是同數(shù)據(jù)類型的內(nèi)存變量。類型的內(nèi)存變量。 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系

43、 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計vPUSH進(jìn)棧指令進(jìn)棧指令 堆棧是一個重要的數(shù)據(jù)結(jié)構(gòu),它具有堆棧是一個重要的數(shù)據(jù)結(jié)構(gòu),它具有“先進(jìn)后出先進(jìn)后出”的特點,的特點,通常用來保存程序的返回地址通常用來保存程序的返回地址。它主要有兩。它主要有兩大類操作:大類操作:進(jìn)棧操作和出棧操作進(jìn)棧操作和出棧操作。 指令格式:指令格式: 一個字進(jìn)棧,系統(tǒng)自動完成兩步操作:一個字進(jìn)棧,系統(tǒng)自動完成兩步操作: SPSP-2,(,(SP)操作數(shù)操作數(shù); 功功 能:能:將寄存器、段寄存器或存儲器中的一將寄存器、段寄存器或存儲器中的一個字?jǐn)?shù)據(jù)壓入堆棧,堆棧指針減個字?jǐn)?shù)據(jù)壓入堆棧,堆棧指針減2。 寧夏師范學(xué)院寧

44、夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計【例例】PUSH AX2816A7SS=5000H SS50000堆棧段堆棧段525005250152502SP=2500H SP31 25AX283116A7SS=5000H SS50000堆棧段堆棧段525005250152502SP=24FEH SP2531 25AX525FF525FE(1)執(zhí)行前)執(zhí)行前(2)執(zhí)行后)執(zhí)行后 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計vPOP進(jìn)棧指令進(jìn)棧指令: 彈出一個字,系統(tǒng)自動完成兩步操

45、作:彈出一個字,系統(tǒng)自動完成兩步操作: ; :將棧頂元素彈出送至某一寄存器、段寄將棧頂元素彈出送至某一寄存器、段寄存器(除存器(除CS外)或存儲器,堆棧指針加外)或存儲器,堆棧指針加2。 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計【例例】POP BX(1)執(zhí)行前)執(zhí)行前(2)執(zhí)行后)執(zhí)行后486B9A28 SS50000堆棧段堆棧段510015100251003SP=1000H SP75 C1BX51000486B9A28 SS50000堆棧段堆棧段510015100251003SP=1002H SP48 6BBX51000

46、寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計vIN輸入指令輸入指令 輸入指令用來輸入指令用來。它有幾種形式:。它有幾種形式: 長格式:長格式: 執(zhí)行操作:(執(zhí)行操作:(AL) (PORT) (字節(jié))(字節(jié)) (AX) (PORT+1, PORT)(字)(字) 短格式:短格式: 執(zhí)行操作:(執(zhí)行操作:(AL)(DX) (字節(jié))(字節(jié)) (AX)(DX)+1,(DX)(字)(字) 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計 注意:注意:該指令的作用是從端口中讀入一個

47、字節(jié)該指令的作用是從端口中讀入一個字節(jié)或字,并保存在寄存器或字,并保存在寄存器AL或或AX中。中。DX中,然后在指令中由中,然后在指令中由DX來來給出其端口地址。給出其端口地址。 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計例如:例如: ;從端口;從端口60H讀入一個字節(jié)到讀入一個字節(jié)到AL中中;把端口;把端口20H、21H按按“高高低低高高低低”組成組成的的 字讀入字讀入AX;從端口;從端口2F8H讀入一個字節(jié)到讀入一個字節(jié)到AL中中;把端口;把端口2F8H、2F9H按按“高高低低高高低低”組組成成 的字讀入的字讀入AX 寧夏

48、師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計vOUT輸出指令輸出指令 輸出指令用來輸出指令用來,它有幾,它有幾種形式:種形式:v長格式:長格式: (字節(jié))(字節(jié)) (字)(字) 執(zhí)行操作:執(zhí)行操作: (字節(jié))(字節(jié)) 字)字)v短格式:短格式: (字節(jié))(字節(jié)) (字)(字) 執(zhí)行操作:執(zhí)行操作: (字節(jié))(字節(jié)) 字)字) 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計注意:注意:該指令的作用是把寄存器該指令的作用是把寄存器AL或或AX的內(nèi)容輸出到指定端口。的內(nèi)容輸出

49、到指定端口。如果某輸出設(shè)備的端口地址在如果某輸出設(shè)備的端口地址在0255范圍之內(nèi),那么,可在指令范圍之內(nèi),那么,可在指令OUT中直接給出,否則,要把該端口地址先存入寄存器中直接給出,否則,要把該端口地址先存入寄存器DX中,中,然后在指令中由然后在指令中由DX來給出其端口地址。來給出其端口地址。例如:例如:;把;把AL的內(nèi)容輸出到端口的內(nèi)容輸出到端口61H中中;把;把AX的內(nèi)容輸出到端口的內(nèi)容輸出到端口20H、21H中中;把;把AL的內(nèi)容輸出到端口的內(nèi)容輸出到端口3C0H中中;把;把AX的內(nèi)容輸出到端口的內(nèi)容輸出到端口3C0H、3C1H中中 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算

50、機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計vXLAT 換碼指令換碼指令轉(zhuǎn)換指令有轉(zhuǎn)換指令有BX和和AL。: 或或 : :其功能是:其功能是把把BX的值作為內(nèi)存字節(jié)數(shù)的值作為內(nèi)存字節(jié)數(shù)組首地址、下標(biāo)為組首地址、下標(biāo)為AL的數(shù)組元素的值傳送給的數(shù)組元素的值傳送給AL。 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計n例:例: ; (BX)=0040H 指令執(zhí)行后指令執(zhí)行后 (AL)=33H32H31H33HDS=F000H DS數(shù)據(jù)段數(shù)據(jù)段F0040F0041 (AL)=3table30H (BX)F0042F0043把

51、把BX的值作為內(nèi)存字的值作為內(nèi)存字節(jié)數(shù)組首地址、下標(biāo)節(jié)數(shù)組首地址、下標(biāo)為為AL的數(shù)組元素的值的數(shù)組元素的值傳送給傳送給AL。 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計v地址傳送指令地址傳送指令取有效地址指令取有效地址指令LEA: 指令指令LEA是是。其指令格式如下:。其指令格式如下: 該指令該指令通常用來對通常用來對指針或變址寄存器指針或變址寄存器BX、DI或或SI等置初值之用等置初值之用。 取取段寄存器指令:段寄存器指令: 該組指令的功能是該組指令的功能是。其指令格式如下:。其指令格式如下: 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)

52、與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計例:例: 40 H00 H00 H30 H TABLE 3000H:1000H 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計v標(biāo)志寄存器傳送指令標(biāo)志寄存器傳送指令標(biāo)志送標(biāo)志送AH指令:指令: LAHF 執(zhí)行操作:(執(zhí)行操作:(AH)(FLAGS的低字節(jié)的低字節(jié)) AH送標(biāo)志寄存器指令:送標(biāo)志寄存器指令:SAHF執(zhí)行操作:執(zhí)行操作: (FLAGS的低字節(jié))的低字節(jié))(AH) 標(biāo)志進(jìn)棧指令:標(biāo)志進(jìn)棧指令:PUSHF 執(zhí)行操作:執(zhí)行操作: (SP)(SP)

53、 - 2 (SP)+1, (SP)(FLAGS)標(biāo)志出棧標(biāo)志出棧指令:指令:POPF執(zhí)行操作:執(zhí)行操作: (FLAGS)(SP)+1,(SP) (SP)(SP)+ 2 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計v類型轉(zhuǎn)換指令指令類型轉(zhuǎn)換指令指令 CBW AL AX 執(zhí)行操作:執(zhí)行操作: CWD AX (DX,AX) 執(zhí)行操作:執(zhí)行操作: 例例: CBW ; (AX)=0045H CWD ; (DX)=0FFFFH (AX)=0BA45H 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序

54、設(shè)計匯編語言程序設(shè)計3.算術(shù)指令算術(shù)指令 算術(shù)運(yùn)算指令是反映算術(shù)運(yùn)算指令是反映CPU計算能力的一組指令,也是編程時常計算能力的一組指令,也是編程時常使用的一組指令。它包括:加、減、乘、除及其相關(guān)的輔助指令。使用的一組指令。它包括:加、減、乘、除及其相關(guān)的輔助指令。 該組指令的操作數(shù)可以是該組指令的操作數(shù)可以是8位、位、16位。當(dāng)存儲單元是該類指令的操位。當(dāng)存儲單元是該類指令的操作數(shù)時,作數(shù)時,。v 加法指令加法指令 ADD、ADC、INCv 減法指令減法指令 SUB、SBB、DEC、NEG、CMPv 乘法指令乘法指令 MUL、IMUL v 除法指令除法指令 DIV、IDIVv 十進(jìn)制調(diào)整指令十

55、進(jìn)制調(diào)整指令 DAA、DAS、 AAA、AAS、AAM、AAD 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計1. .加法指令加法指令 v 加法指令:加法指令: ADD DST,SRC功能:將目的操作數(shù)與源操作數(shù)相加,結(jié)果存入目的地址中,源地功能:將目的操作數(shù)與源操作數(shù)相加,結(jié)果存入目的地址中,源地址的內(nèi)容不改變。址的內(nèi)容不改變。執(zhí)行操作:執(zhí)行操作:(DST) (SRC)+(DST)v 帶進(jìn)位加法指令:帶進(jìn)位加法指令: ADC DST,SRC 功能:將目的操作數(shù)加源操作數(shù)再加低位進(jìn)位,結(jié)果送目的地址。功能:將目的操作數(shù)加源操作數(shù)再

56、加低位進(jìn)位,結(jié)果送目的地址。執(zhí)行操作:執(zhí)行操作:(DST) (SRC)+(DST)+ CFv 加加1指令:指令: INC OPR 功能:將目的操作數(shù)加功能:將目的操作數(shù)加1,結(jié)果送目的地址。,結(jié)果送目的地址。執(zhí)行操作:執(zhí)行操作: (OPR) (OPR)+ 1注意注意: 除除INC指令指令不影響不影響CF標(biāo)志外,均對條件標(biāo)志位有影響。標(biāo)志外,均對條件標(biāo)志位有影響。 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計v 標(biāo)志寄存器標(biāo)志寄存器FLAGS的介紹的介紹指令的執(zhí)行與標(biāo)志有很大關(guān)系。指令的執(zhí)行與標(biāo)志有很大關(guān)系。標(biāo)志分成兩類:標(biāo)志分成

57、兩類:n 狀態(tài)標(biāo)志狀態(tài)標(biāo)志用來記錄程序運(yùn)行結(jié)果的狀態(tài)信息,許多指令的用來記錄程序運(yùn)行結(jié)果的狀態(tài)信息,許多指令的執(zhí)行都將相應(yīng)地設(shè)置它。它們分別是:執(zhí)行都將相應(yīng)地設(shè)置它。它們分別是: CF ZF SF PF OF AFn 控制標(biāo)志控制標(biāo)志可由程序根據(jù)需要用指令設(shè)置,用于控制處理器可由程序根據(jù)需要用指令設(shè)置,用于控制處理器執(zhí)行指令的方式。它們分別是:執(zhí)行指令的方式。它們分別是: DF IF TF 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0OF DF IF TF SF ZF AF PF CF 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山

58、匯編語言程序設(shè)計匯編語言程序設(shè)計 當(dāng)運(yùn)算結(jié)果的最高有效位有進(jìn)位(加法)或借位當(dāng)運(yùn)算結(jié)果的最高有效位有進(jìn)位(加法)或借位(減法)時,進(jìn)位標(biāo)志置(減法)時,進(jìn)位標(biāo)志置1,即,即CF = 1;否則;否則CF = 0。 例如:例如: 3AH + 7CHB6H,沒有進(jìn)位:,沒有進(jìn)位:CF = 0 AAH + 7CH(1)26H,有進(jìn)位:,有進(jìn)位:CF = 1 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計若運(yùn)算結(jié)果為若運(yùn)算結(jié)果為0,則,則ZF = 1,否則,否則ZF = 0。例如:例如: 3AH + 7CHB6H,結(jié)果不是零:,結(jié)果不是零:

59、ZF = 0 86H + 7CH(1)00H,結(jié)果是零:,結(jié)果是零:ZF = 1注意:注意:ZF為為1表示的結(jié)果是表示的結(jié)果是0。 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計 運(yùn)算結(jié)果最高位為運(yùn)算結(jié)果最高位為1,則,則SF = 1;否則;否則SF = 0。例如:例如: 3AH + 7CHB6H,最高位,最高位D71:SF = 1 86H + 7CH(1)00H,最高位,最高位D70:SF = 0注意:有符號數(shù)據(jù)利用最高有效位表示數(shù)據(jù)的符號。所注意:有符號數(shù)據(jù)利用最高有效位表示數(shù)據(jù)的符號。所以,最高有效位就是符號標(biāo)志的狀態(tài)。以,

60、最高有效位就是符號標(biāo)志的狀態(tài)。 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯編語言程序設(shè)計匯編語言程序設(shè)計 當(dāng)運(yùn)算結(jié)果最低字節(jié)中當(dāng)運(yùn)算結(jié)果最低字節(jié)中“1”的個數(shù)為零或偶數(shù)時,的個數(shù)為零或偶數(shù)時,PF = 1;否則;否則PF = 0。例如:例如: 3AH + 7CHB6H10110110B, 結(jié)果中有結(jié)果中有5個個1,是奇數(shù):是奇數(shù):PF = 0注意:注意:PF標(biāo)志僅反映最低標(biāo)志僅反映最低8位中位中“1”的個數(shù)是偶或奇,即的個數(shù)是偶或奇,即使是進(jìn)行使是進(jìn)行16位字操作。位字操作。 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系數(shù)學(xué)與計算機(jī)科學(xué)系 田彥山田彥山 匯

溫馨提示

  • 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

提交評論