(一) 学习过程:

整个过程分为两个部分:

第一:将TC2.0的环境使用虚拟软盘复制到DOS虚拟机中:

打开WinImage,fileànew,由于TC2.0的环境解压后为2.02M,所以我们在Standard format中选择2.88M。

将TC文件夹放入。保存。

在DOS虚拟机中加载做好的软盘。这时A:\内有TC2.0的所有文件了。

此处援引书中的话:

我们在把一个程序拷贝的一个空的目录后,这个目录下只有这一个程序,然后我们运行它,它可以正确运行,我们就认为这个程序在运行中不需要别的文件。但是很可能它在运行中使用了别的文件,它不是在当前目录下,而是通过系统设置的搜索路径找到相关文件。

而书中采取的解决办法是将所有文件拷贝到D:\tc2.0目录下。认为这个目录基本上不可能被TC2.0设置为相关文件的搜索目录。

那放入A:\中理论上与放入D:\中效果相似。

我的做法是先放在这里,假如A:\被设置为了TC相关文件的搜索目录,那么在继续按书上步骤进行的时候一定会遇到不同。那时就可以验证这个目录是否被设置为了TC相关文件的搜索目录。这里我先当做A:\与D:\tc2.0目录效果相同,带着这个问题继续向下走,求得验证。

第二:研究查看tc编译链接必须用到的文件

建立minic,将tc.exe拷贝到minic目录下。

运行tc.exe,清除tc工作路径。

编写程序simple.c

编译完成后,无错误信息,simple.obj可生成。

继续链接时

出现提示信息:“Unable to open input file‘c0s.obj’”

(由此处也可证明A:\也非TC2.0相关文件的搜索目录)

将c0s.obj拷贝到c:\minic中;

再次编译出现提示信息:“Unable to open input file‘emu.lib’”

(此处图片不在赘述)

将emu.lib拷贝到c:\minic中;

再次编译出现提示信息:“Unable to open input file‘maths.lib’”

将maths.lib拷贝到c:\minic中;

再次编译出现提示信息:“Unable to open input file‘graphics.lib’”

将graphics.lib拷贝到c:\minic中;

再次编译出现提示信息:“Unable to open input file‘cs.lib’”

将cs.lib拷贝到c:\minic中

再次编译成功,所有编译链接所需文件均找齐。

(二) 思考到解决到的问题:

编译链接所需文件,c0s.obj,emu.lib,maths.lib,graphics.lib,cs.lib
TC的相关文件搜索范围:如果有设置的情况下,搜索设置路径。没有设置的情况下,搜索TC.EXE所在路径。

TC环境中其他文件的作用(部分):include文件夹中是引用的头文件。TC根目录下.c文件是TC自带的例子。

(三) 思考到没解决的问题:TC环境中众多.exe文件的作用。

(四) 研究体会:我们看到的TC2.0编译环境,精简之后可以只剩有限的几个文件就可以实现基本功能。而其他的include文件等都可以省略。所以,我们看到的不一定是必须的。从另一个方面说,系统基本功能实现后,为了简单化和保证稳定性等或者其他方面考虑,我们应该要添加更多的内容进入系统。这样的系统才是完整的,稳定的,高效的。另外,文件与内存相似点在于,数据和控制信息或者可执行代码,本质都是二进制信息没有任何区别。区分他们在于CPU和程序编写者的使用方法。这是我想到的。

王爽-汇编语言-综合研究一-搭建简易C环境的更多相关文章

  1. 王爽-汇编语言-综合研究四-不使用main函数编程

    (一) 研究目的 使用C语言编程,我们一定要使用main函数么? (二) 研究过程 1) 最初的程序 首先,我们编写一个不写main函数的C语言程序. 程序如下: 在编译的过程中,没有发现错误.在链接 ...

  2. 王爽汇编语言(第三版)环境搭建(附PDF及工具下载)

    一.前言 最近在学习汇编语言,使用的是读者评价非常高的王爽老师写的<汇编语言>(第三版),为了适应现在各个版本的windows操作系统,所以采用VMWare虚拟机来搭建纯DOS环境. 二. ...

  3. 王爽<<汇编语言>> 实验十四

    ;以"年/月/日 时:分:秒"的格式, 显示当前的日期, 时间 assume cs:code code segment main: out 70h,al ;告诉CMOS RAM将要 ...

  4. 王爽< 汇编语言>实验十二

    ;此乃安装程序 ;功能:将8086cpu中断类型码为0 的中断向量设置为我们编写的中断服务程序入口地址 ;该中断在除法发送溢出的时候产生 assume cs:code code segment mai ...

  5. 王爽<汇编语言>实验十一 (附测试代码)

    ;名称: letterc ;功能: 将以0为结尾的字符串中的小写字母转变成大写字母 ;参数: ds:si指向字符串首地址 assume cs:code data segment db data end ...

  6. 王爽<汇编语言>实验十

    实验十 3.数值显示(以下程序附带测试程序) ;名称: dtoc ;功能: 将dword型数据转变为表示十进制数的字符串,字符串以0为结尾 ;参数: (ax)=dword型数据低字 ; (dx)=dw ...

  7. 关于《汇编语言(王爽)》程序6.3使用16个dw 0的问题

    在学习王爽老师<汇编语言>的第6.2节时,在程序6.3代码中,给出了如下的代码: assume cs:code code segment dw 0123h, 0456h, 0789h, 0 ...

  8. Linux下学习王爽老师的汇编语言

    坐起来非常容易,找到这条路确实非常曲折,为了后来的同志们不再纠结,特记录如下: 这几天看汇编语言时,很多人都推荐王爽老师的<汇编语言>,老师的书的确写的很好,但是讲的是ms的汇编,但是总不 ...

  9. 王爽汇编第十章,call和ret指令

    目录 王爽汇编第十章,call和ret指令 call和ret指令概述: ret和retf ret指令 retf指令 call 和 ret 的配合使用 call指令详解 call原理 call指令所有写 ...

随机推荐

  1. Django(进阶篇)之model

    Model 解析 Django的数据库,涉及相关操作时就是以下流程: 1.创建数据库,设计表结构和字段 2.使用Mysqldb来连接数据库,并编写数据访问层 3.业务逻辑层去调用数据访问层执行数据库操 ...

  2. 继承自NSObject的不常用又很有用的函数(2)

    函数调用 Objective-C是一门动态语言,一个函数是由一个selector(SEL),和一个implement(IML)组成的.Selector相当于门牌号,而Implement才是真正的住户( ...

  3. JDBC事务处理

    关于事务: 1.一个事务中的多个操作应该公用一个connection,如果每一个操作都用不同的connection,事务将无法回滚. 2.具体步骤: 1).在事务开始前,应该取消事务的自动提交,即设置 ...

  4. 利用反射及JDBC元数据编写通用查询方法

    元数据:描述数据的数据,ResultSetMetaData是描述ResultSet的元数据对象,从它可以得到数据集有多少了,每一列的列名... ResultSetMetaData可以通过ResultS ...

  5. 异步SRAM控制器的Verilog建模

    前言:sram顾名思义静态随机存储器,分为asram异步型和ssram同步型.这里驱动DE2上一块ISSI公司的512KB的asram. 设计思路:因为实际应用中单字节读写效率不高,所以本设计中仿照s ...

  6. VBA_Excel_教程:表,格

    Sub 表和格() '定义工作表 Dim ws As Worksheet 'get sheet by name[看到的表名,或序号1,2,3,...],要加Set Set ws = Worksheet ...

  7. google快捷键,通过浏览器本身来查看

    今天玩google浏览器时发现一个不需要访问google就能查看其快捷键的方式,再此记录一下,以备后用. 1:打开Google浏览器 2:打开开发者工具,有三种方法 2-1:按F12快捷键 2-2:按 ...

  8. idea 到myeclipse

    在上一篇博客使用maven进行开发过程管理之准备篇中提到了maven的基本概念.IT男罗书全觉得概念我是懂了,但是那些东西似乎离我很远啊.先开发再说吧, 于是IT男罗书全就在svn上取了源代码,并开始 ...

  9. 32、shiro框架入门3.授权

    一. 授权,也叫访问控制,即在应用中控制谁能访问哪些资源(如访问页面/编辑数据/页面操作等).在授权中需了解的几个关键对象:主体(Subject).资源(Resource).权限(Permission ...

  10. Java中的容器

    参考链接:Java容器与泛型(1) 认识容器,Java容器与泛型(2) ArrayList.LinkedList和Vector比较,Java容器与泛型(3) Hashset.TreeSet和Linke ...