我目前正在学习汇编,我不是很新,但可能1 - 2个月前。我正在使用32位汇编,NASM将其汇编成.o文件,MinGW/gcc将其编译成.exe文件。但是在nasm目录中键入“nasm -f elf“,然后一直执行“gcc -o“,需要花费大量时间。因此,我想创建一个快速程序,在那里我只需启动它。然后执行所有操作。
所以我想让程序首先启动nasm汇编程序。然后等待它完成(就像你调用另一个函数一样),然后,我想启动gcc编译器,并等待它完成。我知道在批处理文件中做它很容易,但我仍然想学习如何在汇编中做它,以防有一天我需要这样做。所以问题是,如何启动程序(使用start/console参数),然后等待它退出。
谢谢你!
3条答案
按热度按时间zf9nrax11#
你可以用
CreateProcessA
开始一个程序,然后用WaitForSingleObject
等待它的结束。GCC链接器(LD)还需要一个后缀,后缀中包含推入的字节数(例如“@4”,一个双字=四个字节)。这是使用另一个链接器的一个原因。下面是一个使用“dir”命令启动shell(cmd.exe)的简单示例:
执行目录.asm:
在(Windows)命令提示符中:
um6iljoc2#
对于您的情况,我建议几种简单的方法:
1.切换到FASM或其他相同的版本,但具有更高级的IDE:Fresh-只需按下一个键(或单击鼠标)即可编译和运行。FASM IDE仅适用于Windows,Fresh IDE在Linux和Windows中都能正常工作。注意,FASM的语法非常接近NASM语法,因此您不会遇到大问题。
1.使用一些集成开发环境的NASM,将使一切以类似的方式。
1.制作一个小的.BAT文件,自动运行命令。这是最简单的方法,使你在你的问题。
好吧,我的建议与你的问题有些不同,但是我认为,使用好的IDE对于高效工作是必不可少的,不管你使用什么语言。
mzsu5hc03#
如果你使用windows,你可以使用一个bat命令来完成这个,一个例子是:nasm BOOTLOADER.asm -f bin -o BOOTLOADER.bin pause yet将名为BOOTLOADER.asm的文件转换为二进制文件,其语法与nasm手册中的语法相同,因为bat命令将发送到comd,并且cmd使用环境变量,因此当您安装nasm时,您将安装此文件,因此只需单击即可运行此bat文件