微機原理 32尋址方式_第1頁
微機原理 32尋址方式_第2頁
微機原理 32尋址方式_第3頁
微機原理 32尋址方式_第4頁
微機原理 32尋址方式_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

Itistimeforclass第3章教學(xué)內(nèi)容§3.1基本概念§3.2尋址方式§3.3指令系統(tǒng)重點:7種操作數(shù)尋址方式、各指令格式和應(yīng)用難點:尋址方式、各指令格式的使用方法§3.2尋址方式尋址方式—如何尋找內(nèi)存操作數(shù)。在8086中,地址是由兩部分組成:段的基地址:單元所在段的基地址(大部分情況是數(shù)據(jù)段寄存器DS中)段內(nèi)偏移量:此單元與段基地址的距離。段內(nèi)偏移量為適應(yīng)各種數(shù)據(jù)結(jié)構(gòu)的需要,可有幾個部分組成。不同尋址方式的構(gòu)成部分不同。即不同尋址方式實質(zhì)上是:構(gòu)成段內(nèi)的偏移量的方法不同。一、操作數(shù)尋址(一)立即尋址 (Immediateaddressing)(二)寄存器尋址方式(Registeraddressing)(三)直接尋址(Directaddressing)(四)寄存器間接尋址方式(Registerindirectaddressing)(五)寄存器相對尋址方式(Registerrelativeaddressing)或變址尋址(Indexaddressing)(六)基址加變址尋址方式(Basedindexedaddressing)(七)相對基址加變址尋址方式(Relativebasedindexedaddressing)(一)立即尋址(Immediateaddressing)方式:操作數(shù)直接存放在指令中,緊跟在操作碼之后。例: MOVAL,05H指令執(zhí)行后:(AL)=05H例: MOVAX,3064H指令執(zhí)行后:(AX)=3064H注解:1、立即數(shù)(Im)只能用于源操作數(shù)字段,不能用于目的操作數(shù)字段。2、立即數(shù)可以是8位或16位的。16位的立即數(shù)是高位字節(jié)放在高地址,低位字節(jié)放在低地址。3、此方式執(zhí)行時直接從隊列取立即數(shù),不另占總線周期,速度很快。4、經(jīng)常用于給寄存器或者存儲單元賦初值。(一)立即尋址(Immediateaddressing)(二)寄存器尋址方式(Registeraddressing)方式:操作數(shù)在寄存器中,指令中指定寄存器號。例:指令執(zhí)行前:(AX)=3064H (SS)=1234H

MOVSS,AX指令執(zhí)行后:(SS)=3064H(AX)保持不變。

指令執(zhí)行前:指令執(zhí)行后:注解:1、對于8位操作數(shù),寄存器R8可以是:AL,AH,BL,BH,CL,CH,DL,DH。

對于16位操作數(shù),寄存器R16可以是:

AX,BX,CX,DX,SI,DI,SP,BP。對于段寄存器SegR,可以是:SS、DS、CD、ES。2、這種尋址方式可以減少指令長度;因為操作數(shù)在寄存器中,不需要訪問存儲器,運算速度較高。3、常用于存、取寄存器中的數(shù)。(二)寄存器尋址方式(Registeraddressing)(三)直接尋址(Directaddressing)方式:操作數(shù)在存儲單元中,指令中給出地址偏移量disp例:MOVAX,[3100H](DS)=6000H,(63100H)=3050H則:(AX)=3050H注解:1、該方式中,偏移地址用[],區(qū)別于立即數(shù)。2、直接尋址方式隱含的段寄存器是DS,8086/8088允許段跨越,即允許使用CS、SS、ES作為段寄存器。3、允許用符號地址代替數(shù)值地址。

MOVAX,VALUE或MOVAX,[VALUE]VALUE—有效操作數(shù)單元的符號地址。如果VALUE在附加段中,則應(yīng)指定段跨越。MOVAX,ES:VALUE或MOVAX,ES:[VALUE]4、IBMPC機中規(guī)定雙操作數(shù)指令必須有一個操作數(shù)使用寄存器方式,這就是常常先要把一個變量送到寄存器去的原因。例:要處理某存放在存儲器里的變量,可以用直接尋址方式把變量先取到一個寄存器中再作處理。5、直接尋址方式適用于存、取存儲器中變量。(三)直接尋址(Directaddressing)(四)寄存器間接尋址方式方式:操作數(shù)在存儲器中,指令中由BP、BX、SI、DI寄存器之一給出偏移量。

例:MOVBX,[DI](DS)=6000H(DI)=2000HPA=62000H(62000H)=50A0H

(BX)=50A0H(四)寄存器間接尋址方式注解:1、若選擇SI、DI、BX作為間接尋址,操作數(shù)一般在現(xiàn)行數(shù)據(jù)段區(qū)域中,用(DS)作為段地址。即操作數(shù)物理地址為:物理地址PA=16D×(DS)+(BX)物理地址PA=16D×(DS)+(SI)物理地址PA=16D×(DS)+(DI)2、若選擇BP寄存器作為間接尋址,操作數(shù)在堆棧段區(qū)域中,用SS寄存器的內(nèi)容作為段地址。操作數(shù)物理地址:PA=16D×(SS)+(BP)例:MOV[BP],AX執(zhí)行前:(SS)=1000H,(BP)=3000H,(AX)=1234H執(zhí)行后:PA=13000H(13000H)=1234H圖見下頁3、用SI、DI、BX、BP作為間接尋址允許段跨越。指令中可以指定段跨越前綴來取得其他段中的數(shù)據(jù)。例:MOV

ES:[DI],AX

MOVDX,

DS:[BP]4、為避免與一般寄存器混淆,作為間接地址的寄存器必須加上[]。(四)寄存器間接尋址方式5、這種尋址方法可以用于表格處理和數(shù)組變量(五)寄存器相對尋址方式—變址尋址方式:存儲器操作數(shù),指令中由BX、BP、SI、DI之一和偏移量disp指明有效地址例:

MOVAX,COUNT[BP]或MOVAX,[COUNT+BP]或MOVAX,COUNT+[BP]COUNT為16位位移量。指令執(zhí)行前:(SS)=5000H, (BP)=3000H, COUNT=2040H, (AX)=1234H指令執(zhí)行后:EA=5040H PA=55040H (55040H)=5548H (AX)=5548H寄存器相對尋址方式MOVAX,COUNT[BP](五)寄存器相對尋址方式—變址尋址注解:1、操作數(shù)一般在內(nèi)存的數(shù)據(jù)段中,但允許段跨越。除有段跨越前綴之外,形成物理地址有二種方式:PA=16D×(DS)+(BX)(SI)(DI)+8位位移量16位位移量PA=16D×(SS)+(BP)+8位位移量16位位移量注解:2、這種尋址方式同樣用于表格處理。表格首地址COUNT,修改基址或變址寄存器來取得表格中的值。

例:某數(shù)據(jù)表的首地址為COUNT欲讀取表中第10個數(shù)據(jù),存放到(AL)中。第10個數(shù)據(jù)的有效地址:EA=COUNT+9 用:MOVSI,09H MOVAL,[SI+COUNT]3、相對變址尋址方式也可以使用段跨越前綴

MOVDL,ES:STRING[SI](五)寄存器相對尋址方式—變址尋址(六)基址加變址尋址方式方式:存儲器操作數(shù),指令指定的基址寄存器和變址寄存器的內(nèi)容之和是有效地址。例:

MOVAX,[BX][SI]或MOVAX,[BX+SI]執(zhí)行指令前: (DS)=3200H, (BX)=0456H, (SI)=1094H (334EAH)=4567H執(zhí)行指令后: EA=14EAH PA=334EAH (AX)=4567H基址加變址尋址方式MOVAX,[BX+SI](六)基址加變址尋址方式注解:1、除有段跨越前綴之外,形成物理地址有二種方式:PA=16D×(SS)+(BP)+(DI)(SI)PA=16D×(DS)+(BX)+(DI)(SI)2、這種尋址方式同樣適用于二維數(shù)組或表格處理。表格首地址在基址寄存器中,用變址寄存器來訪問數(shù)組中的元素。二個寄存器都能修改,所以比直接變址方式更靈。3、這種尋址方式允許段跨越。

前綴格式:MOVAX,ES:[BX][SI](七)相對基址加變址尋址方式方式:存儲器操作數(shù),指令指明的基址寄存器+變址寄存器的內(nèi)容+8位(或16位)位移量disp是物理地址。例:

MOVAX,MASK[BX][DI]或MOVAX,MASK[BX+DI]或MOVAX,[MASX+BX+DI]執(zhí)行指令前:(DS)=3000H(BX)=1346H(DI)=0500HMASK=1234H(32A7AH)=4050H執(zhí)行指令后:EA=2A7AHPA=32A7AH(AX)=4050H(七)相對基址加變址尋址方式注解:1、除有段跨越前綴之外,形成物理地址有二種方式:(DI)PA=16D×(DS)+(BX)+(SI)+8位位移量16位位移量(DI)PA=16D×(SS)+(BP)+(SI)+8位位移量16位位移量2、這種尋址方式為堆棧處理提供方便:(BP)棧頂(一般BP可指向棧頂)從棧頂?shù)綌?shù)組的首地址可以用位移量表示(MASK).變址寄存器(SI)或(DI)指向數(shù)組中某個元素。3、不允許將兩個基址寄存器或兩個變址寄存器組合在一起尋址。如:MOVAX,[BX][BP]×二、轉(zhuǎn)移地址尋址程序轉(zhuǎn)移指令(如:JMP、CALL)改變了程序的執(zhí)行順序,需要按照轉(zhuǎn)移地址修改IP、CS的內(nèi)容,轉(zhuǎn)移地址尋址方式涉及如何確定轉(zhuǎn)移的目標地址。段內(nèi)轉(zhuǎn)移只需改變(IP)兩種尋址方式:直接、間接。段間轉(zhuǎn)移改變(CS)(IP)兩種尋址方式:直接、間接。所以,轉(zhuǎn)移地址尋址有四類方式:(一)段內(nèi)直接尋址(Intrasegmentdirectaddressing)(二)段內(nèi)間接尋址(Intrasegmentindirectaddressing)(三)段間直接尋址(Intersegmentdirectaddressing)(四)段間間接尋址(Intersegmentinderectaddressing)(一)段內(nèi)直接尋址注解:1、相對尋址方式含義:EA(即轉(zhuǎn)向的有效地址)用相對于當(dāng)前(IP)值的位移量表示。2、位移量為8位,短程轉(zhuǎn)移,范圍是-128~+127,位移量為16位,近程轉(zhuǎn)移,范圍是-32768~+327673、這種尋址方式適用于條件轉(zhuǎn)移及無條轉(zhuǎn)移指令。當(dāng)用于條件轉(zhuǎn)移指令時,位移量只允許8位;用于無條件轉(zhuǎn)移指令時,位移量8位時稱為短跳轉(zhuǎn)。方式:轉(zhuǎn)向有效地址EA是當(dāng)前(IP)和指令中指定的8位或16位位移量之和。例如:JMPNEARPTRPROGIA;

(IP)新←(IP)當(dāng)前+16位位移量(一)段內(nèi)直接尋址(二)段內(nèi)間接尋址注解:1、內(nèi)容可以用數(shù)據(jù)尋址方式(除立即數(shù)尋址以外)的任何一種尋址方式取得。得到的轉(zhuǎn)向有效地址用來取代IP寄存器的內(nèi)容。2、這種尋址方式和以下二種段間尋址方式都不能用于條件轉(zhuǎn)移指令。條件轉(zhuǎn)移指令只能適用段內(nèi)直接尋址的8位位移量。方式:轉(zhuǎn)向有效地址是一個寄存器或一個存儲單元的內(nèi)容。例:設(shè)指令執(zhí)行前有:(DS)=2000H,(BX)=1256H,(SI)=528FH, TABLE=20A1H,(232F7H)=3280H,(264E5H)=2450H例1、JMPBX(寄存器尋址)指令執(zhí)行后:(IP)=1256H

例2、JMPWORDPTRTABLE[BX](相對間接寄存器尋址)指令執(zhí)行后:PA=16D(DS)+(BX)+TABLE=232F7H(IP)=3280H=(232F7H)例3、JMPWORDPTR[BX][SI](基址加變址尋址)指令執(zhí)行后:PA=16D(DS)+(BX)+(SI)=264E5H(IP)=2450H=(264E5H)說明:WORDPTR——操作符,指明指令對字操作,如果指令操作數(shù)已被定義為16位存儲器,則WORDPTR可以省去。(二)段內(nèi)間接尋址(三)段間直接尋址方式:指令中直接提供了轉(zhuǎn)向的目標段地址(CS)和偏移地址(IP)。例:JMPFARPTRCCCCCC

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論