記憶體定址方式

2021-08-30 21:36:27 字數 1693 閱讀 5501

這裡進行的就是

但是最上面的是32位機器 所以不需要ds*10 但是也可以把ds看作是0

那就是將ebp位址所承載的值取出dword位出來也就是4位元組 給eax 如果是ax 就是word 1位元組 如圖

ebp位址是

所指向的值是

所以eax變成

可以看出是將位址中的值倒向放在eax中 這是因為eax是高16位加上低16位 高對高 也就是0018ff8b對應的00與eax第一位對應

loop循壞 

這裡是算2的10次方

首先 給ax賦值2  然後需要乙個控制循壞的變數ecx (在32位機器中 ,cx是在16位機器中)賦值九 每次循壞就會自動減一 所以

9 :4   8:8   7:16  。。。

當ecx變為0時會跳出循壞 

loop循壞後面跟要開始循壞的那個位址

2.and和or指令 xor

and就是數學中的與  or就是或  xor是異或

如果是  and ffff,f0f0  結果就是f0f0    and 00001111b,10100011b  結果是00000011

or f000,0ff0   fff0    xor 0010b,1011b  1001b

這裡可以用來轉換字母大小寫  根據ascii

可以看出小寫字母和大寫字母之間的二進位制 有一位不同

1000001->1100001 a->a

所以可以這樣通過or來實現轉換

mov cx,10  //10位字串長度

mov al,[bx]   //bx是字串的位址 這裡是將字串取乙個字元給al

or al,100000b  //進行或運算

inc bx  //然後將bx加一 指向下乙個字元

loop  //迴圈

3.記憶體定址

si:源變址暫存器可用來存放相對於ds段之源變址指標

列如mov ax,[si] 這裡是ds*10+si作為位址指向的那個值取出來給ax

cs:**段  ds:資料段  es:附加段

bp:基數指標暫存器bp是乙個暫存器,用途有點特殊,是和堆疊指標sp聯合使用的,作為sp校準使用的,只有在尋找堆疊裡的資料和使用個別的定址方式時候才使用

sp是棧指標 內容就是 ss*10+sp 所指向的位址的內容

列如

要注意bp不能和bx在一起  乙個是用ss 乙個是ds 會衝突

可以的組合方式

定址 定址方式

定址方式就是處理器根據指令中給出的位址資訊來尋找實體地址的方式。在儲存器中,運算元或指令字寫入或讀出的方式,有位址指定方式 相聯儲存方式和堆疊訪問方式。幾乎所有的計算機,在記憶體中都採用位址指定方式。當採用位址指定方式時,形成運算元或指令位址的方式稱為定址方式。定址方式分為兩類,即指令定址方式和資料...

七種定址方式 直接定址方式

指令所要的運算元存放在記憶體中,在指令中直接給出該運算元的有效位址,這種定址方式為直接定址方式。在通常情況下,運算元存放在資料段中,所以,其實體地址將由資料段暫存器ds和指令中給出的有效位址直接形成,但如果使用段超越字首,那麼,運算元可存放在其它段。例 假設有指令 mov bx,1234h 在執行時...

linux 記憶體定址

1 實體地址 虛擬位址及線性位址 2 虛擬位址到實體地址的過程 記憶體定址的過程可以簡單理解為虛擬位址到實體地址的轉換過程。程式設計師所使用的虛擬位址,並不是直接送到記憶體匯流排,而是被送到記憶體管理單元 mmu,由乙個或一組晶元組成是一種硬體電路,實現虛擬位址到實體地址的轉換 mmu包括分段機制和...