1. 程式人生 > >第008課 彙編-操作[]

第008課 彙編-操作[]

內容綱要

1.有效地址

2.暫存器存放記憶體單元地址

3.測試[]內所能存放的內容


詳細內容

1.有效地址

#define BaseAdd 0x1000000000

#define IM(a)  [a]

MOV DWORD PTR ds:[BaseAdd+0X10100012ff70],0xaabbccdd

MOV DWORD PTR dS:[0X12ff70],[0X0012FFA0]

MOV DWORD PTR dS:[0X10100012ff70],[0X0012FFA0]

MOV DWORD PTR ds:[0X10100012ff70],IM(0X0012FFA000000)

<1>由所定義的巨集使得程式碼形式產生紊亂,功能不改變

<2>該編譯器情況下獲取記憶體單元地址從低位開始獲取32位即可,高位不足補0,超過32位不產生影響

2.暫存器存放記憶體單元地址

用暫存器來存放有效的記憶體單元地址,再將暫存器放入[]中,記憶體單元地址不可越界。

怎麼知道所要指向的地址是否越界呢?

3.測試[]內所能存放的內容

測試[]記憶體放兩個暫存器,3個暫存器或者更多而得出結論,改變EBP

暫存器的值需要特別注意

課堂練習

1.有效地址

MOV DWORD PTR ds:[BaseAdd+0X10100012ff70],0xaabbccddeeff

MOV DWORD PTR dS:[0X12ff70],[0X0012FFA0]

MOV DWORD PTR dS:[0X10100012ff70],[0X0012FFA000000]

MOV DWORD PTR ds:[0X10100012ff70],IM(0X0012FFA000000)

2.對記憶體做操作

mov DWORD PTR ds:[edx+eax],0x00

mov DWORD PTR ds:[ebx+eax],0x00