C语言中的指针如何进入嵌入的汇编语言?
# include <stdio.h>
void main()
{
unsigned long m,*v;
v=&m;
m=0x01020304;
printf(" %x %x %x\n",v,*v,m);//这一步的结果是12ff7c 1020304 1020304,符合预期
m=0x01020304;
_asm
{
mov eax,m
bswap eax
mov m,EAX
}
printf(" %x\n",m);//这一步的结果是4030201,符合预期
_asm
{
mov eax,[v]
bswap eax
mov m,EAX
}
printf(" %x %x %x\n",m,v,*v);//结果感到意外:7cff1200 12ff7c 7cff1200
//照理来说,v是指针,就是地址,那么[v]就应该是m,怎么[v]仍然是v呢?
v=&m;
m=0x01020304;
_asm
{
mov eax,v
bswap eax
mov m,EAX
}
printf(" %x",m);//结果:7cff1200,也在意料之中
}
其他:*你的核心问题,就是 [v] 与 *V(即原m)为什么不是一回事?
这要知道这两种单元的段地址是不是一样呢? 要了解WINDOWS
虚拟内存的原理,及精通保护方式下的汇编。
上一个:汇编语言中使用了便于记忆的什么编程,从而提高了编程的速度
下一个:解决汇编语言程序