首页
社区
课程
招聘
[求助]关于Win32汇编中ptr和[ ]的使用问题
2018-11-11 17:20 1707

[求助]关于Win32汇编中ptr和[ ]的使用问题

2018-11-11 17:20
1707
mov eax 11223344h
;将16进制数0x11223344传送到eax中,结果是eax保存的值是0x11223344
;

;--------------------------------

mov    ecx, DWORD PTR [eax]
;这句话是什么意识呢?
;就是想问[]有什么用
;ptr在这里有什么用
;DWORD在这里有什么用

新手问题比较低级,还请多多包涵!


阿里云助力开发者!2核2G 3M带宽不限流量!6.18限时价,开 发者可享99元/年,续费同价!

收藏
点赞0
打赏
分享
最新回复 (7)
雪    币: 204
活跃值: (911)
能力值: (RANK:1324 )
在线值:
发帖
回帖
粉丝
mratlatsn 10 2018-11-11 17:25
2
0
相当于 ecx = *(uint*)eax
雪    币: 20
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
哈士奇去上学 2018-11-11 17:32
3
0
jackandkx 相当于 ecx = *(uint*)eax
也就是说,DWORD是限定传递的数据的大小了。
雪    币: 20
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
哈士奇去上学 2018-11-11 17:36
4
0

下面的代码为什么输出的不是dwAge的值22,而是dwAge的地址呢?

.386
.model flat,stdcall
option casemap:none


include D:/masm32/include/masm32.inc
include D:/masm32/include/kernel32.inc
includelib D:/masm32/lib/masm32.lib
includelib D:/masm32/lib/kernel32.lib

include D:/masm32/include/msvcrt.inc
includelib D:/masm32/lib/msvcrt.lib



    .DATA
szFormat DB  'eax=%x',0    
dwAge    DD  22  


    .CODE
main proc

    mov eax ,   DWORD ptr [offset dwAge]
    invoke crt_printf, offset szFormat, eax  ; 

    Ret
main endp

end main
雪    币: 14081
活跃值: (2683)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
landeaxm 2018-11-11 20:55
5
0
哈士奇去上学 也就是说,DWORD是限定传递的数据的大小了。
DWORD=2字=4字节
雪    币: 1712
活跃值: (5664)
能力值: ( LV7,RANK:116 )
在线值:
发帖
回帖
粉丝
VirtualCC 2018-11-11 21:53
6
0
你拿到OD跟踪下看代码变成了什么
最后于 2018-11-11 21:53 被VirtualCC编辑 ,原因:
雪    币: 20
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
哈士奇去上学 2018-11-11 22:07
7
0
Shark曾 你拿到OD跟踪下看代码变成了什么

我发现要先将全局变量dwAge的地址传送到一个寄存器中,再引用这个寄存器才能如我所愿输出22

    .DATA
szFormat DB  'eax=%d',0    
dwAge    DD  22     ; 


    .CODE
main proc stdcall


    mov edx , offset dwAge
    mov eax , DWORD ptr [edx]
    invoke crt_printf, offset szFormat, eax  ; eax = 22

    Ret
main endp

end main
雪    币: 20
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
哈士奇去上学 2018-11-11 22:08
8
0
landeaxm DWORD=2字=4字节
Yes,I know
游客
登录 | 注册 方可回帖
返回