微機原理與接口技術(樓順天)-第3章2_第1頁
微機原理與接口技術(樓順天)-第3章2_第2頁
微機原理與接口技術(樓順天)-第3章2_第3頁
微機原理與接口技術(樓順天)-第3章2_第4頁
微機原理與接口技術(樓順天)-第3章2_第5頁
已閱讀5頁,還剩56頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、3.2 80863.2 8086指令分類指令分類指令系統(tǒng)指令系統(tǒng)是指是指CPUCPU能完成的所有指令的集合,能完成的所有指令的集合,它是在它是在CPUCPU設計時就確定了的。設計時就確定了的。8088/8086 CPU8088/8086 CPU的指令系統(tǒng)可分成下面的指令系統(tǒng)可分成下面1313類:類:(1 1)數(shù)據(jù)傳送指令;)數(shù)據(jù)傳送指令;(2 2)算術運算指令;)算術運算指令;(3 3)邏輯運算指令;)邏輯運算指令;(4 4)移位指令;)移位指令;3.2 80863.2 8086指令分類指令分類(5 5)標志位操作指令;)標志位操作指令;(6 6)轉移指令)轉移指令(7 7)循環(huán)控制指令;)循

2、環(huán)控制指令;(8 8)子程序調用和返回指令;)子程序調用和返回指令;(9 9)中斷調用和返回指令;)中斷調用和返回指令;(1010)字符串操作指令;)字符串操作指令;3.2 80863.2 8086指令分類指令分類(1111)輸入、輸出指令)輸入、輸出指令(1212)其它指令)其它指令(1313)宏指令)宏指令3.2 80863.2 8086指令分類指令分類先簡要介紹用到的各種符號先簡要介紹用到的各種符號: :3.2 80863.2 8086指令分類指令分類符符 號號英文原文英文原文含含 義義OPRoperands表示一個操作數(shù)表示一個操作數(shù)SRCSource表示源操作數(shù)表示源操作數(shù)DSTDe

3、stination表示目的操作數(shù)表示目的操作數(shù)REGRegister表示一個寄存器表示一個寄存器REGnRegister with n bits表示一個表示一個n位寄存器位寄存器MEMMEMory表示一個存儲單元表示一個存儲單元CNTCounter表示計數(shù)值表示計數(shù)值LABELLabel標號或過程名標號或過程名PORT8Port address with 8 bits8位端口地址位端口地址DISPnDisplace with n bits表示表示n位的偏移量位的偏移量EAEffective Address表示有效地址,即段內偏移地址表示有效地址,即段內偏移地址SEGSegment Addres

4、s表示段地址表示段地址IDATAIm data表示立即數(shù)表示立即數(shù)XMoving表示數(shù)據(jù)的傳表示數(shù)據(jù)的傳送送Exchange表示數(shù)據(jù)的交表示數(shù)據(jù)的交換換()表示取表示取的的內內容容And 表示進行邏輯表示進行邏輯與操作與操作Or表示進行邏輯表示進行邏輯或操作或操作Xor表示進行邏輯表示進行邏輯異或操作異或操作3.3 3.3 數(shù)據(jù)與轉移地址的尋址方式數(shù)據(jù)與轉移地址的尋址方式在指令中,用于說明操作數(shù)所在地址的方在指令中,用于說明操作數(shù)所在地址的方法就稱為法就稱為尋址方式尋址方式。8086CPU8086CPU指令系統(tǒng)的尋址方式分為兩類:指令系統(tǒng)的尋址方式分為兩類: 數(shù)據(jù)的尋址方式數(shù)據(jù)的尋址方式:尋找

5、指令操作所需:尋找指令操作所需數(shù)據(jù)的方法;數(shù)據(jù)的方法;1.1.轉移地址的尋址方式轉移地址的尋址方式:尋找轉移指令:尋找轉移指令所需的程序地址。所需的程序地址。 下面講關于數(shù)據(jù)的尋址方式時,均以數(shù)下面講關于數(shù)據(jù)的尋址方式時,均以數(shù)據(jù)傳送指令據(jù)傳送指令MOVMOV為例講解。為例講解。MOVMOV指令格式如下:指令格式如下:MOV DST , SRCMOV DST , SRC 目的操作數(shù)目的操作數(shù)源操作數(shù)源操作數(shù)助記符助記符指令完成的功能指令完成的功能: (DSTDST) (SRC)(SRC)3.3 3.3 數(shù)據(jù)尋址方式數(shù)據(jù)尋址方式數(shù)據(jù)的尋址方式(共數(shù)據(jù)的尋址方式(共8 8種):種):l立即尋址立即

6、尋址(Immediate Addressing )(Immediate Addressing )l寄存器尋址寄存器尋址(Register Addressing )(Register Addressing )l存儲器尋址存儲器尋址( (Memory AddressingMemory Addressing ) )(5 5種):直種):直接尋址、寄存器間接尋址、寄存器相對尋址、接尋址、寄存器間接尋址、寄存器相對尋址、基址變址尋址和基址變址且相對尋址基址變址尋址和基址變址且相對尋址l隱含尋址隱含尋址(Hidden Addressing )(Hidden Addressing )數(shù)據(jù)的尋址方式就是告訴數(shù)

7、據(jù)的尋址方式就是告訴CPUCPU存存/ /取數(shù)據(jù)的地方。取數(shù)據(jù)的地方。3.3 3.3 數(shù)據(jù)尋址方式數(shù)據(jù)尋址方式1.1.立即尋址立即尋址 操作數(shù)直接存放在指令中,緊跟在操作碼之操作數(shù)直接存放在指令中,緊跟在操作碼之后,作為指令的一部分,存放在代碼段里,這種后,作為指令的一部分,存放在代碼段里,這種操作數(shù)稱為立即數(shù)。操作數(shù)稱為立即數(shù)。 立即尋址主要用來給立即尋址主要用來給REGREG或或M M賦初值。賦初值。注意:注意:只能用于源操作數(shù)字段,不能用于目的操只能用于源操作數(shù)字段,不能用于目的操作數(shù)字段。作數(shù)字段。如:如:MOV 12H , AL (語法錯誤語法錯誤)3.3 3.3 數(shù)據(jù)尋址方式數(shù)據(jù)尋

8、址方式A HA H A LA L A XA XCSCS段段操作碼操作碼存儲器存儲器例:例:MOV AX MOV AX ,1234H1234HB8HB8H34H34H12H12H(AX)=1234H(AX)=1234H3.3 3.3 數(shù)據(jù)尋址方式數(shù)據(jù)尋址方式2.2.寄存器尋址寄存器尋址 數(shù)據(jù)放在指令規(guī)定的寄存器中,對數(shù)據(jù)放在指令規(guī)定的寄存器中,對1616位數(shù)據(jù),位數(shù)據(jù),REGREG可以是可以是AXAX、BXBX、CXCX、DXDX、SISI、DIDI、SPSP、BPBP以及以及段寄存器段寄存器,而對于,而對于8 8位數(shù)據(jù),位數(shù)據(jù), REGREG可以是可以是AHAH、ALAL、BHBH、BLBL、

9、CHCH、CLCL、DHDH、DLDL。 在程序設計中,一般存放數(shù)據(jù)時,寄存器選在程序設計中,一般存放數(shù)據(jù)時,寄存器選擇通用寄存器,而存放結果時盡可能的使用擇通用寄存器,而存放結果時盡可能的使用AXAX累累加器,因為使用加器,因為使用AXAX累加器要比用其它寄存器指令累加器要比用其它寄存器指令執(zhí)行時間要短一些。執(zhí)行時間要短一些。 寄存器尋址既可以作寄存器尋址既可以作DST,DST,也可以作也可以作SRCSRC。3.3 3.3 數(shù)據(jù)尋址方式數(shù)據(jù)尋址方式例:例:MOV AX , BXMOV AX , BXA XA X B XB X 若(若(AXAX)=1234H,(BX)=5678H=1234H,

10、(BX)=5678H,則,則CPUCPU執(zhí)行上條執(zhí)行上條指令后,(指令后,(AXAX)=5678H=5678H,而(,而(BXBX)不變。)不變。 又如:又如:MOV CX , DL MOV CX , DL (語法錯誤語法錯誤) 錯誤原因:類型不一致。錯誤原因:類型不一致。3.3 3.3 數(shù)據(jù)尋址方式數(shù)據(jù)尋址方式 這類尋址方式,操作數(shù)在存儲器中,而這類尋址方式,操作數(shù)在存儲器中,而存儲器單元的地址由以下存儲器單元的地址由以下五種五種尋址方式的任尋址方式的任何一種均可以找到何一種均可以找到。3.3.存儲器尋址存儲器尋址3.3 3.3 數(shù)據(jù)尋址方式數(shù)據(jù)尋址方式 指令中直接給出了要尋找操作數(shù)所在單元

11、的指令中直接給出了要尋找操作數(shù)所在單元的1616位偏移地址。位偏移地址。 操作數(shù)所在單元的物理地址操作數(shù)所在單元的物理地址 : PA (段寄存器段寄存器) 16 +指令中給出的偏移地址指令中給出的偏移地址直接尋址(直接尋址(Direct AddressingDirect Addressing ) 指令中直接給出的操作數(shù)所在單元的指令中直接給出的操作數(shù)所在單元的1616位偏移位偏移地址地址默認在數(shù)據(jù)段。也可以通過增加段前綴來改變默認在數(shù)據(jù)段。也可以通過增加段前綴來改變操作數(shù)所在的段地址。操作數(shù)所在的段地址。3.3 3.3 數(shù)據(jù)尋址方式數(shù)據(jù)尋址方式A XA XCSCS段段操作碼操作碼例例1 1:M

12、OV AX,2000HMOV AX,2000H若若DSDS為為3000H3000H,則:,則:A HA H A LA L 32000H32000H32001H32001H3 0 0 0 0 H3 0 0 0 0 H + +DSDS 存儲器存儲器數(shù)據(jù)段數(shù)據(jù)段20H20H00H00HA1HA1H 2 0 0 0 H 2 0 0 0 H PA=3 2 0 0 0 HPA=3 2 0 0 0 H 3.3 3.3 數(shù)據(jù)尋址方式數(shù)據(jù)尋址方式CSCS段段操作碼操作碼例例2 2:MOV 2000H ,ALMOV 2000H ,AL若若DSDS為為3000H3000H,則:,則:A LA L 32000H320

13、00H3 0 0 0 0 H3 0 0 0 0 H + +DSDS 存儲器存儲器數(shù)據(jù)段數(shù)據(jù)段20H20H00H00H 2 0 0 0 H 2 0 0 0 H PA=3 2 0 0 0 HPA=3 2 0 0 0 H 3.3 3.3 數(shù)據(jù)尋址方式數(shù)據(jù)尋址方式CSCS段段操作碼操作碼例例3 3:MOV ES:2000H ,ALMOV ES:2000H ,AL若若ESES為為2050H2050H,則:,則:A LA L 22500H22500H2 0 5 0 0 H2 0 5 0 0 H + +ESES存儲器存儲器附加數(shù)據(jù)段附加數(shù)據(jù)段20H20H00H00H 2 0 0 0 H 2 0 0 0 H

14、PA=2 2 5 0 0 HPA=2 2 5 0 0 H 前綴碼前綴碼3.3 3.3 數(shù)據(jù)尋址方式數(shù)據(jù)尋址方式 在實際的匯編語言程序設計中,如果程在實際的匯編語言程序設計中,如果程序比較復雜,而用到的存放數(shù)據(jù)的單元又很序比較復雜,而用到的存放數(shù)據(jù)的單元又很多,那么在直接尋址方式當中,用戶就要記多,那么在直接尋址方式當中,用戶就要記住存放數(shù)據(jù)的每個單元的地址,對設計程序住存放數(shù)據(jù)的每個單元的地址,對設計程序帶來了很大的困難。帶來了很大的困難。3.3 3.3 數(shù)據(jù)尋址方式數(shù)據(jù)尋址方式 所以在實際的匯編語言程序設計中,所以在實際的匯編語言程序設計中,常常采用給存放數(shù)據(jù)的單元,定義一個符常常采用給存放

15、數(shù)據(jù)的單元,定義一個符號地址名,即號地址名,即變量名變量名/ /變量變量。變量名一但定義了,就具有了:變量名一但定義了,就具有了:該單元的段地址該單元的段地址該單元的偏移地址該單元的偏移地址類型類型大小大小長度長度五個屬性五個屬性 這樣,在程序設計中就可以用這個變量名這樣,在程序設計中就可以用這個變量名代替原來的存儲器單元的實際地址。代替原來的存儲器單元的實際地址。3.3 3.3 數(shù)據(jù)尋址方式數(shù)據(jù)尋址方式例例4 4:若:若(DS)=1500H,TABLE(DS)=1500H,TABLE為在為在DSDS段定義的一個字變量,段定義的一個字變量,且偏移地址為且偏移地址為0004H0004H。則。則C

16、PUCPU執(zhí)行執(zhí)行 MOV AX ,TABLE MOV AX ,TABLE 指令完指令完成的操作如下:成的操作如下:1 5 0 0 0 H1 5 0 0 0 H + +DSDS存儲器存儲器數(shù)據(jù)段數(shù)據(jù)段 0 0 0 4 H 0 0 0 4 H PA=1 5 0 0 4 HPA=1 5 0 0 4 H A HA H A LA L 15004H15004H15005H15005HTABLETABLE3.3 3.3 數(shù)據(jù)尋址方式數(shù)據(jù)尋址方式例例5 5:若:若VAR1VAR1為字變量,為字變量, VAR2VAR2和和VAR3VAR3為字節(jié)變量,為字節(jié)變量,判斷下列指令的書寫格式是否正確,正確的說出判斷下

17、列指令的書寫格式是否正確,正確的說出SRCSRC和和DSTDST的尋址方式,不正確說出錯誤原因。的尋址方式,不正確說出錯誤原因。 MOV AX , VAR1 MOV AX , VAR1 MOV AX , VAR2 MOV AX , VAR2 MOV VAR2, VAR3 MOV VAR2, VAR3 MOV 0200H ,12H MOV 0200H ,12H3.3 3.3 數(shù)據(jù)尋址方式數(shù)據(jù)尋址方式 SRCSRC為直接尋址為直接尋址 DSTDST為寄存器尋址為寄存器尋址 類型不一致類型不一致 兩存儲器單元之間不兩存儲器單元之間不 能直接傳送數(shù)據(jù)能直接傳送數(shù)據(jù) 類型不明確類型不明確例例6 6:將例

18、:將例5 5中語法不正確的語句改對。中語法不正確的語句改對。 MOV AX , VAR2 MOV AX , VAR2 改:改:MOV AL , VAR2MOV AL , VAR2 MOV VAR2, VAR3 MOV VAR2, VAR3 改:改:MOV AL ,VAR3MOV AL ,VAR3 MOV VAR2 ,AL MOV VAR2 ,AL MOV 0200H ,12H MOV 0200H ,12H 改:改:MOV BYTE PTR 0200H ,12HMOV BYTE PTR 0200H ,12H 或者:或者:MOV WORD PTR 0200H ,12HMOV WORD PTR 02

19、00H ,12H3.3 3.3 數(shù)據(jù)尋址方式數(shù)據(jù)尋址方式 這種尋址方式,要尋找的操作數(shù)在某存儲器這種尋址方式,要尋找的操作數(shù)在某存儲器單元中,該存儲器單元的單元中,該存儲器單元的1616位偏移地址在指令中位偏移地址在指令中以以BXBX、SISI、DIDI某一個寄存器給出。其段地址默認某一個寄存器給出。其段地址默認在在DSDS段。段。SISIDIDIBXBXEAEA=寄存器間接尋址寄存器間接尋址Register Indirect AddressingRegister Indirect Addressing3.3 3.3 數(shù)據(jù)尋址方式數(shù)據(jù)尋址方式例例1 1:MOV AX , BXMOV AX ,

20、BX 其其SRCSRC為寄存器間接尋址;為寄存器間接尋址; DSTDST為寄存器尋址;為寄存器尋址; 指令完成的功能為:指令完成的功能為: (AX) (DS)(AX) (DS):(BX):(BX) ) 若:若:(DS)=3000H , (BX)=1050H(DS)=3000H , (BX)=1050H 則:則:SRCSRC所在單元的物理地址為:所在單元的物理地址為:PA=(DS) PA=(DS) 16+(BX) 16+(BX) =30000H+1050H =30000H+1050H =31050H =31050H3.3 3.3 數(shù)據(jù)尋址方式數(shù)據(jù)尋址方式CSCS段段操作碼操作碼A HA H A

21、LA L 31050H31050H31051H31051H 存儲器存儲器數(shù)據(jù)段數(shù)據(jù)段A XA X8BH8BH07H07H3 0 0 0 0 H3 0 0 0 0 H DS:DS:+ + 1 0 5 0 H 1 0 5 0 H3 1 0 5 0 H3 1 0 5 0 H BX:BX:PA:PA:3.3 3.3 數(shù)據(jù)尋址方式數(shù)據(jù)尋址方式例例2 2:MOV ES:SI , ALMOV ES:SI , AL 指令完成的功能為:指令完成的功能為: (ES):(SI) (AL)(ES):(SI) (AL) 若:若:(ES)=4000H,(SI)=1234H,(AL)=23H(ES)=4000H,(SI)=

22、1234H,(AL)=23H 則:則:DSTDST所在單元的物理地址為:所在單元的物理地址為: PA=(ES)PA=(ES)16+(SI)16+(SI) =40000H+1234H =40000H+1234H =41234H =41234H 指令執(zhí)行后指令執(zhí)行后(41234H)=23H.(41234H)=23H.3.3 3.3 數(shù)據(jù)尋址方式數(shù)據(jù)尋址方式例例3 3:判斷下列指令的書寫格式是否正確,正確的:判斷下列指令的書寫格式是否正確,正確的說出說出SRCSRC和和DSTDST的尋址方式,不正確說出錯誤原因,的尋址方式,不正確說出錯誤原因,并改正。并改正。 MOV BX, SI MOV BX,

23、SI 3.3 3.3 數(shù)據(jù)尋址方式數(shù)據(jù)尋址方式 兩存儲器單元之間不兩存儲器單元之間不 能直接傳送數(shù)據(jù)能直接傳送數(shù)據(jù); ;類型也類型也 不明確。不明確。改正:改正:MOV AL , SIMOV AL , SI MOV BX , AL MOV BX , AL MOV DI ,12H MOV DI ,12H MOV SI ,CX MOV SI ,CX3.3 3.3 數(shù)據(jù)尋址方式數(shù)據(jù)尋址方式 類型不明確類型不明確改正:改正:MOV WORD PTR DI , 12HMOV WORD PTR DI , 12HDSTDST為寄存器間接尋址為寄存器間接尋址SRCSRC為寄存器尋址為寄存器尋址 要尋找的操作數(shù)

24、在某存儲器單元之中,該單元要尋找的操作數(shù)在某存儲器單元之中,該單元的有效地址的一部分在的有效地址的一部分在 中,另一部分為一中,另一部分為一個個 DISPDISP。BPBPSISIBXBXDIDI寄存器相對尋址寄存器相對尋址Register Relative Register Relative Addressing Addressing 8 8位位1616位位其中,其中,DISPDISP相對位移量相對位移量3.3 3.3 數(shù)據(jù)尋址方式數(shù)據(jù)尋址方式EAEA=BPBPSISIBXBXDIDI8 8位位DISPDISP1616位位DISPDISP+ + 在在DISPDISP為常數(shù)時,操作數(shù)所在單元的

25、段地址以為常數(shù)時,操作數(shù)所在單元的段地址以寄存器為準,若寄存器為寄存器為準,若寄存器為BXBX、SISI、DIDI,操作數(shù)默認,操作數(shù)默認在在DSDS段中。若寄存器為段中。若寄存器為BPBP,操作數(shù)默認在,操作數(shù)默認在SSSS段中。段中。 在在DISPDISP為變量時,操作數(shù)所在單元的段地址以為變量時,操作數(shù)所在單元的段地址以變量為準,變量在哪個段定義的,就取該段的段地變量為準,變量在哪個段定義的,就取該段的段地址。址。3.3 3.3 數(shù)據(jù)尋址方式數(shù)據(jù)尋址方式例例1 1:MOV AX , BX+05HMOV AX , BX+05H 其中,其中,SRCSRC也可以寫成:也可以寫成: 若:若:(D

26、S)=2000H , (BX)=0008H, (DS)=2000H , (BX)=0008H, 存放操作存放操作數(shù)單元的物理地址為:數(shù)單元的物理地址為:PA=(DS)PA=(DS)16+(BX)+05H16+(BX)+05H =20000H+0008H+05H =20000H+0008H+05H =2000DH =2000DHBX+05HBX+05H05HBX05HBX05H+BX05H+BX3.3 3.3 數(shù)據(jù)尋址方式數(shù)據(jù)尋址方式CSCS段段操作碼操作碼A HA H A LA L 2000DH2000DH2000EH2000EH+ + 存儲器存儲器數(shù)據(jù)段數(shù)據(jù)段AXAX8BH8BH47H47H

27、05H05H2 0 0 0 0 H2 0 0 0 0 H0 0 0 8 H0 0 0 8 H2 0 0 0 D H2 0 0 0 D H0 0 0 5 H0 0 0 5 H3.3 3.3 數(shù)據(jù)尋址方式數(shù)據(jù)尋址方式例例2 2:MOV AX , BPMOV AX , BP 若:若:(SS)=1050H,(BP)=0050H, (SS)=1050H,(BP)=0050H, 存放操存放操作作數(shù)的存儲單元的物理地址為:數(shù)的存儲單元的物理地址為:PA=(SS)PA=(SS)16+(BP)+00H16+(BP)+00H =10500H+0050H+00H =10500H+0050H+00H =10550H

28、=10550H3.3 3.3 數(shù)據(jù)尋址方式數(shù)據(jù)尋址方式CSCS段段操作碼操作碼A HA H A LA L 10550H10550H10551H10551H+ + 存儲器存儲器SSSS段段1 0 5 5 0 H1 0 5 5 0 H 0 0 5 0 H 0 0 5 0 H1 0 5 0 0 H1 0 5 0 0 H3.3 3.3 數(shù)據(jù)尋址方式數(shù)據(jù)尋址方式例例3 3:若:若(DS)=1500H,TABLE(DS)=1500H,TABLE為在為在DSDS段定義的一個字段定義的一個字變量,且偏移地址為變量,且偏移地址為0004H,(BP)=0003H0004H,(BP)=0003H。 MOV AX ,

29、TABLE BPMOV AX ,TABLE BPSRCSRC的尋址方式為寄存器相對尋址。的尋址方式為寄存器相對尋址。指令完成的操作為:指令完成的操作為: (AXAX) (DS): (DS): OFFSETOFFSET TABLE+(BP) TABLE+(BP)3.3 3.3 數(shù)據(jù)尋址方式數(shù)據(jù)尋址方式 要尋找的操作數(shù)在某存儲器單元之中,該單元要尋找的操作數(shù)在某存儲器單元之中,該單元有效地址的一部分在有效地址的一部分在 中,另一部分在中,另一部分在 中。中。BPBPBXBXSISIDIDI基址變址尋址基址變址尋址Based Indexed AddressingBased Indexed Addre

30、ssing EAEA=+ +BPBPBXBXSISIDIDI 該單元的段地址以基址寄存器為準,若基址該單元的段地址以基址寄存器為準,若基址寄存器為寄存器為BX,BX,則段地址默認在則段地址默認在DSDS中,若基址寄存器中,若基址寄存器為為BP,BP,則段地址默認在則段地址默認在SSSS中。中。3.3 3.3 數(shù)據(jù)尋址方式數(shù)據(jù)尋址方式例例1 1:MOV AX , BXSIMOV AX , BXSI (AX) (DS) (AX) (DS):(BX+SI):(BX+SI) ) 例例2 2:MOV AX , BPSIMOV AX , BPSI (AX) (SS) (AX) (SS):(BP+SI):(

31、BP+SI)例例3 3:MOV BPDI , ALMOV BPDI , AL (SS) (SS):(BP+DI) :(BP+DI) (AL) (AL) 3.3 3.3 數(shù)據(jù)尋址方式數(shù)據(jù)尋址方式 它是基址變址尋址的擴充,操作數(shù)仍在存儲器它是基址變址尋址的擴充,操作數(shù)仍在存儲器中,存儲器單元的有效地址為:中,存儲器單元的有效地址為: 同樣,同樣,如果用如果用BXBX作為基地址,操作數(shù)默認在作為基地址,操作數(shù)默認在DSDS段中;如果用段中;如果用BPBP作為基地址,則在作為基地址,則在SSSS段中。段中。 在在DISPDISP為變量時,操作數(shù)所在單元的段地址以為變量時,操作數(shù)所在單元的段地址以變量為

32、準,變量在哪個段定義的,就取該段的段地變量為準,變量在哪個段定義的,就取該段的段地址。址。BPBPBXBXEAEA=8 8位位DISPDISP1616位位DISPDISP+ +SISIDIDI+ +基址變址且相對尋址基址變址且相對尋址Based Indexed Relative AddressingBased Indexed Relative Addressing 3.3 3.3 數(shù)據(jù)尋址方式數(shù)據(jù)尋址方式例例1 1: MOV AX , BXDI04 MOV AX , BXDI04 (AX) (DS) (AX) (DS):(BX+DI+04H):(BX+DI+04H) ) 例例2 2:MOV A

33、X , BPDI04MOV AX , BPDI04 (AX) (SS) (AX) (SS):(BP+DI+04H):(BP+DI+04H)例例3 3:MOV DS:BPDI+04H , ALMOV DS:BPDI+04H , AL (DS) (DS):(BP+DI+04H) :(BP+DI+04H) (AL) (AL) 3.3 3.3 數(shù)據(jù)尋址方式數(shù)據(jù)尋址方式8.8.隱含尋址隱含尋址Hidden AddressingHidden Addressing 有些指令的指令碼中不包含指明操作數(shù)有些指令的指令碼中不包含指明操作數(shù)地址的部分,而其操作碼本身隱含的指明了地址的部分,而其操作碼本身隱含的指明了

34、操作數(shù)地址。操作數(shù)地址。 如:乘除法指令、字符串操作類指令等。如:乘除法指令、字符串操作類指令等。 3.3 3.3 數(shù)據(jù)尋址方式數(shù)據(jù)尋址方式例例1.1.若(若(BXBX)=0158H , =0158H , (DIDI)=10A5H ,=10A5H , (DSDS)=2100H , DISP=1B57H ,=2100H , DISP=1B57H , (BPBP)=0100H , =0100H , (SSSS)=1100H ,=1100H , 段寄存器按默認段寄存器,則相對于各段寄存器按默認段寄存器,則相對于各種尋址方式的種尋址方式的EAEA的求法如下:的求法如下:直接尋址:直接尋址:EA=1B5

35、7HEA=1B57HPA=21000H+1B57H=22B57HPA=21000H+1B57H=22B57H3.3 3.3 數(shù)據(jù)尋址方式數(shù)據(jù)尋址方式例例1.1.若(若(BXBX)=0158H , =0158H , (DIDI)=10A5H ,=10A5H , (DSDS)=2100H , DISP=1B57H ,=2100H , DISP=1B57H , (BPBP)=0100H , =0100H , (SSSS)=1100H ,=1100H , 段寄存器按默認段寄存器,則相對于各段寄存器按默認段寄存器,則相對于各種尋址方式的種尋址方式的EAEA的求法如下:的求法如下:寄存器間接尋址(設寄存器

36、為寄存器間接尋址(設寄存器為BXBX):):EA=0158HEA=0158HPA=21000H+0158H=21158HPA=21000H+0158H=21158H3.3 3.3 數(shù)據(jù)尋址方式數(shù)據(jù)尋址方式例例1.1.若(若(BXBX)=0158H , =0158H , (DIDI)=10A5H ,=10A5H , (DSDS)=2100H , DISP=1B57H ,=2100H , DISP=1B57H , (BPBP)=0100H , =0100H , (SSSS)=1100H ,=1100H , 段寄存器按默認段寄存器,則相對于各段寄存器按默認段寄存器,則相對于各種尋址方式的種尋址方式的

37、EAEA的求法如下:的求法如下:寄存器相對尋址(以寄存器相對尋址(以BPBP為例):為例):EA=0100H+1B57H=1C57HEA=0100H+1B57H=1C57HPA=11000H+1C57H =12C57HPA=11000H+1C57H =12C57H3.3 3.3 數(shù)據(jù)尋址方式數(shù)據(jù)尋址方式例例1.1.若(若(BXBX)=0158H , =0158H , (DIDI)=10A5H ,=10A5H , (DSDS)=2100H , DISP=1B57H ,=2100H , DISP=1B57H , (BPBP)=0100H , =0100H , (SSSS)=1100H ,=1100

38、H , 段寄存器按默認段寄存器,則相對于各段寄存器按默認段寄存器,則相對于各種尋址方式的種尋址方式的EAEA的求法如下:的求法如下:基址變址尋址(基址變址尋址(BXBX、DIDI):):EA=0158H+10A5H=11FDHEA=0158H+10A5H=11FDHPA=21000H+11FDH=221FDHPA=21000H+11FDH=221FDH3.3 3.3 數(shù)據(jù)尋址方式數(shù)據(jù)尋址方式例例1.1.若(若(BXBX)=0158H , =0158H , (DIDI)=10A5H ,=10A5H , (DSDS)=2100H , DISP=1B57H ,=2100H , DISP=1B57H

39、, (BPBP)=0100H , =0100H , (SSSS)=1100H ,=1100H , 段寄存器按默認段寄存器,則相對于各段寄存器按默認段寄存器,則相對于各種尋址方式的種尋址方式的EAEA的求法如下:的求法如下:基址變址相對尋址(基址變址相對尋址(BPBP、DIDI):):EA=0100H+10A5H+1B57H=2CFCHEA=0100H+10A5H+1B57H=2CFCHPA=11000H+2CFCH=13CFCHPA=11000H+2CFCH=13CFCH3.3 3.3 數(shù)據(jù)尋址方式數(shù)據(jù)尋址方式例例2 2:判斷下列指令的書寫格式是否正確,正確的:判斷下列指令的書寫格式是否正確,

40、正確的說出說出SRCSRC和和DSTDST的尋址方式,不正確說出錯誤原因。的尋址方式,不正確說出錯誤原因。 MOV AX, BXSI MOV AX, BXSI MOV AX, BL MOV AX, BL MOV BP, DI+01H MOV BP, DI+01H MOV BXDI+02H ,12H MOV BXDI+02H ,12H3.3 3.3 數(shù)據(jù)尋址方式數(shù)據(jù)尋址方式 SRCSRC為基址變址尋址為基址變址尋址 DSTDST為寄存器尋址為寄存器尋址 類型不一致類型不一致 兩存儲器單元之間兩存儲器單元之間 不能直接傳送數(shù)據(jù)不能直接傳送數(shù)據(jù) 類型不明確類型不明確 當當CPUCPU執(zhí)行轉移指令時執(zhí)

41、行轉移指令時, ,通過改變通過改變IPIP或或CS:IP,CS:IP,從而實現(xiàn)程序的轉移。從而實現(xiàn)程序的轉移。 如果程序轉移后如果程序轉移后只有只有IPIP發(fā)生了改變,則稱發(fā)生了改變,則稱為段內轉移為段內轉移或者稱為近程轉移(也稱為或者稱為近程轉移(也稱為NEARNEAR型轉移)。型轉移)。 如果程序轉移后如果程序轉移后CSCS、IPIP均發(fā)生了改變,則均發(fā)生了改變,則稱為段間轉移稱為段間轉移或者稱為遠程轉移(也稱為或者稱為遠程轉移(也稱為FARFAR型轉移)。型轉移)。 3.3 3.3 轉移地址的尋址方式轉移地址的尋址方式先介紹無條件轉移指令先介紹無條件轉移指令JMP JMP :JMP OP

42、RJMP OPR程序轉移到由程序轉移到由OPROPR指定的位置執(zhí)行。指定的位置執(zhí)行。 80868086指令系統(tǒng)中的轉移指令有兩大類:指令系統(tǒng)中的轉移指令有兩大類:無條件轉移指令:有無條件轉移指令:有JMPJMP、CALLCALL、RETRET、IRETIRET條件轉移指令條件轉移指令: :如如JZJZ、JCJC、JCXZJCXZ、LOOPLOOP等。等。3.3 3.3 轉移地址的尋址方式轉移地址的尋址方式3.3 3.3 轉移地址的尋址方式轉移地址的尋址方式轉移地址的尋址方式有下列轉移地址的尋址方式有下列4 4種:種:間接方式直接方式段間間接方式直接方式段內尋址方式轉移地址段內尋址表示轉移在本段

43、內完成,段間尋址表示轉移段內尋址表示轉移在本段內完成,段間尋址表示轉移在不同段之間完成。在不同段之間完成。段內轉移地址的尋址方式(只有段內轉移地址的尋址方式(只有IPIP發(fā)生改變)發(fā)生改變)1.1.段內直接尋址段內直接尋址(Direct addressing within same segmentDirect addressing within same segment) ( (也叫段內相對尋址也叫段內相對尋址) )3.3 3.3 轉移地址的尋址方式轉移地址的尋址方式指令中給出的位移量和當前指令中給出的位移量和當前IPIP的內容相加做為下一條指令的內容相加做為下一條指令的偏移地址,轉移在同一個

44、段內完成。指令中用的偏移地址,轉移在同一個段內完成。指令中用JMP JMP 表示,當然這里的標號與該指令處在同一個段。例如:表示,當然這里的標號與該指令處在同一個段。例如:JMP LABEL JMP LABEL ;程序轉移到標號;程序轉移到標號LABELLABEL處執(zhí)行處執(zhí)行 操作碼操作碼1616位位DISPDISP L1:L1: 間隔的字節(jié)數(shù)稱為相對間隔的字節(jié)數(shù)稱為相對位移量位移量DISPDISP當前當前IPIP- -3276832768+32767+32767?H?H?H?H轉移目的地的轉移目的地的(IP)=(IP)=當前(當前(IPIP)+16+16位位DISPDISPJMP L1 JM

45、P L1 ;JMP NEAR PTR L1JMP NEAR PTR L1XXHXXH3.3 3.3 轉移地址的尋址方式轉移地址的尋址方式2.2.段內間接尋址段內間接尋址(Indirect addressing (Indirect addressing within same segment)within same segment)3.3 3.3 轉移地址的尋址方式轉移地址的尋址方式段內間接尋址是指轉移目的地址(段內間接尋址是指轉移目的地址(1616位偏移地址)保存在位偏移地址)保存在寄存器或存儲單元,轉移也在同一個段內完成,在指令中寄存器或存儲單元,轉移也在同一個段內完成,在指令中指出所使用的

46、寄存器或存儲單元的偏移地址,當采用存儲指出所使用的寄存器或存儲單元的偏移地址,當采用存儲單元保存轉移地址時,可以采用以上介紹的單元保存轉移地址時,可以采用以上介紹的5 5種存儲器尋址種存儲器尋址方式。例如:方式。例如:JMP BXJMP BX;程序轉移的目的地址為;程序轉移的目的地址為BXBX的內容的內容JMP VAR1JMP VAR1;程序轉移的目的地址為字型變量;程序轉移的目的地址為字型變量 VAR1VAR1的內容的內容JMP VAR1SIJMP VAR1SI; ; 目的地址保存在存儲器,其有效目的地址保存在存儲器,其有效 地址為(地址為(SISI)OFFSET VAR1 OFFSET V

47、AR1 例:若(例:若(DSDS)=2000H,(BX)=0100H,(SI)=0002H,=2000H,(BX)=0100H,(SI)=0002H, (20100H)=1200H,(20102H)=1250H, (20100H)=1200H,(20102H)=1250H, 則則CPUCPU執(zhí)行:執(zhí)行:3.3 3.3 轉移地址的尋址方式轉移地址的尋址方式JMP BX JMP BX 指令后,指令后,(IP)=(IP)=JMP WORD PTR BXJMP WORD PTR BX指令后,(指令后,(IPIP)= =JMP WORD PTR BXSIJMP WORD PTR BXSI指令后,(指令后

48、,(IPIP)= =0100H0100H1200H1200H1250H1250H1. 1. 段間直接尋址段間直接尋址Direct addressing Direct addressing between different segments between different segments 段間轉移地址的尋址方式段間轉移地址的尋址方式(CS(CS、IPIP均發(fā)生改變均發(fā)生改變) )只適合于無條件轉移指令只適合于無條件轉移指令3.3 3.3 轉移地址的尋址方式轉移地址的尋址方式段間直接尋址是指直接在指令中給出轉移目的地址(段間直接尋址是指直接在指令中給出轉移目的地址(1616位偏位偏移地址和

溫馨提示

  • 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

提交評論