微機原理教案6.ppt_第1頁
微機原理教案6.ppt_第2頁
微機原理教案6.ppt_第3頁
微機原理教案6.ppt_第4頁
微機原理教案6.ppt_第5頁
已閱讀5頁,還剩34頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第五講,8086/8088的尋址方式,什么叫尋址方式?,尋找指令中所需操作數(shù)的各種方法叫尋址方式。 8086 / 8088中指令中所需的操作數(shù)來自: 通用寄存器,段寄存器 指令代碼 存儲單元 輸入/輸出端口,8086的尋址方式,數(shù)據(jù)的尋址方式 轉(zhuǎn)移地址的尋址方式,數(shù)據(jù)的尋址方式,立即(數(shù))尋址 寄存器尋址 直接尋址 寄存器間接尋址 寄存器相對尋址(基址尋址和變址尋址) 基址加變址尋址(基址變址(相對)尋址) 隱含尋址,立即(數(shù))尋址,指令中所需操作數(shù)直接包含在指令代碼中。 例如:指令 MOV AX, 256 源操作數(shù) 256 直接出現(xiàn)在指令中,這樣的源操作數(shù)叫做立即數(shù)。由于存取這類操作數(shù)完全在

2、CPU內(nèi)部進(jìn)行,不需要執(zhí)行總線周期,所以執(zhí)行速度快。 注意:立即數(shù)不能是目的操作數(shù),只能是源操作數(shù)。,寄存器尋址,指令中所需操作數(shù)在CPU某寄存器(通用寄存器和段寄存器)中,和立即尋址一樣,取操作數(shù)完全在CPU內(nèi)部進(jìn)行,不需要執(zhí)行總線周期,所以執(zhí)行速度快。 例如:指令 MOV AX, BX 源操作數(shù)保存在寄存器BX中,這種情況叫做寄存器尋址,存儲器尋址,接下來要討論的尋址方式中操作數(shù)要從存儲器獲得,我們稱為存儲器尋址。 這類情形最為復(fù)雜, 在討論具體的尋址方式之前,我們需要討論以下三個問題: 缺省的段寄存器 段超越問題 不同的存儲器尋址方式,缺省的段寄存器,首先我們要明確一下使用哪個段寄存器的

3、問題。 我們已經(jīng)知道,8086/8088采用段:偏移量 的邏輯地址表示方式。 通常在指令中出現(xiàn)的地址均為偏移地址,操作數(shù)的地址也不例外,那么物理地址究竟是多少呢?顯然我們還需要知道段起始地址。,缺省的段寄存器,一般情況下,指令中操作數(shù)的段起始地址不需特別指出,因為8086/8088規(guī)定了缺省的段寄存器,段起始地址就在其中。 而缺省的段寄存器究竟是哪一個,取決于指令,尋址方式及涉及的寄存器。,段超越問題,如前所述,缺省的段寄存器取決于指令,尋址方式和涉及的寄存器,但有時使用缺省的段寄存器并不合適。 多數(shù)情況下,8086/8088允許程序自行選擇段寄存器,這時需要顯式指定,這種情況叫做段超越。 段

4、超越的格式為 段寄存器:操作數(shù)(位于需要段超越的指令操作數(shù)之前,因此也叫段超越前綴。),段超越問題,例:指令 Mov AX, DS: BP (BP缺省的是使用SS作為段寄存器,但上面的指令顯式地指明DS作為段寄存器。),不同的存儲器尋址方式,存儲器尋址方式又可以分為三種: 不涉及寄存器:直接尋址 涉及一個寄存器:寄存器間接尋址和寄存器相對尋址 涉及兩個寄存器:基址變址尋址(和基址變址相對尋址) 可以參加存儲器尋址的寄存器只有4個,分別是: BX 和 BP,稱為基址寄存器 SI 和 DI,稱為變址寄存器,直接尋址,這是從存儲器中尋找操作數(shù)最簡單的一種尋址方式,有效地址EA直接由位移量給出。 在源

5、程序中,直接尋址方式可以用符號或常數(shù)(要加方括號)來表示。 例如: 1. MOV AX, 1234H 2. MOV AX, VAR 缺省的段寄存器為 DS; 這里VAR為符號地址,可以理解為變量,寄存器間接尋址,操作數(shù)有效地址EA直接從基址寄存器(BX或BP)或變址寄存器(SI或DI)中獲得。這種尋址方式實際上是把偏移量事先存放在一個寄存器(BX,BP,SI或DI )中,因此這個寄存器就如同一個地址指針。 如果寄存器的內(nèi)容在程序運行期間進(jìn)行修改,那么使用這種尋址方式的同一指令可以對不同存儲單元進(jìn)行操作。,寄存器間接尋址,例如: 1. MOV AX, BX 2. MOV AX, SI 3. MO

6、V AX, BP 注意:用BX,SI,DI 間接尋址時,缺省的段寄存器為DS,用BP間接尋址時,缺省的段寄存器為SS。允許段超越。( 要牢記 ),寄存器相對尋址(基址尋址和變址尋址),操作數(shù)的有效地址EA是基址或變址寄存器(BX,BP,SI或DI)與指令中給出的位移量(8位或16位)之和。 使用BX或BP叫基址尋址,使用SI或DI叫變址尋址。 當(dāng)使用BP時,隱含使用段寄存器SS;使用其它三個寄存器時,隱含使用的段寄存器都是DS。,寄存器相對尋址(基址尋址和變址尋址),只涉及一個寄存器,帶8位或16位位移量,也允許段超越。例如下面2條指令 MOV AX, DI+5 MOV AX, 05HDI 這

7、里位移量為 5,基址變址尋址,操作數(shù)的有效地址EA是一個基址寄存器(BX或BP)與一個變址寄存器(SI或DI)的內(nèi)容之和。 基址寄存器為BX時,缺省的段寄存器為DS,基址寄存器為BP時缺省的段寄存器為SS。也允許段超越。例: 1 MOV AX, BXDI 2 MOV AX, BP+SI 基址寄存器BX,BP只能選用其中的1個,變址寄存器SI和DI中也只能選用其中的一個。,基址變址相對尋址,操作數(shù)的有效地址EA是三個地址分量之和:一個基址寄存器(BX或BP),一個變址寄存器(SI或DI),指令中給出的位移量。 缺省的段寄存器以及段超越的規(guī)定與基址變址尋址相同。例: 1 MOV AX, 5BXDI

8、 2 MOV AX, BPSI+5,隱含尋址,有些指令沒有顯式地給出操作數(shù),但指令隱含使用某一個寄存器中的內(nèi)容,這種尋址方式叫做隱含尋址。 如:指令 MULCL 這條乘法指令隱含使用了寄存器AX,但在指令中并沒有明確指出。,轉(zhuǎn)移地址的尋址方式,我們已經(jīng)知道,在計算機中,程序計數(shù)器PC在程序運行時會不斷地自動加1,因此內(nèi)存中的程序,多數(shù)情況下,會按照指令在內(nèi)存中的位置,從低地址到高地址,逐條順序執(zhí)行。 但循環(huán)、分支、子程序等結(jié)構(gòu)在計算機程序中是不可缺少的,使用這些結(jié)構(gòu)勢必要破壞程序的自然執(zhí)行順序,于是產(chǎn)生一個問題:如何決定下一條指令的位置?,轉(zhuǎn)移地址的尋址方式,這就需要轉(zhuǎn)移地址。 因此我們要了解

9、與轉(zhuǎn)移地址相關(guān)的尋址方式。 8086 與轉(zhuǎn)移有關(guān)的指令有無條件轉(zhuǎn)移(jmp),過程調(diào)用(call),循環(huán)(loop),條件轉(zhuǎn)移(Jxx)和中斷(int)。后三種指令尋址方式有嚴(yán)格規(guī)定,比較簡單。前兩種指令的尋址方式比較豐富。,轉(zhuǎn)移地址的尋址方式,CPU在程序運行過程中,利用內(nèi)部寄存器記載下一條指令的地址。8086采用 段-偏移 的地址轉(zhuǎn)換方式,因此用代碼段寄存器CS和指令指針寄存器IP保存即將執(zhí)行的指令地址。其中CS保存段地址,IP保存段內(nèi)偏移地址。 在8086中,下一條指令地址由CS:IP決定。,轉(zhuǎn)移地址的尋址方式,順序執(zhí)行情形,IP的內(nèi)容隨指令的執(zhí)行自動取得增量(當(dāng)前機器指令占據(jù)的字節(jié)數(shù))

10、。CS的內(nèi)容不發(fā)生改變。 而執(zhí)行一條轉(zhuǎn)移指令,意味著需要修改下一條指令的地址,也就是,要根據(jù)轉(zhuǎn)移指令的要求,修改CS和IP的內(nèi)容。,轉(zhuǎn)移地址的尋址方式,段內(nèi)轉(zhuǎn)移 轉(zhuǎn)移的目標(biāo)地址在當(dāng)前代碼段內(nèi),CS的內(nèi)容不必修改,需要將IP的內(nèi)容修改為目標(biāo)地址。 段間轉(zhuǎn)移 轉(zhuǎn)移的目標(biāo)地址未必在本段,CS和IP的內(nèi)容都需要修改。,段內(nèi)轉(zhuǎn)移,又分為段內(nèi)直接轉(zhuǎn)移與段內(nèi)間接轉(zhuǎn)移。 段內(nèi)直接轉(zhuǎn)移 轉(zhuǎn)移的目標(biāo)地址可以直接從指令中求得, 相當(dāng)于與數(shù)據(jù)有關(guān)的尋址方式中的立即尋址。 段內(nèi)間接轉(zhuǎn)移 轉(zhuǎn)移的目標(biāo)地址保存在寄存器或存儲器中,從指令中可以得到寄存器名或保存目標(biāo)地址的存儲器地址。,段內(nèi)直接轉(zhuǎn)移,在匯編語言源程序中,直接轉(zhuǎn)移

11、指令是在jmp后寫跳轉(zhuǎn)目標(biāo)的標(biāo)號。匯編程序自動計算該標(biāo)號代表的地址,將匯編的跳轉(zhuǎn)指令轉(zhuǎn)換成相應(yīng)的機器指令. 段內(nèi)直接轉(zhuǎn)移又分為直接短轉(zhuǎn)移和直接近轉(zhuǎn)移,取決于目標(biāo)地址與IP內(nèi)容(下一條指令地址)之差(稱為位移量,位移量將出現(xiàn)在機器指令中)。 位移量為8位時,形成短轉(zhuǎn)移,否則,位移量為16位,形成近轉(zhuǎn)移。,段內(nèi)直接短轉(zhuǎn)移,例1:段內(nèi)直接短轉(zhuǎn)移 JMP SHORT PTR LBL LBL為標(biāo)號,位移量8位,指令執(zhí)行后,(IP)變?yōu)長BL,段內(nèi)直接近轉(zhuǎn)移,例2:段內(nèi)直接近轉(zhuǎn)移 JMP NEAR PTR LBL1 LBL1為標(biāo)號,位移量16位,指令執(zhí)行后,(IP)變?yōu)長BL1,段內(nèi)間接轉(zhuǎn)移,跳轉(zhuǎn)目標(biāo)地址

12、可以在寄存器或存儲器中。 如果是在寄存器中,則指令格式為 JMP 寄存器名 可以取八個通用16位寄存器中的任何一個,其內(nèi)容是轉(zhuǎn)移目標(biāo)的段內(nèi)偏移地址,這種方式與數(shù)據(jù)尋址中的寄存器尋址對應(yīng)。,段內(nèi)間接轉(zhuǎn)移,例3:段內(nèi)間接轉(zhuǎn)移,寄存器尋址 JMP AX JMP SP 指令執(zhí)行的結(jié)果,(IP)取得指定的寄存器內(nèi)容,段內(nèi)間接轉(zhuǎn)移,如果是在存儲器中,則指令格式為 JMP WORD PTR 存儲器地址 與數(shù)據(jù)尋址中操作數(shù)在存儲器中的尋址方式對應(yīng),可以采用五種尋址方式的任何一種。,段內(nèi)間接轉(zhuǎn)移,例4:段內(nèi)間接尋址,存儲器尋址 JMP WORD PTR TBL JMP WORD PTR BX+TBL JMP W

13、ORD PTR BP+SI+TBL 指令執(zhí)行的結(jié)果, (IP)取得指定的存儲單元內(nèi)容,段間轉(zhuǎn)移,段間轉(zhuǎn)移分為段間直接轉(zhuǎn)移和段間間接轉(zhuǎn)移。 段間直接轉(zhuǎn)移的匯編指令一般要求在指令中寫明遠(yuǎn)跳轉(zhuǎn),指令格式一般是: JMP FAR PTR 標(biāo)號執(zhí)行這樣的指令,(IP)將取得標(biāo)號的段內(nèi)偏移地址,而(CS)將取得標(biāo)號所在段的段地址。匯編程序自動將這些地址填入機器指令。,段間轉(zhuǎn)移,例5 段間直接轉(zhuǎn)移 JMP FAR PTR LBL 其中FAR PTR 是操作符,表示直接遠(yuǎn)轉(zhuǎn)移,指令執(zhí)行的操作是把 LBL 所在段地址送CS,LBL的偏移地址送IP。,段間轉(zhuǎn)移,段間間接轉(zhuǎn)移,只能是存儲器尋址,存儲器中連續(xù)兩個字,

14、高位字存放新的代碼段段址,低位字存放指令指針。指令格式一般是: JMP DWORD PTR 存儲器地址 存儲器地址可以采用五種存儲器尋址中的任何一種。,段間轉(zhuǎn)移,例6 段間間接轉(zhuǎn)移,只能用存儲器尋址 JMP DWORD PTR TBL JMP DWORD PTR TBL+BP JMP DWORD PTR TBL+BX+DI 指令執(zhí)行的操作是,指定存儲單元(雙字)的高位字送CS,低位字送IP。,習(xí)題,一、試分別說明下列各指令中源操作數(shù)和目的操作數(shù)使用的尋址方式: AND AX,0FFH AND BL,0FFH MOV DS,AX CMP SI,CX MOV DS:0FFH,CL SUB BPSI,AH ADC AX,0ABHBX OR DX,-35BXDI PUSH DS,二、已知SS=2000H,DS=3000H,BP=0001H,BX=0002H,SI=0003H,DI=0004H,相關(guān)存儲單元情況如右圖所示,

溫馨提示

  • 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

提交評論