内容纲要
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