轻松汇编怎样生成目标文件
‘壹’ 轻松汇编的操作指南
第一步 基本的编辑功能
这里是介绍基本的编辑功能,就像在介绍Windows自带的记事本。
文件菜单:
新建:新建一个文件,快捷键为 Ctrl+N ;
保存:保存当前文件,快捷键为 Ctrl+S ;
打开:打开一个文件,快捷键为 Ctrl+O ;
退出:退出轻松汇编 ;
另存为: 把正在编辑的文件存扮闭为另外一个文件 ;
最近使用过的文件:在这里纪录了您最近使用过的文件,可以快速打开。
如果您不希望别人看到您编辑过什么程序,可以点击“清空全部纪录”。
编辑菜单:
全选:选定正在编辑的全部内容,快捷键为 Ctrl+A;
复制:复制选定的内容到剪贴板,快捷键为 Ctrl+C;
剪切:复制选定的内容到剪贴板,并删除所选定的内容,快捷键为 Ctrl+X;
粘贴:把剪贴板中的内容复制到编辑窗口,快捷键为 Ctrl+P;
删除:删除选定内容,快捷键为 Del;
撤消:撤消上一步操作,快捷键为 Ctrl+Z,但是注意只能撤消一次。
查找菜单:
查找:在所编辑的文件中查找字符串,快捷键为 Ctrl+F;
替换:在所编辑的文件中把一个字符串替换为另一个,快捷键为 Ctrl+R;
查找下一个:从当前光标起,查找下一个,快捷键为 F3;
第二步 编写一个汇编程序
打开轻松汇编就自动为您新建了一个模板,直接在上面添加数据定义和代码就可以了。一般来说,都是先写堆栈段。输入“stacks segment stack”,用空格隔开关键字。然后按下回车键换行——您会看到,轻松汇编自动把刚才输入的那一行程序的格式整理好了。
第二行是堆栈的大小了,应该输入“db 128 p(0)”,输入“bd 128 p(0)”试试,会怎样?在换行时没有整理格式。如果您输入的汇编程序有拼写错误,轻松汇编会检测出来,并且拒绝整理错误行的格式,这时候您就可以避免这类简单而又隐蔽的错误。当然,如果您确定您输入的是正确的,而轻松汇编没有整理格式,或整理的格式不好看,请告诉我这个错误,不胜感激,联系方式见左侧小字。在您编程的过程中,左侧的导航栏会随时更新您的语法信息,可以通过导航栏来快速定位您的语法元素。
接着,把您所想要写的程序写完,进行下一步:编译、运行一个程序。
如果是以前写的程序,在轻松汇编中打开后,点击:运行“整理格式”,轻松汇编会对整个程序格式进行整理。
第三步 编译、运行一个汇编程序
把写好的汇编程序编译、运行一下,熟悉操作。
点击:运行-生成目标文件,轻松汇编就会自动生成目标文件,另外,根据您的设定(如何设定,则卖请参见第四步),还会生成其他的文件。默认是生成交叉文件和映像文件,点击右上角的按钮就可以看到这两个文件(这两个文件的作用,请参见疑难解答)。
如果有语法错误,编译会失败,错误信息会显示在下面的窗口中,点击错误信息,错误行就会突出显示出来。
点击:运行-运行,轻松汇编就会会自动完成编译、链接、运行当前程序。在程序运行时是全屏方式,结束后变成窗口方式,不会退出。
点击:运行-调试,轻松汇编就会自动完成编译、链接、调试的工作,使用的是TD作为调试工具。
就这些了,因为在轻松汇编下编译、运行一个程序确厅盯裂实简单。
在汇编时还有其他的可能,那么,请进行第四步:让汇编变的更轻松。
第四步 让汇编变得更轻松
对轻松汇编进行个人设置,让它更符合您的习惯。
在轻松汇编中根据初学者的特点,提供了很有特色的功能,如果您不喜欢的话,可以关掉它,对于运行的参数,同样也是通过设置来改变的。下面我们一一介绍:
在设置中:
格式设定:在这里的下拉框中有三个选项,全部大写、全部小写和不处理,选定后的结果是在进行格式处理时对格式化结果的处理。
自动整理格式:选定后在换行的时候会对原来行进行格式整理,如果没有选定就不整理格式。
采用调试模式:选定后在编译时包括参数/zi,在链接时包括参数/v,这样生成的可执行文件比较大,包含了用TD调试时所需要的信息,可以实现源代码调试;如不选定,不能实现源代码调试,在调试的时候不太方便。推荐选定该选项。
编译生成Com文件:选定该选项后在链接时包括参数/t,如果你写的是一个com文件的汇编代码,那么就可以选定以生成一个com后缀的文件。在选定该选项后调试时不能实现源代码调试,所以最好在编写、调试的时候不选定,最后调试通过后再选定该选项生成com文件。如果不选定,即使是com文件的汇编代码也是可以编译通过,只不过生成的是一个Exe文件。推荐不选定。
自定义参数:就是自己提供TASM和TLink的参数了,如果你对TASM了解比较多,可以实现其他的参数功能,但是对于一般的学习者,并不需要自定义参数,以免造成程序运行时出问题。
程序格式:在这里控制格式整理的方式,您可以自己设置后看看效果。不过推荐用默认方式。
显示导航栏:选中后显示导航栏,否则不显示。
显示错误栏:选中后显示错误栏,否则不显示。(推荐选中,如果不选中,有错误它是不会自动显示的。)
‘贰’ 轻松汇编中主程序如何与子程序链接子程序编译成功后都可以连接,主程序编译后连接错误显示undefined sym
是多拆缺个文件还是一旅蠢辩个文件啊?如果是多个文件……当然是可以做到的,但是需要你首先依次打开各个文档弯件,编译,生成目标文件(obj),然后重新打开主程序,修改轻松汇编的链接参数,链接……挺麻烦的,还不如直接用命令行,因为轻松汇编的设计就只考虑支持一个汇编文件,没考虑多个文件的问题。
‘叁’ 汇编语言上机环境...
Subject:汇编语言上机指导及例示
Editor:admin Time:2004-3-20 20:18 Read:52369 Score:8 Print
Preface:
从如何建立源文件到进行调试作下简要的介绍......
Content:
从如何建立源文件到进行调试作下简要的介绍,并配例题说明。由于本人水平有限,在下文在如有错误及可以进一步修改的地方请大家指出
汇编语言上机过程:
一、上机前的软件准备:
MS-DOS操作系统(雹友如:MSDOS6.22 , MSDOS7.0 等)
文本编辑器 (如:EDIT.COM , TURBO.EXE , TC.EXE , C.EXE 等)
汇编程序 (如:MASM.EXE , ASM.EXE 等)
连接程序 (如:LINK.EXE 等)
调试程序 (如:DEBUG.EXE 等)
二、汇编程序建立过程:
a.建立汇编源程序—通过———→b.编译为目标文件— ↓┬—→d.连接为可执行文件
↑
│ c.不通过,重新修改(语句错误) ↓
├——————————————————————┘ ↓
↑ f.不正确,用调试工具调试,重新修改(逻辑错误) ↓
└————————————————————————————←e运行
↓正确
g.完成
三、现在对(二)的每一个标有字母的过程(PROCEDURE)进行详细说明
PROCEDURE a:建立汇编源程序(即:建立 文件名.asm)
这个过程就相当于我们在纸上编写源程序代码一样,只不过是将纸变为了计算机,这个过程也称源代码录入。将源程序代码录入计算机的方法很多,下面将介绍具体方法。
1.通过MD-DOS自带的EDIT.EXE文本编辑器进行输入,在DOS提示符下键入:EDIT回车,这时如果你系统内可调用时,EDIT的操作画面便会出现在屏幕上,你就可在提示下进行录入了,当录入完毕后,选择存盘并给你输入的文件起一个文件名,形式:filename.asm ;(其中filename为你起的文件名,由1-8个字符组成),asm 是为汇编程序识别而必须加上去的,不可更改。存盘后在DOS下可用DOS命令DIR来查看,如果看到了所存的文件存在,就可以进行进程b。
2.如果你的系统中没有EDIT,也可用你所熟悉的文本编辑器进行录入、编辑,如可用c语言和pascal语言的文本编辑器来编辑,最后将文件存为filename.asm的形式即可。
PROCEDURE b:编译目标文件(即:编译为.obj .lst .crf文件)
这个过程计算机将把你编的正确的源代码编译为机器语言、程序清单及交叉引用表的目标文件。如果此时你的程序有语句错误,系统将报错,并指出在第几行,什么类型的错误,你源棚槐可根据提示去逐一修改。现介绍具体过程:
在DOS提示符下键入MASM filename回车
(注:你系统内的汇编程序为MASM.EXE,如果你系统的汇编程序为ASM.EXE时,便将命令变为ASM filename回车。其中filename为你刚才在PROCEDURE a 中建立的文件名)
这时汇编程序的输出文件可以有三个(分别:.obj .lst .crf),便会和芦出现三次提问,在这可以一路回车即可。下面显示的信息是源程序中的错误个数,如果为0则表示顺利通过,就可进行进程c。但如果不为0就说明有错误,并指出错误出现的行,可依据这个提示去进行修改。但如果错误太多还未等看清就显示过去了,可用如下命令形将错误信息存于一个你指定的文件,再用文本编辑器去查看。 MASM filename >filen (filen为你起的一个没用过的文件名,用以存放出错信息)以后可查看filen来得到出错信息。
PROCEDURE c:编译不通过,重新修改(错误类型:源程序语句不合法)
在执行过PROCEDURE b后,如有出错信息时,就要我们自己按PROCEDURE c去做,而不能跳跃到PROCEDURE d去,如果强行执行PROCEDURE d将无任何有效结果。
现在就开现找错吧!首先要清楚,在PROCEDURE b中检测出的错误均为每一条语句的语法或用法错误,它并不能检测出程序的逻辑设计(语句按排位置)错误,所以就要记好出错的行号。在记录行号后,就应再次执行PROCEDURE a,这时和操作应是打开已编好的源程序(以EDIT为例:在DOS提示符下键入:
EDIT filename.asm回车),依据行号进行修改并存盘,再次进行汇编,直至PROCEDURE b通过为止。便可继续向下执行PROCEDURE d。
下面给出一些常见出错信息,以便查对:
1、Register already defined 汇编内部出现逻辑错误
2、Unknown symbol type 在符号语句的类型中,有些不能识别的东西
3、Symbol is multi-defined 重复定义一个符号
4、Symbol not defined 符号没有定义
5、Syntax error 语句的语法与任何可识别的语法不匹配
6、Symbol is reserved word
企图非法使用一个汇编程序的保留字(例:定义add为一变量)
7、Not proper align/combine type SEGMENT参数不正确
8、One operand must be const 这是加法指令的非法使用
9、Operands must be same or 1 abs 这是减法指令的非法使用
10、Already have base register 试图重复基地址
11、Illegal size for item 引用的项的长度是非法的,(如:双字移位)
12、Illegal register value 指定的寄存器值不能放入“reg” 字段
13、Must be AX or AL 某些指令只能用AX或AL
14、Improper use of segment reg 段寄存器使用不合法(如:mov ds,0)
15、Division by 0 or overflow 给出一个用0作除数的表达式
16、value is out of range 数值大于需要使用的
17、CS register illeal usage 试图非法使用CS寄存器
18、DUP is too large for linker
DUP嵌套太长,以至于从连接程序不能得到所要的记录
PROCEDURE d:连接为可执行文件(即:连接为.exe 或.com文件)
在这个过程中一般没有意外,如果有也就是文件名打错了。
形式:在DOS提示符下: LINK filename 回车
PROCEDURE e:运行编译好的可执行文件
当PROCEDURE d通过后,会产生一个可执行文件,这时只需运行这个程序,看它是否按你所想象那样得出结果。在试运行期间,要尽量试一些临界状态,看 程序是否运行稳定、结果是否正确。如一切正常,便可进入PROCEDURE g了。
可最怕的是不OK,程序产生一些莫名其妙的结果(你可不要以为是你的计算机不听你的指挥,其实它是在一丝不苟地按照你编的程序执行。我以前总以为我的计算机出了毛病),如果是在考场上这时千万不要慌,稳住自己的情绪,先不要看计算机,静几分钟(反正时间多得是)。这时就要用到最关键、最常用的一步了,进行PROCEDURE f 。
PROCEDURE f:用调试工具调试,重新修改(逻辑错误)
在这我将介绍用DOS中自带的调试程序DEBUG.EXE来进行程序调试、检查错误.
首先我们要了解DEBUG的基本用法:
1、用于调试程序时的输入格式:
DEBUG FILENAME.??? 回车
其中FILENAME是主文件名,???是扩展文件名,例如我们在此前已编译好了一个文件,它的名子为:djx.exe 要对它进行调试时就在DOS提示符下
打:DEBUG djx.exe 回车,便可见到 '-' 提示符,如无任何提示说明正确,可进行调试。
2、DEBUG调试过程中用到的DEBUG命令介绍:
(注:在指令中用 [] 括起来的内容可缺省)
1)D(Dump)显示指定内存单元内容(一般用来看数据数的内容,即DS段):
格式:d[地址] 从[地址]指定的内存单元显示128个字节的内容
[地址]缺省时,显示上一个DUMP命令后面的内容
d 地址范围 显示指定范围内的内存内容。
示例:-d100 显示从DS段100H开始的内容(以十六进制显示)
2)E(Enter)修改存储单元内容(一般在DS段)
格式:e 地址 [数据] 用给定的[数据]代替指定范围的存储单元内容
e 地址 修改一个指定内存单元的内容
示例:-e ds:200 'djx'FF00AA 就可将DS段从200开始至205的内容替
换为64 6A 78 FF 00 AA
3)G(GO)运行命令
格式:-g [=地址][断点地址1 [断点地址2 ...[断点地址10]]]
从指定[地址]开始执行程序(如地址缺省从当前CS:IP开始),运行至[断点地址1]停止,显示所有寄存器及标志位内容与下一条指令,如后面还有断点,可键入g,继续执行。
示例:-g001a 则执行从当前cs:ip至001a的指令
注意:地址设置必须从指令的第一字节设起。
4)T(Trace)执行一条语句
格式: -t [=地址] 从指定[地址]起执行一条语句后停下来,显示所有寄存器内容及标志位的值与下一条指令。如[地址]缺省则从当前CS:IP开始执行
-t [=地址][value] 从指定地址起执行value条指令后停止。
5)P(proceed)执行一个循环;一个软中断或call子过程
格式:-p [=地址][n]
示例: mov ah,02h
mov dl,41h
int 21h
此时用: -p 回车后系统将显示一个字符A,如果在这不用P,而改用T,那么系统将进入INT 21H的中断调用中,出不来,这时你会误以为你的程序编错了,一定注意!!
6)R(register)显示并可修改寄存器内容
格式:-r 显示所有寄存器内容
-r 寄存器名 修改指定寄存器内容(可改:AX,BX,CX,DX,SP,
BP,SI,DI,CS,DS,ES,SS,PC,IP,F)
7)U(Unassemble)反汇编
格式:-u [地址] 从指定[地址]反汇编32个字节,若[地址]缺省则从当前地址汇编32个字节。
-u 地址范围 对指定范围内的存储单元进行反汇编
以上是在调试程序中可能用到的DEBUG命令解释,DEBUG中还有其它命令,在检查程序中不会用到,就不再介绍了。
PROCEDURE g:程序编好,那就一切OK!!!交卷过关了!大吃、大睡。
下面给出一个有病句的程序,希望大家和我一起调试、修改并通过:
先执行PROCEDURE a编辑源程序
实现功能:在屏幕上显示:Hello world
My name is DJX
文件名:error.asm
行号: 源程序代码:
1 data segment
2 out1 db 'Hello world'
3 ax db 'My name is DJX'
4 data ens
5
6 code segment
7 assume cs:code;ds:data
8 lea dx,out1
9 mov ah,2
10 int 21h
11
12 mov dl,0ah
13 mov ah,2
14 int 21h
15 mov dl,0dh
16 moo ah,2
17 int 21h
18
19 lea dx,ax
20 mov ah,
21 int 21h
22 code ends
在编辑完执行PROCEDURE b用masm进行编译:masm error回车后显示如下:
Microsoft (R) Macro Assembler Version 5.00
Copyright (C) Microsoft Corp 1981-1985, 1987. All rights reserved.
Object filename [error.OBJ]:
Source listing [NUL.LST]:
Cross-reference [NUL.CRF]:
End of file encountered on input file
error.ASM(23): warning A4085: End of file, no END directive
Open segments: DATA
error.ASM(3): warning A4016: Reserved word used as symbol: AX
error.ASM(4): error A2105: Expected: instruction or directive
error.ASM(16): error A2105: Expected: instruction or directive
error.ASM(19): error A2049: Illegal use of register
End of file encountered on input file
error.ASM(23): warning A4085: End of file, no END directive
51566 + 406450 Bytes symbol space free
2 Warning Errors
4 Severe Errors
说明这个程序有错误,并在第3,4,16,19,23行有错,
我们再执行PROCEDURE c去逐一检查
第三行:3 ax db 'My name is DJX'
它的错误在于AX不能作为变量名,更正:
3 out2 db 'My name is DJX'
注意刚才我们定义AX为变量时在后面的程序中用过'变量AX'在第19行
19 lea dx,ax
在出错报告中也报第19行错,因为不能将AX的有效地址赋给DX,更正:
19 lea dx,out2
这样一下就解决了两个错误
第四行:4 data ens
这行为一个段的结束,但语句漏打了字母,更正:
4 data ends
第十六行:16 moo ah,2
这行也是语句打错,更正:
16 mov ah,2
第二十三行:
出错信息:error.ASM(23): warning A4085: End of file, no END directive
说明本程序没有结束伪操作,更正:
加入:在第七、八行加入地址标志: start:
原23 end start
执行PROCEDURE a将源程序修改如下:
data segment
out1 db 'Hello world'
out2 db 'My name is DJX'
data ends
code segment
assume cs:code;ds:data
start:
lea dx,out1
mov ah,2
int 21h
mov dl,0ah
mov ah,2
int 21h
mov dl,0dh
mov ah,2
int 21h
lea dx,out2
mov ah,9
int 21h
code ends
end start
再次进行PROCEDURE b进行编译,屏幕显示:
Microsoft (R) Macro Assembler Version 5.00
Copyright (C) Microsoft Corp 1981-1985, 1987. All rights reserved.
Object filename [error.OBJ]:
Source listing [NUL.LST]:
Cross-reference [NUL.CRF]:
51524 + 406492 Bytes symbol space free
0 Warning Errors
0 Severe Errors
本程序在语句上已无错误。
再执行PROCEDURE d连接为可执行文件(link error回车),屏幕显示:
Microsoft (R) Overlay Linker Version 3.60
Copyright (C) Microsoft Corp 1983-1987. All rights reserved.
Run File [ERROR.EXE]:
List File [NUL.MAP]:
Libraries [.LIB]:
LINK : warning L4021: no stack segment
这时error.exe可执行文件已存在,可以执行PROCEDURE e来运行看一看是否正确
在dos提示符下键入:error回车(小心!!!)
屏幕显示:乱码,并死机。reset My computer!
说明程序在逻辑上有错误,并且严重。
这是就要用PROCEDURE f,用调试工具调试,查找错误。
在DOS提示符下键入:debug error.exe回车
屏幕出现 - 提示符,这时就可以用DEBUG的命令来找错误了,
我首先用d命令来查看数据区和内容,发展所定义的两个字符串并不在数据段的段首,而在数据段内的100h位置上,这时才想起masm有一个不成文的规定,那就是在定义完数据段后,所定义的变量均向后100h个单元,需要我们将ds段寄存器置位,在程序的start:后面加上如下指令:(执行PROCEDURE a)
mov ax,data
mov ds,ax
再执行PROCEDURE b,PROCEDURE d,PROCEDURE e来运行程序,
屏幕显示:
换行
My name is DJX及乱码,并死机。(又要重新启动!)
再次执行PROCEDURE a检查程序,发现:
1.汇编语言有规定每个字符串应由$结尾
2.在输出第一个串的语句中的AH子功能号应为09H
将以上两点改正。
再执行PROCEDURE b,PROCEDURE d,PROCEDURE e来运行程序,
屏幕显示:
Hello world
My name is DJX并死机,不能返回DOS
原因分析,在程序中没有返回DOS的指令,更正:
用PROCEDURE a来进行编辑:
用DOS 21H中断的4cH子功能便可返回DOS,在code ends前加:
mov ah,4ch
int 21h
再执行PROCEDURE b,PROCEDURE d,PROCEDURE e来运行程序,
屏幕显示:
Hello word
My name is DJX
并返回DOS
成功!
这样一个程序就调试完成,并正确。
下面是正确的源程序:
data segment
out1 db 'Hello world$'
out2 db 'My name is DJX$'
data ends
code segment
assume cs:code;ds:data
start:
mov ax,data
mov ds,ax
lea dx,out1
mov ah,9
int 21h
mov dl,0ah
mov ah,2
int 21h
mov dl,0dh
mov ah,2
int 21h
lea dx,out2
mov ah,9
int 21h
mov ah,4ch
int 21h
code ends
end start
以上这个程序很简单,只是为了说明实现汇编语言的上机编程及调试过程,汇编语言须多练习才能掌握它的特点,以便顺利通过考试
‘肆’ 64位系统下怎么把asm文件变成obj文件
用dosbox吧,模拟dos环境,编出来的exe也只能在dosbox下运行
‘伍’ 求助汇编!用轻松汇编为什么在生成目 标文件时老是说链 接失败啊编 译明明成功了
亲 轻松汇编是什么东东
你用什么汇编语言啊?
你用什么编译器啊?
‘陆’ 有没有人用过轻松汇编,为什么我用的时候在编译的过程一开始弹出错误然后就是成功可是却无法生成文件。
不清楚啊!!!自己重新安装试试!!!!
‘柒’ 轻松汇编的疑难解答
交叉文件和映像文件是什么
交叉文件和映像文件是编译过程和结果的详细显示。其中交叉文件是在第二遍扫描中建立的,映像文件是对可执行文件的说明,所以只有生成了可执行文件,才会有映像文件,但是只要不发生严重错误,就有交叉文件。
学会阅读交叉文件对于理解汇编原理更加重要,交叉文件说明如下:
1、编译后的机器代码和汇编语言的对应关系。
在交叉文件的主体部分,就是说明编译后的机器代码和汇编语言的对应关系的,分为三列,第一列是编译后机器代码在内存中的地址,第二列是编译后的机器代码,第三列就是你写的汇编语言和注释。要注意的是,在交叉文件中的数字全部都是用十六进制表示的,没有十进制表示的数字。
下面是一段交叉笑正文件的原文:
000E B1 02 MOV CL,2 ;把2送到CL中
0010 F6 E9 IMUL CL ;CL中的数值和AL中数值相乘
0012 FE C0 INC AL ;AL中的数值加1
第一列是对应指令在内存的地址,第一条指令“MOV CL,2”的起始地址是000E,占了两个字节(B1 02),所以第二条指令的起始地址是0010。
第二列是编译后的机器指令,第一条指令“MOV CL,2”编译后的机器代码是“B1 02”,其中B1表示:1)是MOV指令;2)寻址方式是立即数寻址;3)使用的是CL寄存器。02表示操作数是02H,十六进制数2。第二和第三条指令也是以此类推,查看一下指令格式就可以了。编译后的可执行文件里写的就是第二列的内容,您可以用UlTra Edit等十六进制编辑器打开看一看。
第三列就是被编译的汇编指令。
2、宏扩展情况。
在存在着宏扩展的部分,都用“1”标出,如下所示:
0024 E8 0035 CALL PINISET
MOUTPUT CLINE ;输出CLINE
0027 BA 0001 R 1 MOV DX,OFFSET CLINE
002A B4 09 1 MOV AH,09H
002C CD 21 1 INT 021H
在这段程序中,事先定义了宏MOUTPUT:
MOUTPUT MACRO PSTR ;输出PSTR
MOV DX,OFFSET PSTR
MOV AH,09H
INT 021H
ENDM
而CLINE是一个数据。
您可以看到,宏被扩展成的三条指令都用“1”标出来了。
3、错误列表。
在交叉文件的汇编语言的错误行的上面标出了错误原因、错误行、和错误类别,在交叉文件的最后,还列出了总的错误数。
4、段、子程序、宏、变量的清单。
在交叉文件的最后部分是对汇编程序中所有的段、子程序、宏、变量的清单,列出了它们的起始地址、值、类型等特征。
学会阅读交叉文件,可以对了解指令格式、编译原理有很大的帮助,而且通过阅读交叉文件,可以了解实际的宏扩展情况,有利于程序排错。
为什么语法错误的提示信息是乱七八糟
轻松汇编调用的是TASM 5.0作为内核编译汇编程序的,错误信息也是通过TASM 5.0来截获的。为了简便安装,把TASM 5.0功能实现所需要的最少的几个文件附带安装了,它们是TASM.Exe,TLink.Exe,TD.Exe,RTM.Exe。
其中,TASM.Exe的版本是4.1,TLink.Exe的版本是7.1.30.1。如果发生了上述情况,很可能是被替换成了不同的版本,您可以再其他地方拷贝一个相同版本的过来。或者重新安装轻松汇编。现在网上很多TASM5就是轻松汇编所调用的。
为什么运行结果和汇编源代码不一致呢
在有些情况下,会发生这种问题:修改了源代码以后再运行程序,运行的结果却是修改以前的,似乎修改的没有效果!
解决这个问题的办法是在修改源代码以后,都要先编译(Ctrl+F9),在编译通过后,再链接(F9),然后再运行或调试,否则修改就没有效果。
之所以会这样,是因为在轻松汇编中,编译只负责把汇编的源代码编译成目标文件(*.obj),而链接只负责把已有的目标文件链接成可执行文件(*.exe),而运行只负责运行已经存在的可执行文件,调试也只负责调试已经存在的可执行文件。这是符合在命令行下写汇编程序的规则的碰岁悔。
在这种情况下,如果你先打开一个汇编程序,第一次编译、链接、运行或调试,都很正常。接着,你修改了源代码,再运行,结果肯定是修改以前的,因为可执行文件还是按修改前的源代码生成的,链接一遍再运行,结果还是修改以前雀物的,因为目标文件是按修改以前的源代码生成的,那由此生成的可执行文件自然也是按修改以前的代码生成的了。所以必须重新编译一遍再重新链接一遍,然后再运行或调试,就没问题了。