最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

解決匯編中的尋址方式!

2022-09-01 19:54 作者:補(bǔ)給站Linux內(nèi)核  | 我要投稿

存儲(chǔ)器

  存儲(chǔ)器(Memory)是現(xiàn)代信息技術(shù)中用于保存信息的記憶設(shè)備。其概念很廣,有很多層次,在數(shù)字系統(tǒng)中,只要能保存二進(jìn)制數(shù)據(jù)的都可以是存儲(chǔ)器;在集成電路中,一個(gè)沒(méi)有實(shí)物形式的具有存儲(chǔ)功能的電路也叫存儲(chǔ)器,如RAM、FIFO等;在系統(tǒng)中,具有實(shí)物形式的存儲(chǔ)設(shè)備也叫存儲(chǔ)器,如內(nèi)存條、TF卡等。

  計(jì)算機(jī)中全部信息,包括輸入的原始數(shù)據(jù)、計(jì)算機(jī)程序、中間運(yùn)行結(jié)果和最終運(yùn)行結(jié)果都保存在存儲(chǔ)器中。它根據(jù)控制器指定的位置存入和取出信息。有了存儲(chǔ)器,計(jì)算機(jī)才有記憶功能,才能保證正常工作。計(jì)算機(jī)中的存儲(chǔ)器按用途存儲(chǔ)器可分為主存儲(chǔ)器(內(nèi)存)和輔助存儲(chǔ)器(外存),也有分為外部存儲(chǔ)器和內(nèi)部存儲(chǔ)器的分類(lèi)方法。外存通常是磁性介質(zhì)或光盤(pán)等,能長(zhǎng)期保存信息。內(nèi)存指主板上的存儲(chǔ)部件,用來(lái)存放當(dāng)前正在執(zhí)行的數(shù)據(jù)和程序,但僅用于暫時(shí)存放程序和數(shù)據(jù),關(guān)閉電源或斷電,數(shù)據(jù)會(huì)丟失。

尋址

  尋址是數(shù)據(jù)恢復(fù)技術(shù)的基礎(chǔ),是定位數(shù)據(jù)和扇區(qū)的關(guān)鍵。尋址這個(gè)概念比較抽象,簡(jiǎn)單的說(shuō)是磁頭在盤(pán)片上定位數(shù)據(jù)的一個(gè)過(guò)程。如果你想找到你的計(jì)算機(jī)中的一個(gè)文件,你可能會(huì)在Windows中先打開(kāi)我的電腦、分區(qū)、文件夾,再打開(kāi)你要找的文件。這是表面的尋找文件的過(guò)程,而磁頭在盤(pán)片的尋找過(guò)程就是尋址。 尋址在數(shù)據(jù)恢復(fù)中為什么非常重要?因?yàn)楫?dāng)數(shù)據(jù)出現(xiàn)丟失的情況后,你在我的電腦、分區(qū)、文件夾下就找不到這個(gè)文件了,甚至找不到文件夾和分區(qū)。

  計(jì)算機(jī)有多種尋址方式,如立即數(shù)尋址方式,寄存器尋址,存儲(chǔ)器尋址方式,與I/0端口有關(guān)的尋址方式,又包括直接端口尋址和間接端口尋址。

存儲(chǔ)器尋址方式有哪些?

  存儲(chǔ)器尋址方式的操作數(shù)存放在主存儲(chǔ)器中,用其所在主存的位置表示操作數(shù)。在這種尋址方式下,指令中給出的是有關(guān)操作數(shù)的主存地址信息。8088的存儲(chǔ)器空間是分段管理的。程序設(shè)計(jì)時(shí)采用邏輯地址;由于段地址在默認(rèn)的或用段超越前綴指定的段寄存器,所以采用偏移地址,稱(chēng)之為有效地址(EffecTIve Address, EA) 1. 直接尋址

  在這種尋址方式下,指令中直接包含了操作數(shù)的有效地址,跟在指令操作碼之后。其默認(rèn)的段地址在DS段寄存器中,可以采用段超越前綴。

  例 將數(shù)據(jù)段中偏移地址2000H處的內(nèi)存數(shù)據(jù)送至AX寄存器。 MOV AX, [2000H]

  該指令中給定了有效地址2000H, 默認(rèn)與數(shù)據(jù)段寄存器DS一起構(gòu)成操作數(shù)所在存儲(chǔ)單元的物理地址。


【文章福利】小編推薦自己的Linux內(nèi)核技術(shù)交流群:【891587639】整理了一些個(gè)人覺(jué)得比較好的學(xué)習(xí)書(shū)籍、視頻資料共享在群文件里面,有需要的可以自行添加哦?。。。ê曨l教程、電子書(shū)、實(shí)戰(zhàn)項(xiàng)目及代碼)? ??


七種尋址方式(立即尋址、寄存器尋址)

一、立即尋址方式

操作數(shù)作為指令的一部分而直接寫(xiě)在指令中,這種操作數(shù)稱(chēng)為立即數(shù),這種尋址方式也就稱(chēng)為立即數(shù)尋址方式。

立即數(shù)可以是8位、16位或32位,該數(shù)值緊跟在操作碼之后。如果立即數(shù)為16位或32位,那么,它將按“高高低低”的原則進(jìn)行存儲(chǔ)。例如:

MOV AH, 80H   ADD AX, 1234H   MOV ECX, 123456H MOV B1, 12H   MOV W1, 3456H   ADD D1, 32123456H

其中:B1、W1和D1分別是字節(jié)、字和雙字單元。

以上指令中的第二操作數(shù)都是立即數(shù),在匯編語(yǔ)言中,規(guī)定:立即數(shù)不能作為指令中的第二操作數(shù)。該規(guī)定與高級(jí)語(yǔ)言中“賦值語(yǔ)句的左邊不能是常量”的規(guī)定相一致。

立即數(shù)尋址方式通常用于對(duì)通用寄存器或內(nèi)存單元賦初值。

二、寄存器尋址方式

  指令所要的操作數(shù)已存儲(chǔ)在某寄存器中,或把目標(biāo)操作數(shù)存入寄存器。把在指令中指出所使用寄存器(即:寄存器的助憶符)的尋址方式稱(chēng)為寄存器尋址方式。 指令中可以引用的寄存器及其符號(hào)名稱(chēng)如下:   8位寄存器有:AH、AL、BH、BL、CH、CL、DH和DL等;   16位寄存器有:AX、BX、CX、DX、SI、DI、SP、BP和段寄存器等;   32位寄存器有:EAX、EBX、ECX、EDX、ESI、EDI、ESP和EBP等。 寄存器尋址方式是一種簡(jiǎn)單快捷的尋址方式,源和目的操作數(shù)都可以是寄存器。

1、源操作數(shù)是寄存器尋址方式   如:ADD VARD, EAX  ADD VARW, AX   MOV VARB, BH等。   其中:VARD、VARW和VARB是雙字,字和字節(jié)類(lèi)型的內(nèi)存變量。在第4章將會(huì)學(xué)到如何定義它們。

2、目的操作數(shù)是寄存器尋址方式   如:ADD BH, 78h    ADD AX, 1234h   MOV EBX, 12345678H等。

3、源和目的操作數(shù)都是寄存器尋址方式   如:MOV EAX, EBX   MOV AX, BX     MOV DH, BL等。

  由于指令所需的操作數(shù)已存儲(chǔ)在寄存器中,或操作的結(jié)果存入寄存器,這樣,在指令執(zhí)行過(guò)程中,會(huì)減少讀/寫(xiě)存儲(chǔ)器單元的次數(shù),所以,使用寄存器尋址方式的指令具有較快的執(zhí)行速度。通常情況下,我們提倡在編寫(xiě)匯編語(yǔ)言程序時(shí),應(yīng)盡可能地使用寄存器尋址方式,但也不要把它絕對(duì)化。

七種尋址方式(直接尋址方式)

指令所要的操作數(shù)存放在內(nèi)存中,在指令中直接給出該操作數(shù)的有效地址,這種尋址方式為直接尋址方式。

在通常情況下,操作數(shù)存放在數(shù)據(jù)段中,所以,其物理地址將由數(shù)據(jù)段寄存器DS和指令中給出的有效地址直接形成,但如果使用段超越前綴,那么,操作數(shù)可存放在其它段。

例:假設(shè)有指令:MOV BX, [1234H],在執(zhí)行時(shí),(DS)=2000H,內(nèi)存單元21234H的值為5213H。問(wèn)該指令執(zhí)行后,BX的值是什么?

解:根據(jù)直接尋址方式的尋址規(guī)則,把該指令的具體執(zhí)行過(guò)程用下圖來(lái)表示。

從圖中,可看出執(zhí)行該指令要分三部分:

由于1234H是一個(gè)直接地址,它緊跟在指令的操作碼之后,隨取指令而被讀出;

訪問(wèn)數(shù)據(jù)段的段寄存器是DS,所以,用DS的值和偏移量1234H相加,得存儲(chǔ)單元的物理地址:21234H;

取單元21234H的值5213H,并按“高高低低”的原則存入寄存器BX中。

所以,在執(zhí)行該指令后,BX的值就為5213H。

由于數(shù)據(jù)段的段寄存器默認(rèn)為DS,如果要指定訪問(wèn)其它段內(nèi)的數(shù)據(jù),可在指令中用段前綴的方式顯式地書(shū)寫(xiě)出來(lái)。

下面指令的目標(biāo)操作數(shù)就是帶有段前綴的直接尋址方式。

MOV ES:[1000H], AX

直接尋址方式常用于處理內(nèi)存單元的數(shù)據(jù),其操作數(shù)是內(nèi)存變量的值,該尋址方式可在64K字節(jié)的段內(nèi)進(jìn)行尋址。

注意:立即尋址方式和直接尋址方式的書(shū)寫(xiě)格式的不同,直接尋址的地址要寫(xiě)在括號(hào)“[”,“]”內(nèi)。在程序中,直接地址通常用內(nèi)存變量名來(lái)表示,如:MOV BX, VARW,其中,VARW是內(nèi)存字變量。

試比較下列指令中源操作數(shù)的尋址方式(VARW是內(nèi)存字變量):   MOV AX, 1234H MOV AX, [1234H] ;前者是立即尋址,后者是直接尋址   MOV AX, VARW MOV AX, [VARW] ;兩者是等效的,均為直接尋址

七種尋址方式(寄存器間接尋址方式)

操作數(shù)在存儲(chǔ)器中,操作數(shù)的有效地址用SI、DI、BX和BP等四個(gè)寄存器之一來(lái)指定,稱(chēng)這種尋址方式為寄存器間接尋址方式。該尋址方式物理地址的計(jì)算方法如下:

在不使用段超越前綴的情況下,有下列規(guī)定:

若有效地址用SI、DI和BX等之一來(lái)指定,則其缺省的段寄存器為DS; 若有效地址用BP來(lái)指定,則其缺省的段寄存器為SS(即:堆棧段)。

例:假設(shè)有指令:MOV BX,[DI],在執(zhí)行時(shí),(DS)=1000H,(DI)=2345H,存儲(chǔ)單元12345H的內(nèi)容是4354H。問(wèn)執(zhí)行指令后,BX的值是什么?

解:根據(jù)寄存器間接尋址方式的規(guī)則,在執(zhí)行本例指令時(shí),寄存器DI的值不是操作數(shù),而是操作數(shù)的地址。該操作數(shù)的物理地址應(yīng)由DS和DI的值形成,即:

PA=(DS)16+DI=1000H16+2345H=12345H。

所以,該指令的執(zhí)行效果是:把從物理地址為12345H開(kāi)始的一個(gè)字的值傳送給BX。

其執(zhí)行過(guò)程如圖所示。

七種尋址方式(寄存器相對(duì)尋址方式)

操作數(shù)在存儲(chǔ)器中,其有效地址是一個(gè)基址寄存器(BX、BP)或變址寄存器(SI、D

I)的內(nèi)容和指令中的8位/16位偏移量之和。其有效地址的計(jì)算公式如公式所示。

在不使用段超越前綴的情況下,有下列規(guī)定:

若有效地址用SI、DI和BX等之一來(lái)指定,則其缺省的段寄存器為DS;

若有效地址用BP來(lái)指定,則其缺省的段寄存器為SS。 指令中給出的8位/16位偏移量用補(bǔ)碼表示。在計(jì)算有效地址時(shí),如果偏移量是8位,則進(jìn)行符號(hào)擴(kuò)展成16位。當(dāng)所得的有效地址超過(guò)0FFFFH,則取其64K的模。

例:假設(shè)指令:MOV BX, [SI+100H],在執(zhí)行它時(shí),(DS)=1000H,(SI)=2345H,內(nèi)存單元12445H的內(nèi)容為2715H,問(wèn)該指令執(zhí)行后,BX的值是什么?

解:根據(jù)寄存器相對(duì)尋址方式的規(guī)則,在執(zhí)行本例指令時(shí),源操作數(shù)的有效地址EA為:

EA=(SI)+100H=2345H+100H=2445H

該操作數(shù)的物理地址應(yīng)由DS和EA的值形成,即:

PA=(DS)16+EA=1000H16+2445H=12445H。

所以,該指令的執(zhí)行效果是:把從物理地址為12445H開(kāi)始的一個(gè)字的值傳送給BX。


七種尋址方式(基址加變址尋址方式)

操作數(shù)在存儲(chǔ)器中,其有效地址是一個(gè)基址寄存器(BX、BP)和一個(gè)變址寄存器(SI、DI)的內(nèi)容之和。其有效地址的計(jì)算公式如公式所示。

在不使用段超越前綴的情況下,規(guī)定:如果有效地址中含有BP,則缺省的段寄存器為SS;否則,缺省的段寄存器為DS。

例:假設(shè)指令:MOV BX, [BX+SI],在執(zhí)行時(shí),(DS)=1000H,(BX)=2100H,(SI)=0011H,內(nèi)存單元12111H的內(nèi)容為1234H。問(wèn)該指令執(zhí)行后,BX的值是什么?

解:根據(jù)基址加變址尋址方式的規(guī)則,在執(zhí)行本例指令時(shí),源操作數(shù)的有效地址EA為:

EA=(BX)+(SI)=2100H+0011H=2111H

該操作數(shù)的物理地址應(yīng)由DS和EA的值形成,即:

PA=(DS)16+EA=1000H16+2111H=12111H

所以,該指令的執(zhí)行效果是:把從物理地址為12111H開(kāi)始的一個(gè)字的值傳送給BX。


七種尋址方式(相對(duì)基址加變址尋址方式)

操作數(shù)在存儲(chǔ)器中,其有效地址是一個(gè)基址寄存器(BX、BP)的值、一個(gè)變址寄存器(SI、DI)的值和指令中的8位/16位偏移量之和。其有效地址的計(jì)算公式如公式所示。

在不使用段超越前綴的情況下,規(guī)定:如果有效地址中含有BP,則其缺省的段寄存器為SS;否則,其缺省的段寄存器為DS。

指令中給出的8位/16位偏移量用補(bǔ)碼表示。在計(jì)算有效地址時(shí),如果偏移量是8位,則進(jìn)行符號(hào)擴(kuò)展成16位。當(dāng)所得的有效地址超過(guò)0FFFFH,則取其64K的模。

例:假設(shè)指令:MOV AX, [BX+SI+200H],在執(zhí)行時(shí),(DS)=1000H,(BX)=2100H,(SI)=0010H,內(nèi)存單元12310H的內(nèi)容為1234H。問(wèn)該指令執(zhí)行后,AX的值是什么?

解:根據(jù)相對(duì)基址加變址尋址方式的規(guī)則,在執(zhí)行本例指令時(shí),源操作數(shù)的有效地址EA為:

EA=(BX)+(SI)+200H=2100H+0010H+200H=2310H

該操作數(shù)的物理地址應(yīng)由DS和EA的值形成,即:

PA=(DS)16+EA=1000H16+2310H=12310H

所以,該指令的執(zhí)行效果是:把從物理地址為12310H開(kāi)始的一個(gè)字的值傳送給AX。

從相對(duì)基址加變址這種尋址方式來(lái)看,由于它的可變因素較多,看起來(lái)就顯得復(fù)雜些,但正因?yàn)槠淇勺円蛩囟啵撵`活性也就很高。比如:

用D1[i]來(lái)訪問(wèn)一維數(shù)組D1的第i個(gè)元素,它的尋址有一個(gè)自由度,用D2[i][j]來(lái)訪問(wèn)二維數(shù)組D2的第i行、第j列的元素,其尋址有二個(gè)自由度。多一個(gè)可變的量,其尋址方式的靈活度也就相應(yīng)提高了。

相對(duì)基址加變址尋址方式有多種等價(jià)的書(shū)寫(xiě)方式,下面的書(shū)寫(xiě)格式都是正確的,并且其尋址含義也是一致的。

MOV AX, [BX+SI+1000H]   MOV AX, 1000H[BX+SI] MOV AX, 1000H[BX][SI]    MOV AX, 1000H[SI][BX]

但書(shū)寫(xiě)格式BX [1000+SI]和SI[1000H+BX]等是錯(cuò)誤的,即所用寄存器不能在“[“,”]”之外,該限制對(duì)寄存器相對(duì)尋址方式的書(shū)寫(xiě)也同樣起作用。

相對(duì)基址加變址尋址方式是以上7種尋址方式中最復(fù)雜的一種尋址方式,它可變形為其它類(lèi)型的存儲(chǔ)器尋址方式。下表列舉出該尋址方式與其它尋址方式之間的變形關(guān)系。

什么是存儲(chǔ)器尋址?

比如MOV AL, [BP] AL和BP都是寄存器,為什么叫儲(chǔ)存器尋址啊? 存儲(chǔ)器 尋址是 寄存器 與存儲(chǔ)器間的 尋址方式 。使用存儲(chǔ)器尋址的 指令 ,其 操作數(shù) 通常存放在 代碼段 之外的存儲(chǔ)區(qū),如 數(shù)據(jù)段 、 堆棧段 和附加段。指令中,通常給出的是 存儲(chǔ)單元 地址或產(chǎn)生存儲(chǔ)單元地址的有關(guān)信息。執(zhí)行指令時(shí),需要首先計(jì)算出數(shù)據(jù)存放的 有效地址 ,接著計(jì)算出其在存儲(chǔ)器中的 物理地址 ,然后訪問(wèn)存儲(chǔ)器,讀取數(shù)據(jù),再執(zhí)行指令規(guī)定的基本操作。


轉(zhuǎn)載luckyone906





解決匯編中的尋址方式!的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
苏州市| 云南省| 修水县| 兖州市| 兴化市| 四会市| 涿州市| 三都| 东明县| 舟山市| 清丰县| 高雄市| 乌什县| 呼伦贝尔市| 益阳市| 沧源| 和平区| 循化| 和平区| 茌平县| 苏州市| 凌源市| 英吉沙县| 石首市| 白玉县| 长寿区| 昆明市| 钟祥市| 新建县| 平湖市| 新丰县| 贵溪市| 凤台县| 蓝田县| 平邑县| 黄浦区| 莫力| 华蓥市| 莱芜市| 汶上县| 普格县|