《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 解決方案 > 匯編基礎(chǔ):尋址方式

匯編基礎(chǔ):尋址方式

2017-06-10
關(guān)鍵詞: 匯編

這一篇我大致概括下計算機的尋址方式,因為自己在匯編上也不是知道很多,所以難免有錯誤之處,還希望高手拍磚。希望這一系列文章能為大家學(xué)習(xí)匯編提供一個平臺。

首先還是說下指令操作數(shù),Intel  8086/8088CPU的指令系統(tǒng)中鎖需操作數(shù)有以下4種:

(1)寄存器操作數(shù):操作數(shù)在CPU的通用寄存器或段寄存器中

(2)立即數(shù)操作數(shù):操作數(shù)在指令中直接給出

(3)存儲器操作數(shù):操作數(shù)在存儲器的存儲單元中

(4)I/O操作數(shù):操作數(shù)在輸入輸出端口的存儲單元中

根據(jù)操作數(shù)來源不同,將指令尋址方式分為寄存器尋址、立即數(shù)尋址、存儲器尋址和I/O尋址四大類,下面來細說這四類方式。

一、寄存器尋址

在寄存器尋址方式中,操作數(shù)來自CPU的某個/某兩個通用寄存器中或段寄存器中(CS除外),16位的寄存器操作數(shù)可以是AX、BX、CX、DX、SI、DL、SP、BP、DS、SS和ES,8位寄存器可以是AL、AH、BL、BH、CL、CH、DL、DH。由于存取操作數(shù)就在CPU內(nèi)部進行,不需要訪問存儲器二執(zhí)行總線周期,所以執(zhí)行速度非常快,另外通用寄存器數(shù)目較少,編碼所需的二進制位就少,因而使用寄存器尋址可以有效的減少指令寬度。

例如:MOV AX, BX;將寄存器BX中的內(nèi)容傳送給寄存器AX中

若執(zhí)行前AX=1234H, BX=5678H,則指令執(zhí)行完后AX=5678H,BX中內(nèi)容不變。

二、立即數(shù)尋址

在立即數(shù)尋址中指令操作數(shù)直接放在代碼中。它是緊跟在指令操作碼后面的一個可用的8位或16位二進制補碼表示的有符號數(shù),即操作數(shù)的存放地址是指令操作碼的下一個單元,這種操作唄成為立即數(shù)。

例如:MOV AX, 1234H立即數(shù)1234H作為源操作數(shù)送入寄存器AX中

指令執(zhí)行后的結(jié)果是寄存器AX的值是1234H

三、存儲器尋址

在存儲器尋址方式下,指令操作數(shù)一般是代碼段以外的數(shù)據(jù)段,堆棧段和附加段中的存儲單元,指令給出的是存儲單元地址或者是存儲單元地址的表達式。在匯編語言中一個存儲單元地址都是使用邏輯地址來表示的。即段基值:偏移量。其中段基值在某個段寄存器中。偏移量表示了該存儲單元與段基值之間的距離,它是由CPU的執(zhí)行單元EU來確定和計算有效地址EA。執(zhí)行指令時,CPU首先根據(jù)操作數(shù)字段提供的地址信息,由執(zhí)行單元EU計算出有效地址EA,再由總線接口單元BIU根據(jù)公式:物理地址=段基值X16+EA計算出操作數(shù)的物理地址,有效地址EA由3個地址分量組合而成:

(1)位移量

(2)基址

(3)變址

一般來說,雙操作數(shù)指令的源操作數(shù)和目的操作數(shù)不能同時為存儲器操作數(shù),存儲器尋址方式按EA計算方式的不同可分為:直接尋址、存儲器間接尋址、基址尋址/變址尋址、基址變址尋址、相對基址變址尋址和串操作尋址6種。

1.直接尋址

直接尋址時存儲器尋址中最簡單的一種,即操作數(shù)的有效地址EA只由位移量組成,即EA=位移量,位移量是直接包含在指令中的,和指令操作碼一起存放在代碼段中,而操作數(shù)則存放在數(shù)據(jù)段中,直接尋址方式不涉及其他寄存器。使用直接尋址的實例:

MOV BX, VAR  ;等價于MOV BX, DS:VAR

MOV AX, [100H];等價于MOV AX, DS:[100H]

例如:MOV AX, [1234H];將當(dāng)前數(shù)據(jù)段偏移1234H個字節(jié)的子存儲單元內(nèi)容傳送給寄存器AX。

設(shè)(DS)=2000H, 那么要訪問的子存儲單元的物理地址為2000H*16+1234H=21234H,

如果該字節(jié)的存儲單元的內(nèi)容是5678H,則(AX)=5678H。

2.存儲器間接尋址

在存儲器間接尋址方式中,指令的操作數(shù)在存儲器中,操作數(shù)的有效地址EA不像直接尋址方式那樣直接存放在指令中,而是由基址寄存器BX、BP或變址寄存器SI、DI提供。

如果指令中使用的是BX、SI、DI,則操作數(shù)在數(shù)據(jù)段中,段基值在數(shù)據(jù)段寄存器DS中,則操作數(shù)物理地址為:

物理地址=16*(DS)+(BX)/(SI)/(DI)

如果指令中實用的是BP,則操作數(shù)在堆棧段中,段基值在堆棧段寄存器SS中,操作數(shù)的物理地址為:

物理地址=16*(SS)+(BP)

3、基址尋址/變址尋址

基址尋址/變址尋址也沒成為寄存器相對尋址,其操作數(shù)的有效地址EA是一個基址寄存器(BX或BP)或者是變址寄存器(SI或DI)的內(nèi)容與指令中制定的一個8位或16位的位移量之和,即

有效地址EA=(BX)/(BP)/(SI)/(DI)+8位位移量/16位位移量

使用BX/BP尋址時即成為基址尋址,使用SI/DI時,即成為變址尋址。

如果使用寄存器BX、SI、DI,則隱含使用的段寄存器為DS, 如果使用寄存器BP則隱含的使用堆棧寄存器SS, 若操作數(shù)前指定了段寄存器,那么以指定的段寄存器為準。即操作數(shù)的物理地址為:

物理地址=16*(DS)+(BX)/(SI)/(DI)+8位位移量/16位位移量

或者 物理地址=16*(SS)+(BP)+8位位移量/16位位移量

 

使用基址尋址/變址尋址的示例如下:

MOV AL, 10H[BX];等價于MOV  AX, DS:10H[BX]    
MOV AL, 20H[SI];等價于MOV  AL, DS:20H[SI]    
MOV AH, ES:30H[BX]

例:MOV AX, 10H[BX]

設(shè)(DS)=2000H, (BX)=20H, (20030H)=1234H, 則操作數(shù)的物理地址=16*2000H+10H

 

+20H=20030H, 執(zhí)行結(jié)果是(AX)=1234H

4、基址變址尋址

基址變址尋址的操作數(shù)有效地址EA是一個基址寄存器(BX或BP)的內(nèi)容,一個變址寄存器(SI或DI)的內(nèi)容與指令中制定的一個8位或16位的位移量之和,即:

有效地址EA=(BX)/(BP)+(SI)/(DI)+8位位移量/16位位移量

如果基址寄存器為BX,那么隱含使用的數(shù)據(jù)段寄存器DS,如果基址寄存器為BP。則隱含使用的是堆棧寄存器SS那么以指定的段寄存器為準,因此,操作數(shù)的物理地址為:

物理地址=16*(DS)+(BX)+(SI)/(DI)+8位位移量/16位位移量

或者 物理地址=16*(SS)+(BP)+(SI)/(DI)+8位位移量/16位位移量

使用基址變址尋址的方式示例如下:

MOV AX, 10H[BX][SI];等價于MOV AX, DS:10H[BX][SI]

MOV 20H[BP][DI], CX;等價于MOV SS:20H[BP][DI], CX

前面說的幾種存儲器尋址方式中,比如直接尋址、寄存器間接尋址、基址尋址/變址尋址實際上都是基址變址尋址的特例,位移量可以用常數(shù)表示,也可以用變量表示,位移量可放在方括號前面,也可放在方括號中同寄存器一起寫成一個地址表達式,例如下面幾種寫法便是等價的:

MOV VAR[BX][SI], AX    
MOV [BX+VAR][SI], AX    
MOV [BX][SI+VAR], AX    
MOV [BX+SI+VAR], AX

例:MOV AX, 10H[BX][SI]

設(shè)(DS)=2000H, (BX)=1000H, (SI)=3000H, (24010H)=1234H.則

操作數(shù)的物理地址=16*2000H+1000H+3000H+10H=24010H, 執(zhí)行結(jié)果(AX)=1234H

5、串操作尋址

Intel 8086/8088CPU提供了一些專門用于串操作的指令,串操作指令操作數(shù)雖然在存儲器中,但是它們不使用前面我們所說的各種尋址方式,而是隱含使用了兩個變址寄存器SI和DI,串操作指令在尋找源操作數(shù)時,隱含使用SI作為地址指針,源操作數(shù)地址由DS:[SI]提供,尋找目的操作數(shù)時,隱含使用DI作為地址指針,目的操作數(shù)地址由ES:[DI]提供,在每次操作完后,指令將自動修改SI和DI的值,使它們指向下一個單元,指針修改的方向由CF決定,這也就是我在另一篇文章中所說的標(biāo)志寄存器(http://yiluohuanghun.blog.51cto.com/3407300/938213)。

四、I/O尋址

I/O指令是CPU與外部設(shè)備進行通訊的最基本的途徑,這意味著即使使用DOS功能調(diào)用或BIOS運行程序,其例行程序本身也是用I/O指令與外部設(shè)備進行數(shù)據(jù)交換的。

1、輸入指令

一般格式為IN AL, PORT

2、輸出指令

一般個事為OUT PORT, AL

至此為止,我們已經(jīng)把計算機的幾種尋址方式一一列舉,希望對大家有幫助!


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲欧美日韩综合国产aⅴ | 欧美日韩国产综合久久| 亚洲综合电影一区二区三区| 日韩视频精品在线| 亚洲狠狠婷婷| 亚洲国产成人porn| 久久精品视频亚洲| 亚洲第一久久影院| 亚洲第一精品久久忘忧草社区| 欧美在线观看视频在线 | 亚洲欧美在线免费观看| 美女成人午夜| 欧美一区国产在线| 国产精品久久一区二区三区| 亚洲黄色三级| 在线欧美福利| 久久久91精品国产| 亚洲综合色丁香婷婷六月图片| 欧美另类高清视频在线| 日韩亚洲欧美中文三级| 亚洲激情社区| 欧美日韩午夜剧场| 中文国产亚洲喷潮| 日韩视频一区二区三区在线播放免费观看 | 欧美高清在线视频观看不卡| 久久国产主播| 亚洲成人原创| 欧美人在线观看| 夜夜嗨一区二区| 一区二区三区精品视频在线观看| 国产精品v日韩精品| 亚洲视频欧美在线| 99国产精品久久久久老师| 国产精品乱看| 久久久美女艺术照精彩视频福利播放 | 欧美性猛交99久久久久99按摩| 在线视频欧美日韩| 亚洲一区二区三区在线视频| 国产欧美一区二区三区视频 | 欧美在线观看一区| 亚洲丶国产丶欧美一区二区三区 | 国产有码在线一区二区视频| 免费成人美女女| 亚洲尤物精选| 久久国产黑丝| 亚洲精品乱码久久久久久按摩观| 国产精品久久久久久久久动漫| 午夜国产精品影院在线观看| 久久精品国产欧美亚洲人人爽| 亚洲黄色影片| 国内精品写真在线观看| 欧美久久久久久| 久久成人国产| 一区二区三欧美| 久久国产精彩视频| 一区二区三区欧美亚洲| 狠狠色综合色区| 国产精品国码视频| 欧美国产综合一区二区| 午夜精品av| 一区二区高清视频在线观看| 久久aⅴ国产紧身牛仔裤| 在线综合欧美| 亚洲欧洲一区二区在线播放| 国产一区二区高清视频| 夜夜嗨av色综合久久久综合网| 欧美有码视频| 亚洲愉拍自拍另类高清精品| 亚洲激情在线| 伊人狠狠色丁香综合尤物| 国产欧美二区| 国产精品视频一区二区高潮| 欧美日产一区二区三区在线观看| 狂野欧美一区| 狂野欧美激情性xxxx欧美| 久久国产福利| 欧美一级专区| 欧美一区二区三区精品| 午夜国产精品视频免费体验区| 亚洲在线观看免费| 亚洲在线中文字幕| 亚洲欧美成人在线| 亚洲国产精品女人久久久| 久久精品国产亚洲高清剧情介绍| 日韩一二三在线视频播| 日韩一级精品| 亚洲小视频在线观看| 亚洲亚洲精品在线观看 | 欧美一级在线视频| 亚洲高清毛片| 亚洲激情成人在线| 日韩视频永久免费观看| 在线视频中文亚洲| 香蕉av福利精品导航| 久久精品国产综合精品| 免费欧美高清视频| 欧美日韩国产成人在线观看| 国产精品mv在线观看| 国内免费精品永久在线视频| 亚洲国产高清一区二区三区| 日韩午夜av| 欧美一区亚洲一区| 一区二区欧美国产| 久久精品一二三区| 欧美日韩国产成人在线| 国产亚洲精品bt天堂精选| 最近看过的日韩成人| 亚洲欧美中文日韩v在线观看| 久久精品一区二区三区中文字幕| 一二三区精品| 久久久久久夜| 国产精品嫩草99a| 亚洲人成小说网站色在线| 新67194成人永久网站| 在线中文字幕日韩| 欧美成人一区二区| 国产日本欧美在线观看 | 在线精品国产欧美| 午夜精品久久久久久久99樱桃| 日韩亚洲欧美一区二区三区| 久久久人人人| 国产伦精品一区二区三区免费迷| 亚洲另类自拍| 日韩午夜在线观看视频| 蜜臀av国产精品久久久久| 国产欧美欧美| 亚洲图片自拍偷拍| 亚洲一区二区在线播放| 欧美激情一区二区久久久| 怡红院精品视频在线观看极品| 性色av一区二区三区在线观看| 亚洲欧美国产精品桃花| 欧美系列精品| 亚洲视频一区| 亚洲欧美高清| 国产免费成人在线视频| 亚洲伊人久久综合| 欧美一级成年大片在线观看| 国产精品看片你懂得| 亚洲欧美日韩在线高清直播| 欧美在线观看一二区| 激情成人综合网| 亚洲欧洲中文日韩久久av乱码| 久久综合一区| 亚洲黑丝在线| 亚洲综合成人在线| 国产欧美日韩一区| 亚洲国产一区在线| 欧美日本久久| 亚洲一区图片| 久久综合999| 亚洲精品在线免费观看视频| 亚洲欧美成人精品| 一区免费视频| 一区二区三区国产| 国产美女一区二区| 亚洲精品久久在线| 国产精品视频一二三| 久久精品国产精品亚洲综合| 欧美激情偷拍| 亚洲欧美日韩国产中文| 欧美高清在线视频观看不卡| 亚洲小说春色综合另类电影| 久久夜色精品国产| 亚洲视频一区| 欧美精品一区在线观看| 亚洲一区二区在线视频| 鲁大师影院一区二区三区| 一区二区三区四区国产精品| 久久国产婷婷国产香蕉| 亚洲国产日韩欧美| 久久激情一区| 欧美日韩成人在线播放| 久久国产精品99国产| 国产精品久久亚洲7777| 亚洲精选在线| 狠狠综合久久| 久久国产成人| 亚洲综合精品四区| 欧美特黄a级高清免费大片a级| 欧美一区亚洲二区| 亚洲高清视频在线观看| 久久久久久高潮国产精品视| 亚洲视频一区二区| 欧美性猛交99久久久久99按摩| 亚洲美女黄色片| 激情成人亚洲| 久久中文字幕导航| 欧美在线免费观看| 国产日韩精品一区| 日韩午夜在线电影| 亚洲国产婷婷香蕉久久久久久| 久久免费精品日本久久中文字幕| 午夜国产精品影院在线观看| 韩国一区电影| 欧美午夜视频在线观看| 久久九九久久九九| 亚洲黄页视频免费观看| 亚洲精品之草原avav久久| 国产精品国产三级国产普通话99 |