這裡進行的就是
但是最上面的是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包括分段機制和...