怎么编译连接16位的汇编程序
1个回答
展开全部
使用masm.exe编译16位汇编源代码生成*.obj文件,在用link.exe连接生成16位可执行文件*.exe。在32位机器上是可以写16位程序的,因为x86的计算机体系就是为了兼容低阶程序而存在的,计算机在启动的时候就是以实模式(可以简单理解为16位的)启动的,之后操作系统才使用机器指令转向32位保护模式(因为这样从硬件级支持多任务)。编写16位、32位、以及64位汇编程序只要下载安装相应的汇编包就可以了。追问:
可以兼容低阶的程序也能兼容高阶的?回答:
计算机开机启动是实模式的,操作系统使用机器指令转入保护模式,之所以保留实模式就是为了在硬件级支持16位程序,进入保护模式以后机器还能运行16位程序是因为在保护模式下还支持一种称为虚拟86的模式,也就是说虽然在保护模式下操作系统也能执行16位机器码,但是她是保护模式提供的虚拟机状态,可以简单理解为虚拟86模式是软件仿真的16为执行环境(以便在保护模式下直接运行16位代码,而不用转回实模式)。要编译执行64机器码,必须是64cpu。否则机器无法编译执行~!低阶无法执行高阶机器码。追问:
那dos汇编里的中断指令还有用吗回答:
如果是在开机实模式下,汇编中断是硬件级执行的(绝对控制权)!
在保护模式下dos的所有汇编中断调用都是无效的,只是被操作系统虚拟执行的!追问:
就是能执行?回答:
嗯是的能执行,但是应该区别在windows操作系统下dos中断只是被仿真执行的(只是为了兼容16位软件)。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询