1.编辑源程序 (文本编辑器等)

assume cs:codesgcodesg segmentmov ax, 0123hmov bx, 0456hadd ax, bxadd ax, axmov ax, 4c00hint 21hcodesg endsend

保存文件格式 ( .asm )

2.编译

工具:masm.exe (汇编编译器)

① 进入 DOS方式,运行masm.exe (注意路径问题,最好所有的相关文件在同一路径)

图1 运行masm.exe

② 编译源程序,确定源程序文件名,生成目标文件以及相关的中间过程文件(如果不需生成中间文件,直接按Enter即可)

目标文件:1. OBJ
列表文件:NUL. LST
交叉引用文件:NUL. CRF

图2 输入要编译的源程序文件名

一般来说,有两类错误我们期望的目标文件:

第一种: 程序中有”Severe Errors”;
第二种: 找不到所给出的源程序文件.

3. 连接

工具:link.exe (连接器)

① 运行link.exe;

图3 运行link.exe

② 输入要连接的目标文件后,按Enter,中间文件直接按Enter,可跳过不生成;

图4 输入目标文件名

可执行文件:1.EXE
镜像文件:NUL.MAP
库文件:.LIB

到这里可能大家对连接的作用是什么,还不是很清楚…

其实连接的作用的以下几个:

① 当源程序很大时,可以将它们分为多个源程序文件来编译,每个源程序编译成为目标文件后,再用连接程序将它们连接到一起,生成一个可执行文件;

② 程序中调用某个库文件中的子程序,需要将这个库文件和该程序生成的目标文件连接到一起,生成一个可执行文件;

③ 一个源程序编译后,得到了存有机器码的目标文件,目标文件中的有些内容还不能直接用来生成可执行文件,连接程序将这些内容处理为最终的可执行信息。所以,在只有一个源程序文件,而又不需要调用某个库中的 子程序的情况下,也必须用连接程序对目标文件进行处理,生成可执行文件.

4.以简化的方式进行编译和连接

1.编译

图5 简捷的编译过程

2.连接

图6 简捷的连接过程

自动忽略中间文件的生成.

现在,我们来看一下可执行文件(.exe)的执行过程

① 在debug调试工具中,输入可执行文件的名字,按Enter键,这时请思考问题1;
② 1.exe中的程序在运行;
③ 运行结束后,返回,再次显示提示符,请思考问题2.

问题1:此时,有一个正在运行的程序将1.exe中的程序加载入内存,这个正在运行的程序是什么? 如何使程序得以运行 ?

问题2:程序结束后,返回到哪是?

一起回答问题1和问题2.

① 在DOS系统中执行1.exe时,是正在运行的command,将1.exe中的程序加载入内存;
② command设置CPU的CS:IP指令程序的第一条指令(即程序的入口),从而使程序得以运行;
③ 程序运行结束后,返回到command中,CPU继续运行command.

5.操作系统的外壳

操作系统是由多个功能模块组成的庞大、复杂的软件系统。任何通用的操作系统,都要提供一个称为shell(外壳)的程序,用户(操作人员)使用这个程序来操作计算机系统进行工作。

DOS中有一个http://command.com,这个程序在DOS中称为命令解释器,也就是DOS系统的shell.

DOS启动时,先完成其他重要的初始化工作,然后运行http://command.com,http://command.com运行后,执行完其他的相关任务后,在屏幕上显示出由当前盘符和当前路径组成的提示符,比如:“c:”或“c:windows”等,然后等待用户的输入.

用户可以输入所要执行的命令,比如,cd,dir,type等,这些命令由command执行,command执行完这些命令后,再次显示当前盘符和当前路径组成的提示符,等待用户的输入.

如果用户要执行一个程序,则输入该程序的可执行文件的名称,command首先根据文件名找到可执行文件,然后将这个可执行文件中的程序加载入内存,设置CS:IP指向程序的入口. 此后 ,command暂停运行,CPU运行程序. 程序运行结束后,返回到command中,command再次显示由当前盘符和当前路径组成的提示符,等待用户的输入.

在DOS中,command处各种输入:命令或要执行的程序的文件名,我们通过command来进行工作的.

vs 编译设置obj路径_编译、连接相关推荐

  1. vs 编译设置obj路径_FLUENT UDF 环境变量设置

    一.FLUENT加载UDF报错分析 UDF 链接到fluent有两种方式,解释方式(interpreted)或者编译(compiled)方式. 解释方式不需要编译器,因此比较方便,但它速度慢.而且如果 ...

  2. 我的世界设置java路径_我的世界java路径设置方法

    我的世界java路径怎么设置?路径设置方法送给大家,这里是Hao76小编给大家带来的我的世界java路径设置方法,还不知道怎么设置路径的小伙伴赶快来和小编一起看看怎么设置路径吧! 我的世界java路径 ...

  3. 我的世界设置java路径_我的世界Java路径设置攻略

    我的世界Java路径设置攻略带给玩家,我的世界这款游戏在玩之前需要先设置Java路径,Java路径在哪,看看我的世界Java路径设置攻略. 我的世界java路径设置攻略: 1.首先我们要确保电脑中已经 ...

  4. 我的世界设置java路径_我的世界启动器Java路径怎么设置?java路径设置攻略

    我的世界这款游戏在电脑上打开是需要用到启动器的,不过很多玩家会经常碰到java路径设置不正确等等情况,那么我的世界启动器Java路径怎么设置呢?下面巴士小编就给大家带来java路径设置攻略. 我的世界 ...

  5. php指向mysql路径_编译php 但不知道--with-mysql指向哪个路径

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 本人是用yum源装的mysql 但不知 --with-mysql= 该指向哪里 ./configure --prefix=/opt/php5 --with ...

  6. 设置java路径_关于java路径设置

    java应用程序路径设置问题 今天在教科书上抄写了一个java程序.是用来计算5个数的平均数的.我先用记事本编辑了代码,编译通过,却运行出错了.经过多方查证,发现是path的的问题.现将解决方案整理如 ...

  7. linux 编译mqtt静态库_编译MQTT C++ Client

    nmake  -f  ms\nt.mak(这是静态库,动态库是ntdll.mak) nmake  -f  ms\nt.mak test(测试命令,如果成功则最后显示"passed all t ...

  8. java中常见的编译错误的是_编译时JAVA最常见的错误有哪些

    如果你正学习Java语言,你在编译和执行代码的时候遇到问题,一般来说问题将分为2类:无论你遇到的是编译时错误,这说明你的程序编译失败,还是你遇到运行时错误,这是指错误发生在你成功地编译了程序但不能运行 ...

  9. java编译异常有哪些_编译时JAVA最常见的错误有哪些

    如果你正学习Java语言,你在编译和执行代码的时候遇到问题,一般来说问题将分为2类:无论你遇到的是编译时错误,这说明你的程序编译失败,还是你遇到运行时错误,这是指错误发生在你成功地编译了程序但不能运行 ...

最新文章

  1. 携程供应商接口数据解密AES/CBC/PKCS5Padding
  2. python【力扣LeetCode算法题库】面试题59 - II- 队列的最大值
  3. 茶觉 | “治愈”的白牡丹
  4. agv matlab应用,简单介绍一下agv调度控制系统常见的软件应用
  5. android studio 安装问题,解决Android Studio的安装问题
  6. 固定资产管理有关的计算机知识,计算机技术在固定资产管理中的具体应用.pdf...
  7. 大道至简,仅需4行代码提升多标签分类性能!ICCV21 南大提出Residual Attention
  8. 商城系统学习总结(1)——订单与库存在高并发场景下案例解析
  9. [SD2.0大会]在大型企业中领导敏捷--开发团队领导所必需的技能
  10. Oracle中wm_concat函数报错解决方法
  11. ios python3闪退_解决Python3 cx_Freeze打包闪退/无法执行以及No module named 'matplotlib.backends.backend_tkagg'...
  12. 找出数组中的最大值和最小值
  13. AI智能电话机器人源码搭建揭秘!
  14. 程序员一周内了解一个行业的方法
  15. 直接序列扩频通信系统
  16. Java 数字转字符串并指定位数,位数不足,自动补零
  17. xxljob实战总结
  18. linux学校_10本Linux内核书籍推荐
  19. 不知道如何选择可视化图形?9大类别数据图表教你使用最佳表达图形
  20. CnOpenData中国专利创新数据

热门文章

  1. 如何更改rhevm中admin的密码
  2. oracle oid 10G
  3. Kylin 2.0 Spark Cubing 优化改进
  4. 让Mootools的语法结构像Jquery那样
  5. 通过while循环一步步实现九九乘法表
  6. [转帖]漫画趣解Linux内核
  7. 十七 Ajax校验用户名功能
  8. CVE-2016-1240 Tomcat 服务本地提权漏洞
  9. SQLCE数据库的几点研究
  10. 10.28-11.1-广州软件所-实习工作日记