微機原理——尋址方式總結

一、操作數的尋址方式

立即尋址方式

格式: 操作碼 數字表達式(將數據送入寄存器中)
源操作數可以是8位也可以是16位。

MOV AH, F5H (字節操作) F5H稱為立即數(8位操作數)
MOV AL, 8AH (字節操作) 8AH稱為立即數

直接尋址方式

指令格式: 操作碼 寄存器(16位) , 地址表達式(將地址的內容送入寄存器中)

MOV AX,ES:[2000H] 將ES:2000H單元內容送入AX。
MOV AX,LABLE 或 MOV AX,[LABEL]將標號為LABLE(存放操作數單元的符號地址) ,即DS:LABLE中的內容送入AX。LABLE要在段定義中指明。
此時,字操作和字符操作的等效:
MOV AX,(2000H);只需要寫低字節地址
MOV AL,(2000H); MOV AH,(2001H)

寄存器尋址方式

格式:操作碼 寄存器,寄存器(將寄存器中的內容送入另一個寄存器)
可操作性的寄存器:

1)8 位寄存器r8: AH、AL、BH、BL、CH、CL、DH、DL
2)16 位寄存器r16:AX、BX、CX、DX、SI、DI、BP、SP
3)4個段寄存器seg: CS、DS、SS、ES

注意點

1、目的和源寄存器的 位數必須相同,不同 位數寄存器之間不能傳送數據處理 如: MOV BX,AH
如果要將數據送入段寄存器(CS、DS、ES、SS),必須先將這個數送入一個非段寄存器,然后在送到段寄存器

寄存器間接尋址方式

格式:操作碼 寄存器,(寄存器) (BX決定的存儲單元的內容送到AX寄存器 )

MOV AX, [BX] ;AX←DS:[BX]

注意點

對于BX、SI、DI,默認的段地址在DS段寄存器
對于BP,默認的段地址在SS段寄存器
物理地址計算方法:
物理地址 = (DS)×16 + (BX)或(SI)或(DI)
物理地址 = (SS)× 16 + (BP)

寄存器相對尋址方式

格式:操作碼 寄存器,相對值DISP+基址或變址寄存器

MOV AX, [SI+06H] ;AX←DS:[SI+06H]
MOV AX, 06H[SI] ;AX←DS:[SI+06H]

地址計算
地址計算
DISP可以是16位,也可以是8位,DISP是一個數值的代號!

基址變址尋址方式

格式: 操作碼 寄存器,(基址寄存器)+(變址寄存器)

MOV AX, [BX+SI] ;AX←DS:[BX+SI]
MOV AX, [BX][SI] ;AX←DS:[BX+SI]
有效地址由基址寄存器(BX或BP)的內容加上變址寄存器(SI或DI)的內容構成:
有效地址=BX/BP+SI/DI
段地址對應BX基址寄存器默認是DS,對應BP基址寄存器默認是SS;可用段超越前綴改變

相對基址變址尋址方式

格式:操作碼 寄存器,DISP+(基址寄存器)+(變址寄存器)
有效地址=BX/BP+SI/DI+8/16位偏移量

MOV AX, [BX+DI+6] ;AX←DS:[BX+DI+6]
MOV AX, 6[BX+DI] ; MOV AX, 6[BX][DI]

段超越

當操作數在內存單元時,系統根據隱含約定,自動將寄存器DS或SS的值作為段地址。然而,當操作數段地址不在隱含的段寄存器時,可以使用段超越前綴取代其隱含約定。
形式
BP默認SS,BX默認DS,通過段超越可以進行修改。
注意:不是所有的段都可做段超越前綴

例題講解

指出下列指令錯誤:
1)MOV AH,BX; //一個8位,一個16位,不匹配
2)MOV [SI],[BI]; //src和dst都是間接尋址,然而操作數只能有一個是這樣的形式
3)MOV AX,[SI][DI]; //[BX/BP] [SI/D] 顯然不符合
4)MOV AX[BX][BP]; //和3同樣問題
5) MOV [BX],ES:AX; //正確的形式應該是 MOV [BX],ES:[AX] ;但是就算這樣也是錯的,錯誤原因和2一樣
6)MOV CS,AX; //CS不能通過賦值改變,只能通過跳轉指令
7)MOV DS,2000H; //正確應該是MOV AX,2000H; MOV DS,AX;

二、轉移地址的尋址方式

段內相對尋址

JMP DISP (disp:8位或16位的地址偏移量)

此時,轉移地址應該是代碼段寄存器CS內容加上指令指針IP內容,再加上相對地址位移量DISP。
運轉方式

段內間接尋址

JMP CX; CX的內容為轉移地址的段內偏移量
JMP WORD PTR CX

WORD PTR是尋址一個字的標記,指令中必須加上
CX的內容為新的IP值(這個與相對尋址區別開),程序轉移到新的入口處 ,CX值不能超出該段的區域
運算過程

段間直接尋址

JMP FAR PTR ADD1;
ADD1為轉移地址的標號
FAR表示轉移距離大于±32K,或是不同段之間轉移。

指令操作碼后的第二個字將賦予代碼段寄存器CS第一個字將賦予指令指針寄存器IP。最后CS內容和IP內容相加則得轉移地址。
運算過程

段間間接尋址

JMP DWORD PTR[BP][DI]
段間間接尋址只適用于存貯器尋址方式
確定轉移地址需要32位信息 相當于兩個字,所以用DWORD,段間間接尋址只適用于存貯器尋址方式

這種尋址方式可計算出存放轉移地址的存貯單元的首地址,與此相鄰的4個單元中,前兩個單元存放16位的段內偏移地址,而后兩單元存放的是16位的段地址
運算過程

轉移地址尋址方式的小結

通過對運轉流程的觀察,可以確定,通過JMP操作只會對代碼段產生影響。
使代碼跳轉到我們所指定的代碼地址。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/378706.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/378706.shtml
英文地址,請注明出處:http://en.pswp.cn/news/378706.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

15-輪廓檢測

邊緣是零零散散的,而輪廓是一個整體 cv2.findContours(img,mode,method) img:輸入圖像對象名稱 mode:輪廓檢索模式 RETR_EXTERNAL:只檢索最外面的輪廓 RETR_LIST:檢索所有的輪廓,并將其保存到一條鏈表當中…

拋硬幣仿真實驗java_探索HyperLogLog算法(含Java實現)

引言HyperLogLog算法經常在數據庫中被用來統計某一字段的Distinct Value(下文簡稱DV),比如Redis的HyperLogLog結構,出于好奇探索了一下這個算法的原理,無奈中文資料很少,只能直接去閱讀論文以及一些英文資料,總結成此文…

kotlin鍵值對數組_Kotlin程序以升序對數組進行排序

kotlin鍵值對數組Given an array, we have to sort its elements in ascending order. 給定一個數組,我們必須按升序對其元素進行排序。 Example: 例: Input:arr [10, 20, 5, 2, 30]Output:sorted array (Ascending Order): [2, 5, 10, 20, 30]在Kotl…

微機原理——總線和時序

前提 8088有兩個組態: 最大組態和最小組態,通過引腳MN/MX*的電平決定組態。(*表示低電平有效) 兩種組態沒有本質區別。 8088的引腳: 引腳可分為下面幾種類別: 1、數據和地址引腳 2、讀寫控制引腳 3、中斷…

PHP站內搜索:多關鍵字查找,加亮顯示

1、SQL語句中的模糊查找LIKE條件一般用在指定搜索某字段的時候, 通過"% _" 通配符的作用實現模糊查找功能,通配符可以在前面也可以在后面或前后都有。搜索以PHP100開頭: SELECT * FROM teble WHERE title LIKE PHP100% 搜索以PHP100結束&…

16-模板匹配

cv2.matchTemplate(img,template,cv2.TM_SQDIFF) 參數一:原圖圖像對象名稱 參數二:模板圖像對象名稱 參數三:差別程度的計算方法(六選一推薦使用帶歸一化的) 模板匹配和卷積原理很像,模板從原圖像上從原點開始滑動,計…

對MySQL性能影響關系緊密的五大配置參數

以下的文章主要是對MySQL性能影響關系緊密的五大配置參數的介紹,我前幾天在相關網站看見對MySQL性能影響關系緊密的五大配置參數的資料,覺得挺好,就拿出來供大家分享,望你能有所收獲。(一)連接 連接通常來自Web服務器,…

JAVA安裝作用_jdk安裝配置及其作用

2.安裝好了就是去配置路徑了,我的是win7系統,步驟如下:桌面上的計算機右擊-》高級系統設置—》環境變量-》系統變量-》新建一共要新建三個變量JAVA_HOME,PATH和CLASSPATH1>JAVA_HOME:(這么寫為了方便以后可能改動jdk的安裝路徑&#xff0c…

用C#開發Windows應用程序

To develop windows application, we need to using studio and follow some steps: 要開發Windows應用程序 ,我們需要使用studio并遵循一些步驟: Step 1) First of all we launch visual studio. 步驟1)首先,我們啟動Visual Studio。 Ste…

圖像分割——基于二維灰度直方圖的閾值處理

前言 像素灰度值僅僅反映了像素灰度級的幅值大小,并沒有反映出像素與鄰域的空間相關信息。 二維灰度直方圖的概念 二維灰度直方圖:像素的灰度值分布和鄰域的平均灰度值分布構成的二維直方圖 二維直方圖的值N(i,j) 。其中,if(x,y) 圖像(x,y…

多維角度聊聊結對編程

在敏捷軟件開發的各種實踐中,結對編程(Pair Programming,下文簡稱Pair)是特別有爭議的。Pair有一個特點,那就是還沒有進行過任何Pair實踐前,你很可能對它已經有了“喜歡” 或者是“討厭”的印象。如果有人問…

17-直方圖

直方圖 何為直方圖?沒那么高大上,其實就是二維統計圖。每個照片都是有像素點所組成,當然也是[0,255],直方圖就是統計每個值所對應的像素點有幾個。 直方圖橫坐標表示0-255這些像素點值;縱坐標表示對應像素點值的個數有…

java求水電費_java水電費管理系統

每天記錄學習,每天會有好心情。*^_^*今天和一個朋友共同完成了一個基于web的java水電費管理系統項目,我們在開發時選用的框架是SSM(MYECLIPSE)框架。我這個朋友知識有限,只會這個框架,哈哈,都是為了方便他。和往常一樣…

zemax微透鏡陣列示例_陣列反向! Ruby中的示例方法

zemax微透鏡陣列示例陣列反向! 方法 (Array reverse! Method) In this article, we will study about Array.reverse! method. You all must be thinking the method must be doing something related to reversing certain elements as we have done in the case o…

Opencv實戰【1】人臉檢測并對ROI區域進行部分處理(變身喬碧蘿!!!)

步驟: 1、利用Opencv自帶的分類器檢測人臉 預備知識:Haar特征分類器 Haar特征分類器就是一個XML文件,該文件中會描述人體各個部位的Haar特征值。包括人臉、眼睛、嘴唇等等。 Haar特征分類器存放地址: (找自己的安裝…

【黑馬甄選離線數倉day10_會員主題域開發_DWS和ADS層】

day10_會員主題域開發 會員主題_DWS和ADS層 DWS層開發 門店會員分類天表: 維度指標: 指標:新增注冊會員數、累計注冊會員數、新增消費會員數、累計消費會員數、新增復購會員數、累計復購會員數、活躍會員數、沉睡會員數、會員消費金額 維度: 時間維度&#xff08…

iPad和iPhone的app圖標尺寸、用途、設置方法

下面是在iPhone專用程序、iPad專用程序和通用程序中使用圖標文件的指導,由譯言網翻譯自蘋果官方文檔。原文 http://article.yeeyan.org/view/395/100567 注意:圖標是你的程序包所必需的組成部分。如果你沒有提供程 序所需的各種尺寸的圖標,系…

18-傅里葉變化

以時間為參照就是時域分析,當然時間是動態變化的 而傅里葉變換是以頻域為基準的,不用關心動態變化,只關心做了多少次而已,次數,頻率 傅里葉說過,任何一個周期函數都可以用正弦函數堆疊起來形成。強吧&#…

java中訪問修飾符_Java中的非訪問修飾符是什么?

java中訪問修飾符Java非訪問修飾符 (Java non access modifiers) We have 7 non-access modifiers in Java. The name of these non-access modifiers are given below, Java中有7個非訪問修飾符 。 這些非訪問修飾符的名稱如下所示: native 本機 synchronized 已同…

mui實現分享功能_MUI 分享功能(微信、QQ 、朋友圈)

配置文件:manifest.jsonplus ->plugins 下邊"share": {/*配置應用使用分享功能,參考http://ask.dcloud.net.cn/article/27*/"qq": {"appid": "",/*騰訊QQ開放平臺申請應用的AppID值*/"description"…