第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

猜你喜欢

转载自blog.csdn.net/jordandzh/article/details/8946469