定址

數據恢復技術的基礎

定址是數據恢復技術的基礎,是定位數據和扇區的關鍵。定址這個概念比較抽象,簡單的說是磁頭在碟片上定位數據的一個過程。如果你想找到你的計算機中的一個文件,你可能會在Windows中先打開我的電腦、分區、文件夾,再打開你要找的文件。這是表面的尋找文件的過程,而磁頭在碟片的尋找過程就是定址。定址在數據恢復中為什麼非常重要?因為當數據出現丟失的情況后,你在我的電腦、分區、文件夾下就找不到這個文件了,甚至找不到文件夾和分區。計算機有多種定址方式,如立即數定址方式,寄存器定址,存儲器定址方式,與I/0埠有關的定址方式,又包括直接埠定址和間接埠定址。

邏輯定址


邏輯定址是將硬碟所有 扇區認為是一個柱形,扇區從0開始一直排到無窮大。當然硬碟的容量決定 扇區的總數。在邏輯定址中,某一個 扇區的描述就是某某某某(數字)扇區。

物理定址


物理定址也稱C.H.S(Cylinder、Head、Sector)定址。Cylinder、Head、Sector這三個參數在很多硬碟表面的標籤上都有標註其數值。這是 硬碟容量大小的計算基礎。物理定址中對某 扇區的表述為某某Cylinder某某Head的某某Sector。
硬碟容量=盤面數× 柱面數×扇區數×512 位元組。

定址方式簡介


立即數定址方式

操作數直接存放在 指令中,緊跟在操作碼之後的定址方式就是立即數定址方式。例如:MOV AX,2345H MOV AL,0EH 。

寄存器定址

操作數存放在CPU的內存寄存器時,可在指令中指出寄存器名,這就是寄存器定址方式。例如:MOV AX,BX ;ADD AX,BX。

存儲器定址方式

8086指令系統提供了以下5種針對存儲器的定址方式。直接定址、寄存器間接定址、寄存器相對定址、基址加變址定址和相對基址加變址定址。用於說明操作數所在存儲單元的地址。由於匯流排介面單元BIU能根據需要自動引用段寄存器得到段值,所以這五種方式也就是確定存放操作數的存儲單元有效地址EA的方法。有效地址EA是一個16位的無符號數,在利用這五種方法計算有效地址時,所得的結果認為是一個無符號數。
(1).直接定址: 指令中給出的地址碼即為操作數的有效地址,就是直接定址方式
(2).寄存器間接定址方式
(3).寄存器相對定址方式
(4).基址變址定址方式
(5).相對基址變址定址方式

定址的區別和應用


邏輯 定址方式和物理定址方式目前都在使用,很多軟體也都可以用兩種定址方式進行定位。不過,由於物理 定址方式相對比較複雜,採用三數字進行定位,硬碟大小不同數值上限不同,起始不同(Cylinder和Head從0起始,Sector從1起始)等等原因,在 數據恢復技術中更多的使用邏輯定址方式完成定位。

定址操作方法


就是指定指令要進行操作的地址。給定指令操作的地址方法,就是定址方法。完整的一條指令,應該包含指令符+操作數(當然不包括那些單指令,比如NOT等)。其中的操作數是指令要執行的目標,也就是指令要進行操作的地址。
我們知道,在PLC中划有各種用途的存儲區,比如物理輸入輸出區P、映像輸入區I、映像輸出區Q、位存儲區M、定時器T、計數器C、數據區DB和L等,同時我們還知道,每個區域可以用位(BIT)、位元組(BYTE)、字(WORD)、雙字(DWORD)來衡量,或者說來指定確切的大小。當然定時器T、計數器C不存在這種衡量體制,它們僅用位來衡量。由此我們可以得到,要描述一個地址,至少應該包含兩個要素:1、存儲的區域
2、這個區域中具體的位置比如:AQ2.0
其中的A是指令符,Q2.0是A的操作數,也就是地址。這個地址由兩部分組成:Q:指的是映像輸出區; 2.0:就是這個映像輸出區第二個位元組的第0位。由此,我們得出,一個確切的地址組成應該是:〖存儲區符〗〖存儲區尺寸符〗〖尺寸數值〗.〖位數值〗。
分類:
直接定址,簡單的說,就是直接給出指令的確切操作數. 直接定址方式常用於處理內存單元的數據,其操作數是內存變數的值,該定址方式可在64K位元組的段內進行定址。注意:立即定址方式和直接定址方式的書寫格式的不同,直接定址的地址要寫在括弧“[”,“]”內。在程序中,直接地址通常用內存變數名來表示,如:MOV BX, VARW,其中,VARW是內存字變數。
間接定址就是間接的給出指令的確切操作數。間接定址方式計有兩大類型:存儲器間接定址和寄存器間接定址。
存儲器間接定址指針,是作為指定的存儲區域的確切數值單元來運用的。也就是說,指針不包含區域標識,它只是指明了一個數值。
存儲器間接定址的地址給定格式是:地址標識符+指針。指針所指示存儲單元中所包含的數值,就是地址的確切數值單元。
存儲器間接定址具有兩個指針格式:單字和雙字。
單字指針是一個16bit的結構,從0-15bit,指示一個從0-65535的數值,這個數值就是被定址的存儲區域的編號。
雙字指針是一個32bit的結構,從0-2bit,共三位,按照8進位指示被定址的位編號,也就是0-7;而從3-18bit,共16位,指示一個從0-65535的數值,這個數值就是被定址的位元組編號。
指針可以存放在M、DI、DB和L區域中,也就是說,可以用這些區域的內容來做指針。
單字指針和雙字指針在使用上有很大區別。單字指針的存儲器間接定址只能用在地址標識符是非位的場合;雙字指針由於有位格式存在,所以對地址標識符沒有限制。也正是由於雙字指針是一個具有位的指針,因此,當對位元組、字或者雙字存儲區地址進行定址時,必須確保雙字指針的內容是8或者8的倍數。