编译原理macro有什么用
① 轻松汇编怎么用
一步 基本的编辑功能
这里是介绍基本的编辑功能,就像在介绍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了解比较多,可以实现其他的参数功能,但是对于一般的学习者,并不需要自定义参数,以免造成程序运行时出问题。 程序格式:在这里控制格式整理的方式,您可以自己设置后看看效果。不过推荐用默认方式。 显示导航栏:选中后显示导航栏,否则不显示。 显示错误栏:选中后显示错误栏,否则不显示。推荐选中,因为不选中的话,有错误它也不会自动显示的。
编辑本段三,疑 难 解 答
交叉文件和映像文件是什么?
交叉文件和映像文件是编译过程和结果的详细显示。其中交叉文件是在第二遍扫描中建立的,映像文件是对可执行文件的说明,所以只有生成了可执行文件,才会有映像文件,但是只要不发生严重错误,就有交叉文件。 学会阅读交叉文件对于理解汇编原理更加重要,交叉文件说明如下: 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),而运行只负责运行已经存在的可执行文件,调试也只负责调试已经存在的可执行文件。这是符合在命令行下写汇编程序的规则的。 在这种情况下,如果你先打开一个汇编程序,第一次编译、链接、运行或调试,都很正常。接着,你修改了源代码,再运行,结果肯定是修改以前的,因为可执行文件还是按修改前的源代码生成的,链接一遍再运行,结果还是修改以前的,因为目标文件是按修改以前的源代码生成的,那由此生成的可执行文件自然也是按修改以前的代码生成的了。所以必须重新编译一遍再重新链接一遍,然后再运行或调试,就没问题了。
② C语言中的每条可执行语句和非可执行语句最终都是将是背转换成二进制的机器指令为什么是错的
诸如括号、注释等非可执行语句并不会转化为机器指令,所以是错的。解决方法如下:
1、首先,编写For循环第一句。