




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第五講8086/8088的尋址方式1什么叫尋址方式?尋找指令中所需操作數(shù)的各種方法叫尋址方式。8086/8088中指令中所需的操作數(shù)來自:通用寄存器,段寄存器指令代碼存儲單元輸入/輸出端口28086的尋址方式數(shù)據(jù)的尋址方式轉(zhuǎn)移地址的尋址方式3數(shù)據(jù)的尋址方式立即(數(shù))尋址寄存器尋址直接尋址寄存器間接尋址寄存器相對尋址(基址尋址和變址尋址)基址加變址尋址(基址變址(相對)尋址)隱含尋址4立即(數(shù))尋址指令中所需操作數(shù)直接包含在指令代碼中。
例如:指令
MOVAX,256源操作數(shù)256直接出現(xiàn)在指令中,這樣的源操作數(shù)叫做立即數(shù)。由于存取這類操作數(shù)完全在CPU內(nèi)部進行,不需要執(zhí)行總線周期,所以執(zhí)行速度快。
注意:立即數(shù)不能是目的操作數(shù),只能是源操作數(shù)。5寄存器尋址指令中所需操作數(shù)在CPU某寄存器(通用寄存器和段寄存器)中,和立即尋址一樣,取操作數(shù)完全在CPU內(nèi)部進行,不需要執(zhí)行總線周期,所以執(zhí)行速度快。例如:指令
MOVAX,BX源操作數(shù)保存在寄存器BX中,這種情況叫做寄存器尋址6存儲器尋址接下來要討論的尋址方式中操作數(shù)要從存儲器獲得,我們稱為存儲器尋址。這類情形最為復(fù)雜,在討論具體的尋址方式之前,我們需要討論以下三個問題:缺省的段寄存器段超越問題不同的存儲器尋址方式7缺省的段寄存器首先我們要明確一下使用哪個段寄存器的問題。我們已經(jīng)知道,8086/8088采用段:偏移量
的邏輯地址表示方式。通常在指令中出現(xiàn)的地址均為偏移地址,操作數(shù)的地址也不例外,那么物理地址究竟是多少呢?顯然我們還需要知道段起始地址。8缺省的段寄存器一般情況下,指令中操作數(shù)的段起始地址不需特別指出,因為8086/8088規(guī)定了缺省的段寄存器,段起始地址就在其中。而缺省的段寄存器究竟是哪一個,取決于指令,尋址方式及涉及的寄存器。9段超越問題如前所述,缺省的段寄存器取決于指令,尋址方式和涉及的寄存器,但有時使用缺省的段寄存器并不合適。多數(shù)情況下,8086/8088允許程序自行選擇段寄存器,這時需要顯式指定,這種情況叫做段超越。段超越的格式為
〈段寄存器〉:操作數(shù)
(位于需要段超越的指令操作數(shù)之前,因此也叫段超越前綴。)10段超越問題例:指令MovAX,DS:
[BP](BP缺省的是使用SS作為段寄存器,但上面的指令顯式地指明DS作為段寄存器。)11不同的存儲器尋址方式存儲器尋址方式又可以分為三種:不涉及寄存器:直接尋址涉及一個寄存器:寄存器間接尋址和寄存器相對尋址涉及兩個寄存器:基址變址尋址(和基址變址相對尋址)可以參加存儲器尋址的寄存器只有4個,分別是:
BX
和BP,稱為基址寄存器
SI和DI,稱為變址寄存器12直接尋址這是從存儲器中尋找操作數(shù)最簡單的一種尋址方式,有效地址EA直接由位移量給出。在源程序中,直接尋址方式可以用符號或常數(shù)(要加方括號)來表示。例如:1.MOVAX,[1234H]2.MOVAX,VAR缺省的段寄存器為DS;這里VAR為符號地址,可以理解為變量13寄存器間接尋址操作數(shù)有效地址EA直接從基址寄存器(BX或BP)或變址寄存器(SI或DI)中獲得。這種尋址方式實際上是把偏移量事先存放在一個寄存器(BX,BP,SI或DI)中,因此這個寄存器就如同一個地址指針。如果寄存器的內(nèi)容在程序運行期間進行修改,那么使用這種尋址方式的同一指令可以對不同存儲單元進行操作。14寄存器間接尋址例如:
1.MOVAX,[BX]
2.MOVAX,[SI]
3.MOVAX,[BP]注意:用BX,SI,DI間接尋址時,缺省的段寄存器為DS,用BP間接尋址時,缺省的段寄存器為SS。允許段超越。(要牢記)15寄存器相對尋址(基址尋址和變址尋址)操作數(shù)的有效地址EA是基址或變址寄存器(BX,BP,SI或DI)與指令中給出的位移量(8位或16位)之和。使用BX或BP叫基址尋址,使用SI或DI叫變址尋址。當(dāng)使用BP時,隱含使用段寄存器SS;使用其它三個寄存器時,隱含使用的段寄存器都是DS。16寄存器相對尋址(基址尋址和變址尋址)只涉及一個寄存器,帶8位或16位位移量,也允許段超越。例如下面2條指令
MOVAX,[DI+5]MOVAX,05H[DI]這里位移量為517基址變址尋址操作數(shù)的有效地址EA是一個基址寄存器(BX或BP)與一個變址寄存器(SI或DI)的內(nèi)容之和?;芳拇嫫鳛锽X時,缺省的段寄存器為DS,基址寄存器為BP時缺省的段寄存器為SS。也允許段超越。例:
1MOVAX,[BX][DI]
2MOVAX,[BP+SI]基址寄存器BX,BP只能選用其中的1個,變址寄存器SI和DI中也只能選用其中的一個。18基址變址相對尋址操作數(shù)的有效地址EA是三個地址分量之和:一個基址寄存器(BX或BP),一個變址寄存器(SI或DI),指令中給出的位移量。缺省的段寄存器以及段超越的規(guī)定與基址變址尋址相同。例:
1MOVAX,5[BX][DI]
2MOVAX,BP[SI+5]19隱含尋址有些指令沒有顯式地給出操作數(shù),但指令隱含使用某一個寄存器中的內(nèi)容,這種尋址方式叫做隱含尋址。如:指令
MULCL
這條乘法指令隱含使用了寄存器AX,但在指令中并沒有明確指出。20轉(zhuǎn)移地址的尋址方式我們已經(jīng)知道,在計算機中,程序計數(shù)器PC在程序運行時會不斷地自動加1,因此內(nèi)存中的程序,多數(shù)情況下,會按照指令在內(nèi)存中的位置,從低地址到高地址,逐條順序執(zhí)行。但循環(huán)、分支、子程序等結(jié)構(gòu)在計算機程序中是不可缺少的,使用這些結(jié)構(gòu)勢必要破壞程序的自然執(zhí)行順序,于是產(chǎn)生一個問題:如何決定下一條指令的位置?21轉(zhuǎn)移地址的尋址方式這就需要轉(zhuǎn)移地址。因此我們要了解與轉(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ī)定,比較簡單。前兩種指令的尋址方式比較豐富。22轉(zhuǎn)移地址的尋址方式CPU在程序運行過程中,利用內(nèi)部寄存器記載下一條指令的地址。8086采用段-偏移的地址轉(zhuǎn)換方式,因此用代碼段寄存器CS和指令指針寄存器IP保存即將執(zhí)行的指令地址。其中CS保存段地址,IP保存段內(nèi)偏移地址。在8086中,下一條指令地址由CS:IP決定。23轉(zhuǎn)移地址的尋址方式順序執(zhí)行情形,IP的內(nèi)容隨指令的執(zhí)行自動取得增量(當(dāng)前機器指令占據(jù)的字節(jié)數(shù))。CS的內(nèi)容不發(fā)生改變。而執(zhí)行一條轉(zhuǎn)移指令,意味著需要修改下一條指令的地址,也就是,要根據(jù)轉(zhuǎn)移指令的要求,修改CS和IP的內(nèi)容。24轉(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)容都需要修改。25段內(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)地址的存儲器地址。26段內(nèi)直接轉(zhuǎn)移在匯編語言源程序中,直接轉(zhuǎn)移指令是在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)移。27段內(nèi)直接短轉(zhuǎn)移例1:段內(nèi)直接短轉(zhuǎn)移
JMPSHORTPTRLBLLBL為標(biāo)號,位移量8位,指令執(zhí)行后,(IP)變?yōu)長BL28段內(nèi)直接近轉(zhuǎn)移例2:段內(nèi)直接近轉(zhuǎn)移
JMPNEARPTRLBL1LBL1為標(biāo)號,位移量16位,指令執(zhí)行后,(IP)變?yōu)長BL129段內(nèi)間接轉(zhuǎn)移
跳轉(zhuǎn)目標(biāo)地址可以在寄存器或存儲器中。如果是在寄存器中,則指令格式為
JMP〈寄存器名〉可以取八個通用16位寄存器中的任何一個,其內(nèi)容是轉(zhuǎn)移目標(biāo)的段內(nèi)偏移地址,這種方式與數(shù)據(jù)尋址中的寄存器尋址對應(yīng)。30段內(nèi)間接轉(zhuǎn)移例3:段內(nèi)間接轉(zhuǎn)移,寄存器尋址
JMPAX
JMPSP指令執(zhí)行的結(jié)果,(IP)取得指定的寄存器內(nèi)容31段內(nèi)間接轉(zhuǎn)移如果是在存儲器中,則指令格式為
JMP[WORDPTR][存儲器地址]
與數(shù)據(jù)尋址中操作數(shù)在存儲器中的尋址方式對應(yīng),可以采用五種尋址方式的任何一種。32段內(nèi)間接轉(zhuǎn)移例4:段內(nèi)間接尋址,存儲器尋址
JMPWORDPTR[TBL]
JMPWORDPTR[BX+TBL]
JMPWORDPTR[BP+SI+TBL]指令執(zhí)行的結(jié)果,(IP)取得指定的存儲單元內(nèi)容33段間轉(zhuǎn)移段間轉(zhuǎn)移分為段間直接轉(zhuǎn)移和段間間接轉(zhuǎn)移。段間直接轉(zhuǎn)移的匯編指令一般要求在指令中寫明遠(yuǎn)跳轉(zhuǎn),指令格式一般是:
JMPFARPTR〈標(biāo)號〉
執(zhí)行這樣的指令,(IP)將取得標(biāo)號的段內(nèi)偏移地址,而(CS)將取得標(biāo)號所在段的段地址。匯編程序自動將這些地址填入機器指令。34段間轉(zhuǎn)移例5段間直接轉(zhuǎn)移
JMPFARPTRLBL其中FARPTR是操作符,表示直接遠(yuǎn)轉(zhuǎn)移,指令執(zhí)行的操作是把LBL所在段地址送CS,LBL的偏移地址送IP。35段間轉(zhuǎn)移段間間接轉(zhuǎn)移,只能是存儲器尋址,存儲器中連續(xù)兩個字,高位字存放新的代碼段段址,低位字存放指令指針。指令格式一般是:
JMPDWORDPTR〈存儲器地址〉存儲器地址可以采用五種存儲器尋址中的任何一種。36段間轉(zhuǎn)移例6段間間接轉(zhuǎn)移,只能用存儲器尋址
JMPDWORDPTR[TBL]
JMPDWORDPTR[TBL+BP]
JMPDWORDPTR[TBL+BX+DI]指令執(zhí)行的操作是,指定存儲單元(雙字)的高位字送CS,低位字送IP。37習(xí)題一、試分別說明下列各指令中源操作數(shù)和目的操作數(shù)使用的尋址方式:
AND
AX,0FFHANDBL,[0FFH]MOVDS,AXCMP
[SI],CXMOVDS:[0FFH],CLSUB[BP][SI],AHADCAX,0ABH[BX]ORDX,-35[BX][DI]
PUSHDS38二、已知SS=2000H,DS=3000H,BP=0001H,BX=0002H,SI=0003H,DI=0
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 南昌大學(xué)《小學(xué)科學(xué)活動設(shè)計與指導(dǎo)》2023-2024學(xué)年第二學(xué)期期末試卷
- 杭州科技職業(yè)技術(shù)學(xué)院《旅行社經(jīng)營實務(wù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 新疆政法學(xué)院《復(fù)合材料力學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 哈爾濱幼兒師范高等??茖W(xué)校《能源動力(動力工程)領(lǐng)域工程倫理》2023-2024學(xué)年第二學(xué)期期末試卷
- Starter Unit 1 Section B 1a-1e 教學(xué)設(shè)計 2024-2025學(xué)年人教版英語七年級上冊
- Unit 2 What time is it Part A Let's learn(教學(xué)設(shè)計)-2023-2024學(xué)年人教PEP版英語四年級下冊
- 常州幼兒師范高等??茖W(xué)校《醫(yī)學(xué)遺傳學(xué)基礎(chǔ)》2023-2024學(xué)年第二學(xué)期期末試卷
- Unit 6 My week Lesson 2 Activities in a week(教學(xué)設(shè)計)-2024-2025學(xué)年人教新起點版英語二年級下冊
- 滄州2025年河北滄州市人民醫(yī)院第一批招聘119人筆試歷年參考題庫附帶答案詳解
- ★試題:決策過程及其思維特點、科學(xué)決策與科學(xué)思維的關(guān)系
- 中班美工區(qū)角活動教案10篇
- 304不銹鋼管材質(zhì)證明書
- DBJ 46-027-2013 海南省建筑塔式起重機安裝使用安全評定規(guī)程
- SJG 103-2021 無障礙設(shè)計標(biāo)準(zhǔn)-高清現(xiàn)行
- 皇冠假日酒店智能化系統(tǒng)安裝工程施工合同范本
- 港口集裝箱物流系統(tǒng)建模與仿真技術(shù)研究-教學(xué)平臺課件
- 合肥市城市大腦·數(shù)字底座白皮書2020
- 杭州灣跨海大橋項目案例ppt課件
- (完整版)光榮榜25張模板
- 工業(yè)催化劑作用原理—金屬氧化物催化劑
- 優(yōu)秀教材推薦意見(真實的專家意見)
評論
0/150
提交評論