注册 登录
编程论坛 汇编论坛

【求助】新手学汇,编译某程序无法通过。

asdiopss 发布于 2016-09-23 14:42, 2312 次点击
先发代码
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.386
.model flat,stdcall
option casemap:none
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Include 文件定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include  windows.inc
include  gdi32.inc
includelib  gdi32.lib
include  user32.inc
includelib  user32.lib
include  kernel32.inc
includelib  kernel32.lib
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 数据段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.data
hWnd     db     ?
szBuffer  db     256 dup (?)
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.const
szCaption db     'sendmessage',0
szStar    db     'Prese OK to send message ,param:&08x!',0
szRetuen  db     'Send message returned',0
szDestClass db   'MyClass',0
szText    db     'Text send to other window',0
szNo      db     'receive message window notfound',0

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.code
start:
      invoke FindWindow,addr szDestClass,NULL
  .if    eax
         mov hWnd,eax                                           ;编译无法通过的这句
 invoke wsprintf ,addr szBuffer,addr szStar,addr szText
 invoke MessageBox,NULL,addr szBuffer,addr szCaption,MB_OK
 invoke SendMessage,hWnd,WM_SETTEXT,0,addr szText
 invoke MessageBox,NULL,addr szRetuen,addr szCaption,MB_OK
  .else
         invoke MessageBox,NULL,addr szNo,addr szCaption,MB_OK
  .endif
  invoke ExitProcess,NULL
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
end  start
在看罗老师的WIN32汇编 其中有个例子 我在编译的过程中 发现
mov hWnd,eax                                           ;编译无法通过的这句
如果注释掉这句,就能成功编译
这是为什么呢?
..求大神解答下。
2 回复
#2
Valenciax2016-09-23 20:46
hWnd     db     ?
应为
hWnd     dd     ?
#3
hu9jj2016-09-26 21:32
db ?是8位数据,eax是32位数据,如何能放得下?
1