怎么编译连接16位的汇编程序

开始用的masm32的ml和link改了 便宜选项,编译能通过但不能连接后来下了masm6.1还是只能编译不能连接诶,在32位机器上不能写16位程序吗如果是64位呢?

如果是写16位汇编,下载masm5.0(微软的16位宏汇编包),百度一下就有下载!使用masm.exe编译16位汇编源代码生成*.obj文件,在用link.exe连接生成16位可执行文件*.exe。在32位机器上是可以写16位程序的,因为x86的计算机体系就是为了兼容低阶程序而存在的,计算机在启动的时候就是以实模式(可以简单理解为16位的)启动的,之后操作系统才使用机器指令转向32位保护模式(因为这样从硬件级支持多任务)。编写16位、32位、以及64位汇编程序只要下载安装相应的汇编包就可以了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-10-26
要看用的是masm的哪个版本,常用的有masm5、masm6、masm8。
masm5将编译和连接分开,当masm.exe、link.exe、cc.asm(这个是要编译的文件)在同一个文件夹中时。
当前目录中,在命令行下,输入"masm cc;"命令,可完成编译。
然后,当前目录中,在命令行下,输入"link cc;"命令,可完成连接。
masm6及以后,可用ml这个命令。
当前目录中,在命令行下,输入"ml cc.asm"命令,可完成编译和连接。
在masm中,编译是针对源文件的,源文件需为以".asm"为后缀的文本文件。编译产生的是目标文件。而连接是针对目标文件的,目标文件需为编译时产生的,以“.obj”为后缀的二进制文件。连接产生的是以".exe"为后缀的可执行文件。
第2个回答  2015-06-12
16位程序需要在16位的环境中编译运行,目前16位环境一般使用的DOS模拟器。
现在比较好用的,emu8086这个程序,集编辑、编译、模拟运行、调试一体,比较好用,并且算带了不少例子。
另外作法:使用dosbox这个DOS模拟器,在其中安装微软的masm,或者borland的tasm,再安装编辑器(vim, edit等)编辑源程序,(或者在windows中使用文本编辑软件编辑),再用masm/tasm进行编译。调试大多使用debug
masm编译命令 (如源程序名为 abc.asm)
masm abc.asm
(按提示回车)
生成.obj文件后,
link abc.obj
正确的话,则生成abc.exe

Tasm则是:
Tasm abc.asm
tlink abc.obj