CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  其他开发语言 >  汇编语言

刚学汇编的一个程序问题

楼主wahahams123(小不点)2005-08-03 17:45:29 在 其他开发语言 / 汇编语言 提问

.386  
                  .model   flat,stdcall  
                  option   casemap:none  
   
  include         D:\masm32\INCLUDE\windows.inc     ;常量及结构定义  
  include         D:\masm32\INCLUDE\kernel32.inc   ;函数原型声明  
  include         D:\masm32\INCLUDE\user32.inc  
   
  includelib   D:\masm32\lib\kernel32.lib   ;用到的引入库  
  includelib   D:\masm32\lib\user32.lib  
  include                             D:\masm32\INCLUDE\masm32.inc  
  includelib                       D:\masm32\LIB\masm32.lib  
                      .data  
  szCaption   db   "命令行参数",0  
  errortext   db   "没有参数",0  
   
                  .code  
  start:    
                  invoke   GetCommandLine  
                  ;invoke   StdOut,addr   eax       //为什么这样不行呢?  
                  .if   eax!=NULL  
                  invoke   MessageBox,NULL,eax,addr   szCaption,MB_OK      
                  .endif  
                  invoke   ExitProcess,NULL                                
                  end   start  
  1.是不是getcommandline反回的值在eax里.用messagebox就能行.为什么stdout不行呢?  
   
  2.怎么得到参数的个数?我试着用if   eax>2之类的,好像没什么作用.  
   
  我用.net写了一个这样的功能的东西.  
  Imports   System  
  Module   Module1  
   
          Sub   Main()  
                  Dim   args   As   String()  
                  Dim   i  
                  args   =   Environment.GetCommandLineArgs()  
                  For   i   =   0   To   args.Length   -   1  
                          Console.WriteLine("Args("   &   i   &   "):"   &   args(i))  
                  Next  
                  Console.ReadLine()  
   
          End   Sub  
   
  End   Module  
  ==========================================================  
  结果:D:\masm32\BIN\test>E:\程序学习\net\argc\bin\argc.exe   11   2123  
            Args(0):E:\程序学习\net\argc\bin\argc.exe  
            Args(1):11  
            Args(2):2123  
   
  问题点数:20、回复次数:9Top

1 楼OpenHero(开勇)回复于 2005-08-03 17:55:38 得分 0

1.有可能是格式的问题Top

2 楼wahahams123(小不点)回复于 2005-08-03 17:59:37 得分 0

编译出错信息  
    Assembling:   D:\masm32\BIN\test\commandline.asm  
  D:\masm32\BIN\test\commandline.asm(23)   :   error   A2033:   invalid   INVOKE   argument   :  
  1  
  D:\masm32\BIN\test\commandline.asm(23)   :   error   A2114:   INVOKE   argument   type   misma  
  tch   :   argument   :   1  
  _  
  Assembly   ErrorTop

3 楼wahahams123(小不点)回复于 2005-08-03 18:02:19 得分 0

invoke   StdOut,addr   errortext都是正常的.不能读eax?Top

4 楼zara(Kyrie eleison)回复于 2005-08-03 21:23:58 得分 5

不是这样的.   如果是要显示   eax   的内容的话,   直接就是     invoke     StdOut,   eax    
  不过,   由于   StdOut   是输出到标准控制台的,   所以,   最后的   exe   的类型必须是   console   类型的.   即,   在链接的时候应该用   /subsystem:console   选项,   而不是一般窗口类型的   /subsystem:windows   选项Top

5 楼wahahams123(小不点)回复于 2005-08-04 00:12:34 得分 0

嗯,谢谢这个问题解决了  
  那怎么取得这个参数呢?  
  比如args(1)这样的Top

6 楼jiangsheng(蒋晟.Net[MVP])回复于 2005-08-04 07:52:30 得分 5

栈顶是命令行参数的个数,而之前压入的则是命令行参数的指针。Top

7 楼wahahams123(小不点)回复于 2005-08-04 10:46:38 得分 0

能不能具体写两行看看.不是很明白Top

8 楼mydo(侯佩|hopy|ks)回复于 2005-08-04 12:05:21 得分 0

自己根据空格判断参数Top

9 楼zara(Kyrie eleison)回复于 2005-08-04 14:37:16 得分 10

还可能是制表键分隔的吧.   另外,   为了长文件名的考虑,   还需要检查首个有效字符是否为引号   ("),   是的话,   还需要向后配对.    
   
  Masm32   中预定义了些函数的,   如   ArgCl,   ArgClC,   GetCL   等.   具体的源码可以参看   M32lib   目录下的相关   asm   文件的,   分别是   ClArgs.asm,   ClArgsc.asm   和   Getcl,asmTop

相关问题

  • 我刚学汇编,想问用什么编译器写汇编程序?
  • 汇编程序
  • 想学习汇编:请问windows2003能够编译和运行汇编程序吗?
  • 初次学汇编,程序出现了错误,请指教.
  • 我初学汇编,对程序的调试不太懂!
  • 初学汇编,一个排序程序,大家帮忙看看!
  • 汇编程序设计
  • 汇编的延时程序
  • 一道汇编程序
  • Win32汇编---窗口程序

关键词

  • asm
  • null
  • masm32
  • 程序
  • stdout
  • 参数
  • invoke
  • commandline
  • args
  • argc

得分解答快速导航

  • 帖主:wahahams123
  • zara
  • jiangsheng
  • zara

相关链接

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

广告也精彩

反馈

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