各位,我手上有一个后缀名为asm的单片机程序,我现在想问以下几个问题:1、可不可以用delphi编写的程序方便置换asm程序中的4个(或6个)16进制的数据?并保存修改后的程序;
2、修改完成后,能否调用编译程序(DOS版本)对程序进行编译,并参与到编译过程中(我以前用一个函数调用编译程序,但其后步骤就不知道控制了);
3、如果最终能够生成后缀名为bin的文件后,我希望调用一个名为“炜煌编程器”的win程序,并且要传递一些参数到程序设置中。请问以上3步中能够实现几步,请指教。

解决方案 »

  1.   

    你的ASM程序是一个文本文件吧...
    1. 用一般的文本文件的, 用Pos命令找出数据地址块. (好象是Data这个关键字).然后一行一行的读出来, 看是否是你想要改的数据名, 如果是, 就用Writeln等进行置换操作.
    2. 调用编译程序, Dephi有WinExe和shellexecute两个命令来调用外部命令.
    3. 与2相同, 用那两个参数可以调用外部命令并可以加入参数.
      

  2.   

    1.我不理解你说的意思,你的意思是否是把汇编代码中的4个或6个16进制数据换成Delphi中的16进制数据(他们是一样的啊)只不过一个是$45一个是45H这样的形势而已啊?
    2.要看编译程序是用来编译什么语言的了。能否控制不理解你所谓的控制是那种控制
    3.你调用的编程器的Win程序如果是你写的,那么你就比较容易解决,如果不是你写的,你需要知道传递的参数那些可以影响程序设置
      

  3.   

    OK,我就把意思讲得更加明白些吧:
    1、比如代码里3行中十六进制数分别为02h、03h、04h ,现在我要把他改为04h,05h、06h;
    2、我曾经用过winexe调用汇编编译程序,但是调用后,还要到dos下面去继续输入文件名、回车等控制,我就不太清楚了;
    3、我所说的“炜煌编程器”,是与AT89C2051编程器连接对该种芯片写码的,不是我写的,就算用winexe成功打开,但是程序中要我选择加密级别等操作怎样控制呢?请指教,谢谢!
      

  4.   

    1. 这个可以直接把它当作一般文件操作来处理. pos, FileSeek, FileOpen....
    2. 因为你的Exe是Dos下的命令, 所以出到Dos下运行也是正常, 如果想不出现Dos界面, 那就留给高手回答.
    3. 如果这个“炜煌编程器”不支持一次输完命令参数项的话(如 "炜煌编程器 /a /c"), 用Winexec不好做.
      

  5.   

    谢谢,Wnyu(西门吹水)
    1、
    2、
    3、你的意思是不是说除开winexec,就没有其他办法了?
      

  6.   

    1、
    2、
    3、你的意思是不是说除开winexec,就没有其他办法了?调用Dos方面, 我的知识只能到这一步了.
    再帮你Up一下