CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  其他开发语言 >  汇编语言

小弟初学,初级问题

楼主zhongxin81(Que~sera)2004-05-03 19:05:25 在 其他开发语言 / 汇编语言 提问

.386  
  .model   flat,stdcall  
  option   casemap:none  
  include   \masm32\include\windows.inc  
  include   \masm32\include\kernel32.inc  
  include   \masm32\include\user32.inc  
  includelib   \   masm32\lib\user32.lib  
  includelib   \masm32\lib\kernel32.lib  
   
  .data  
  MsgCaption             db     "hi,Masm32!",0  
  MsgBoxText             db     "Win32   Assembly   is   Great!",0  
   
  .code  
  start:  
  invoke       MessageBox,NULL,addr   MsgBoxText,addr   MsgCaption,MB_OK  
  invoke       ExitProcess,NULL  
  end   start  
   
  当我build的时候,为什么编译器显示  
  Microsoft   (R)   Macro   Assembler   Version   6.14.8444  
  Copyright   (C)   Microsoft   Corp   1981-1997.     All   rights   reserved.  
   
    Assembling:   C:\masm32\11\test.asm  
  C:\masm32\11\test.asm(16)   :   error   A2137:   too   few   arguments   to   INVOKE  
  C:\masm32\11\test.asm(16)   :   error   A2206:   missing   operator   in   expression  
  C:\masm32\11\test.asm(16)   :   error   A2114:   INVOKE   argument   type   mismatch   :   argumen  
  t   :   1  
  _  
  Assembly   Error  
  请按任意键继续.   .   .  
   
  我用的是sasm32v8 问题点数:20、回复次数:3Top

1 楼zhongxin81(Que~sera)回复于 2004-05-03 19:48:25 得分 0

怎么没人回答?分太少了?Top

2 楼zhongxin81(Que~sera)回复于 2004-05-03 19:59:34 得分 0

我在另外一个教材上看到  
   
  addr 操作符用来把标号的地址传递给被调用的函数,它只能用在   invoke   语句中,譬如您不能用它来把标号的地址赋给寄存器或变量,如果想这样做则要用   offset   操作符。在   offset   和   addr   之间有如下区别:  
   
  addr不可以处理向前引用,offset则能。所谓向前引用是指:标号的定义是在invoke   语句之后,譬如在如下的例子:  
  invoke   MessageBox,NULL,   addr   MsgBoxText,addr   MsgBoxCaption,MB_OK  
   
  ......    
   
  MsgBoxCaption   db   "Iczelion   Tutorial   No.2",0  
  MsgBoxText   db   "Win32   Assembly   is   Great!",0  
   
  如果您是用   addr   而不是   offset   的话,那   MASM   就会报错。  
   
  那为什么我把标号的定义是在invoke   语句前面了还是会报错?而只有当我把addr   改为offset才能通过编译  
  为什么?????Top

3 楼dunkel(内心和夜 哪个黑)回复于 2004-05-03 20:40:11 得分 20

>>     ...  
  >>     includelib   \   masm32\lib\user32.lib  
  >>     ...  
  只是上面的那一行多了个空格啊,   在   masm32   之前.   其他应该正常的,   我的   ml   也是   6.14.8444  
   
  E:\MASM32>ml   /c   /coff   zhongxin.asm  
  Microsoft   (R)   Macro   Assembler   Version   6.14.8444  
  Copyright   (C)   Microsoft   Corp   1981-1997.     All   rights   reserved.  
   
    Assembling:   zhongxin.asm  
   
  E:\MASM32>link   /subsystem:windows   zhongxin.obj  
  Microsoft   (R)   Incremental   Linker   Version   5.12.8078  
  Copyright   (C)   Microsoft   Corp   1992-1998.   All   rights   reserved.  
   
   
  E:\MASM32>zhongxin  
   
  出现一个显示   "Win32..."   的对话框,   "确定"   后结束!Top

相关问题

  • 初学者初级问题,请指教!
  • 初学FOXPRO,超级初级问题。
  • 关于MTS的初级问题,一个mts初学者
  • 小弟初学BCB,请教一个初级问题
  • 初学用WINDOWS SDK编程,请教一个初级问题!
  • 初学vc,请教几个初级问题?
  • 初学C++,向各位求教几道初级算法题
  • 放分,初学者最初级的问题!!!帮忙啊
  • 求教:我是初学,问个初级问题
  • 初学者请教各位大虾,C#的初学者教材哪个最好啊?初级的:)

关键词

  • win32
  • db
  • microsoft
  • masm
  • msgboxtext
  • zhongxin
  • 标号
  • assembling
  • addr
  • invoke

得分解答快速导航

  • 帖主:zhongxin81
  • dunkel

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo