首页
社区
课程
招聘
[求助]汇编中利用指针传回数据的问题
发表于: 2013-10-17 10:31 5635

[求助]汇编中利用指针传回数据的问题

2013-10-17 10:31
5635
初学汇编,看罗云彬的书,将书中的例子封装成函数出现错误
   .386
   .model flat, stdcall
   option casemap:none

include     windows.inc
include     kernel32.inc
includelib  kernel32.lib
include     msvcrt.inc
includelib  msvcrt.lib

      .data
dqTickCounterStart   qword    ?
dqTickCounterEnd     qword    ?
dqTime               qword    ?

      .const
szFormat             db  "%I64u",0Dh, 0Ah, 0

      .code
   
HighResolutionTimer proc uses ebx edi esi, _dqTickCounterStart : qword, _dqTickCounterEnd : qword, _lpdqTime : dword
   local @dqFreq : qword    ;计数精度
   local @dw1m   : dword    ;常数
   
   mov      @dw1m, 1000000
   invoke   QueryPerformanceFrequency, addr @dqFreq
   mov      eax, dword ptr _dqTickCounterStart
   mov      edx, dword ptr _dqTickCounterStart + sizeof dword
   sub      dword ptr _dqTickCounterEnd, eax
   sbb      dword ptr _dqTickCounterEnd + sizeof dword, edx
   finit
   fild     @dqFreq
   fild     _dqTickCounterEnd
   fimul    @dw1m
   fdivr
   fistp    qword ptr [_lpdqTime]
   ;invoke   crt_printf, addr szFormat, qword ptr [_lpdqTime] ;这里显示的是对的
   ret
HighResolutionTimer endp

start:
   invoke   QueryPerformanceCounter, addr dqTickCounterStart
   
   ;;其他计算
   invoke   Sleep, 2000
   invoke   QueryPerformanceCounter, addr dqTickCounterEnd
      
   invoke   HighResolutionTimer, dqTickCounterStart, dqTickCounterEnd, addr dqTime
   
   invoke   crt_printf, addr szFormat, dqTime   ;显示0,不知道为什么结果没写入到dqTime中
   
   invoke   ExitProcess, 0
end start

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 239
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
fistp    qword ptr [_lpdqTime]你这句是把值放到_lpdqTime这个变量的位置了,并没有放到指定地址,可以:
mov    eax, [_lpdqTime]  ; 取出指定地址
fistp    qword ptr [eax]   ; 放到指定地址
2013-10-17 11:44
0
雪    币: 77
活跃值: (72)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
[QUOTE=封心锁爱;1231581]fistp    qword ptr [_lpdqTime]你这句是把值放到_lpdqTime这个变量的位置了,并没有放到指定地址,可以:
mov    eax, [_lpdqTime]  ; 取出指定地址
fistp    qword ptr [eax]   ; 放到指定地址[/QUOTE]
明白了,谢谢。
2013-10-17 11:53
0
游客
登录 | 注册 方可回帖
返回
//