王爽-汇编语言-综合研究一-搭建简易C环境

(一) 学习过程:

整个过程分为两个部分:

第一:将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和程序编写者的使用方法。这是我想到的。

时间: 2024-08-27 02:37:58

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

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

(一) 研究目的 使用C语言编程,我们一定要使用main函数么? (二) 研究过程 1) 最初的程序 首先,我们编写一个不写main函数的C语言程序. 程序如下: 在编译的过程中,没有发现错误.在链接的过程中发现出现的错误如下: 链接时出现Undefined symbol ‘_main’ in module c0s 这样的错误信息,可能main函数与c0s.obj这个文件有关系. 这时我们想,C语言编译之后的文件后缀名是什么?是.obj.那汇编语言编译后的文件名是什么?也是.obj.这两个文件有

王爽-汇编语言-综合研究三-使用内存空间

(一) 研究概述 数据不仅可以存储在寄存器中,还可以存储在内存中.这次我们就研究在C语言中,怎样直接在内存中存储数据.以及这样做的一些延伸问题.另外,在附录研究中,我们还探究了C语言中循环和分支结构的实现. (二) 研究过程 1) 直接在C语言中使用内存空间 此处援引书中的话: 对于存储空间来说,要使用他们一般都需要给出两个信息:一是指明存储空间所在.是哪个的信息:二是指明存储空间有多大的类型信息. 对于寄存器来说,就需要给出寄存器的名称,寄存器的名称就也包含了他们的类型信息. 对于内存空间来说

王爽-汇编语言-综合研究二-使用寄存器

(一) 研究概述 我们为什么必须使用变量?因为我们在编程时必须存储数据.那么如果可以使用别的方法存储数据,我们就可以不必因此目的而使用变量. 用什么方法来存储数据呢?在学习汇编语言是.我们把数据存储在寄存器和内存空间中.那么,在本次试验中,我们研究的是C语言中如何使用寄存器. (二) 研究过程 (1) 编写一个程序url.c 编译链接完成,用debug加载. -u查看如下: 这里的语句比较整齐有逻辑,像是某些功能的实现语句,但是往下-u,几次都看不到所写的语句. 这里,main函数的代码应该是在

王爽-汇编语言-综合研究五-函数接收不定量参数

(一) 研究目的 我们知道,在C语言中,函数是可以传递参数的.有些函数在声明是就定义了要传的参数的个数,比如我们定义void a(int i);这说明函数a只接受一个int型参数.而有些函数,比如print函数,是可以接收不定个数的参数的.那函数是怎样接收不定量参数的呢? (二) 研究过程 1) 有限个数的参数 首先我们来看程序是如何传参数的.我们编写一个程序,让他传递有限个参数: 我们编译链接,然后反汇编查看其代码: 我们看其代码,首先,在main函数中,分别将‘a’与2对应的ASCLL码放到

最强大的王爽汇编语言学习环境使用教程

最强大的王爽汇编语言学习环境使用教程 一.前言 这是采用VMwere Workstation 12 pro虚拟机软件,搭建的MS-DOS学习环境,在windowsXP/8/10及linux中均可以使用,在这个环境中,我集成了CCDOS中文系统,pdos中文系统,使用这些系统,可以进行中文输入与显示.还集成了,十分著名的汇编语言调试工具TR,它比debug更加强大.并且集成了适合王爽汇编语言学习的微软汇编语言编译器masm5和dos中最强大的文本编辑器 vim73 for DOS,这是一个支持彩色

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

一.前言 最近在学习汇编语言,使用的是读者评价非常高的王爽老师写的<汇编语言>(第三版),为了适应现在各个版本的windows操作系统,所以采用VMWare虚拟机来搭建纯DOS环境. 二.需要的工具 VMware-workstation-12.DOS系统镜像文件.汇编编译器masm和连接器link 百度云下载链接:https://pan.baidu.com/s/1gfz4N67 密码:02y1 三.安装VMware-workstation-12 傻瓜式安装,一直点击下一步就可以(虽然网上也可以

王爽&lt;汇编语言&gt;实验十

实验十 3.数值显示(以下程序附带测试程序) 1 ;名称: dtoc 2 ;功能: 将dword型数据转变为表示十进制数的字符串,字符串以0为结尾 3 ;参数: (ax)=dword型数据低字 4 ; (dx)=dword型数据高字 5 ; ds:si指向字符串的首地址 6 ;返回: 无 7 assume cs:code 8 data segment 9 haha dd 4294967295 10 tata dd 16 dup(?) 11 data ends 12 code segment 13

王爽 汇编语言 课程设计1

assume cs:codesg data segment ;year db '1975','1976','1977','1978','1979','1980','1981','1982' db '1983','1984','1985','1986','1987','1988','1989','1990' db '1991','1992','1993','1994','1995' ;income dd 16,22,382,1356,2390,8000,16000,24486 dd 50065,9

王爽汇编语言第三版第5章实验4

第(3)小题 下面的程序的功能是将“mov ax,4c00h”之前的指令复制到内存0:200处,补全程序.上机调试,跟踪运行结果. assume cs:code code segment mov ax,     cs       ;cs为程序入口的段地址,我们就是要从这里开始复制 mov ds,ax mov ax,0020h mov es,ax mov bx,0 mov cx,     cx        ;程序刚加载完成时,cx存放的是程序的大小,这里我不确定答案,我试过后看到mov ax,4