能力值:
( LV2,RANK:10 )
|
-
-
2 楼
可以这么理解,加[]的是间接寻址,[]里面的就相当于一个指针。
这个指针就像C语言里面的一样:
int x = 5;
int *p;
p = &x; //*p = 5
|
能力值:
( LV4,RANK:50 )
|
-
-
3 楼
可是想问的是在我所贴的代码里,加[]与不加[]是乎没什么区别,我想知道原因!!
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
罗云彬的WIN32汇编,第3章数据结构里面稍微讲了一下,可以参考。定义的变量是指针结构。 罗云彬的书虽然讲的详细,不过起点稍微有点高。再找本X86到WIN32的入门书一起看,效果最好了
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
最初由 Steve 发布 定义一个变量 _hInstance dd ?
通常可以这样做: mov _hInstance,eax
但像下面这样做又是何意思呢? mov [_hInstance],eax
又跟mov [offset _hInstance],eax有何不同??
尤其在自定位代码经常看到: call @F @@: pop ebx sub ebx,offset @B
mov [ebx+_hInstance],eax
假设eax = 1;
则mov _hInstance, eax后, _hInstance = 1
在mov [_hInstance], eax中, _hInstance成了一个指针,即现在这个1成了一个地址,mov [_hInstance], eax就是说把eax的值赋到地址为1的地方。
而mov [offet _hInstance], eax也一样,假设offset _hInstance = 0x12345678,那这句代码的意思就是把eax的值赋到地址0x12345678处。你只要把[]中的东东理解为一个指针就OK了。
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
就是,罗云彬的书是假设了你有8086汇编基础的。
这是8086汇编的几种基本寻址方式之一
当然,win32汇编也一样的是这几种寻址方式
|
能力值:
( LV4,RANK:50 )
|
-
-
7 楼
谢谢大家.
后来我测试了下,发现:
mov [offset _hInstance],eax
这句是不能通过编译.(使用masm)
|
能力值:
( LV4,RANK:50 )
|
-
-
8 楼
我总结了下:
定义一个变量名:
hInstance dd ?
那么就可以把hInstance当做一个整体,
也可以把hInstance当做一个标号使用.
|
|
|