汇编语言在c语言学习中的应用_第1页
汇编语言在c语言学习中的应用_第2页
汇编语言在c语言学习中的应用_第3页
汇编语言在c语言学习中的应用_第4页
汇编语言在c语言学习中的应用_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

-精选财经经济类资料- -最新财经经济资料-感谢阅读- 1 汇编语言在 C 语言学习中的应用 摘 要:汇编语言是和机器语言 一一对应的一种符号语言。通过汇编语 言能够看到程序执行的全过程。通过查 看高级语言(这里以 C 语言为例)对应 的汇编语句,可以更加深入地理解程序 的执行步骤。本文通过一个 C 语言表达 式的例子来说明利用汇编指令能够解释 C 语言中晦涩难懂的语句的执行过程。 中国论文网 /7/view-12930566.htm 关键词:汇编语言;机器语言; 符号语言;高级语言 一、引言 在 C 语言的学习过程中,不同的 读者会使用不同的编译器进行程序的运 行和调试,不同的 C 语言编译器由于开 -精选财经经济类资料- -最新财经经济资料-感谢阅读- 2 放厂商不同,对于 C 语言的某些晦涩难 懂的表达式产生不同的结果。尽管这些 问题只占 C 语言学习过程中的小部分, 但是对于 C 语言的初学者来说会有学习 障碍并产生畏难情绪。目前很多编译器 都有一个反汇编功能。这里的反汇编特 指将 C 程序源代码反向编译成汇编语言 的代码。由于汇编语言和机器语言是一 一对应的,因此通过汇编语言能够看到 对应的 C 语言代码在机器中的运行全过 程,这个过程仅仅通过 C 程序代码来看 是不够清晰的。本文以一个表达式的例 子来说明反汇编后的语句能够解释 C 代 码中的疑难问题。特别说明的是这里需 要读者对汇编语言有简单的了解。 二、汇编语言与高级语言 计算机能够识别的只有二进制的 机器指令,然而由于机器指令繁琐且难 懂,因此产生了一种符号语言即汇编语 言。汇编语言用一些常见的英文字母和 数据表示一个指令,同时汇编语言中的 汇编指令与机器指令是一一对应的,而 -精选财经经济类资料- -最新财经经济资料-感谢阅读- 3 目前流行的高级语言是做不到的。汇编 语言是机器语言的助记符,在各种计算 机语言中,除了机器语言,汇编语言是 执行速度最快的语言,所占的内存空间 也很小。汇编语言曾经是非常流行的程 序设计语言,但是随着软件规模的不断 增长,人们对于软件开发的进度和效率 的要求越来越高,汇编语言显得有些力 不从心,高级语言就逐渐代替了汇编语 言。汇编语言的应用逐渐转向了嵌入式 领域和工业控制领域。但是高级语言并 不能完全代替汇编语言,汇编语言能够 最大限度地发挥硬件的性能。 我们经常接触的 C 语言、C+语 言、Java 语言、 C#语言都属于高级语言 的范畴,高级语言和机器语言有一定的 鸿沟,它属于偏向人类自然语言的一种 计算机语言。高级语言中的语句类似于 数学表达式,人们更加容易理解,因此 高级语言成为了目前主流的计算机语言。 尤其是近些年来,面向对象的思想能够 更加准确地模拟了自然界的行为,因此 -精选财经经济类资料- -最新财经经济资料-感谢阅读- 4 面向对象的高级语言(如 C+、Java 、 C#)成为了软件设计的主 流语言。 三、一个例子 这里举一个 C 语言的例子,程序 输出由三个自增运算符相加后的结果。 运行的环境是 VC+6.0。这里有必要说 明的是,该语句在不同的编译器下面可 能会产生不同的结果。而对于不同结果 的解释则要通过将 C 语言转换成对应的 汇编语言才能够解释清楚。限于篇幅, 这里只将程序的核心语句列出: int i = 1; int s; s = (+i) + (+i) + ( +i) ; printf(”%d n” , s) ; 很多初学者看到这个表达式,不 假思索地就会得出 6,因为他们认为 i 初始值为 1,自增后都为 2,因此结果 为 6。还有一部分人想得深入一些,他 们认为编译器会先计算第一个+i,i 自 增以后为 2,然后计算第二个+i,自增 后 i 的值是 3,最后计算第三个+i,得 -精选财经经济类资料- -最新财经经济资料-感谢阅读- 5 到 4,计算 2+3+4 值为 9。这种想法看 似合理,然而通过编译器 VC+6.0 运行 后的结果是 10。这个结果让人无法理解, 这里只有通过该表达式对应的汇编语言 才能解释清楚。通过 VC+6.0 中的反编 译工具,得到了语句 s = (+i) + (+i) + (+i )所对应的汇编语言 如下: mov ecx , dword ptrebp-8 add ecx, 1 mov dword ptr ebp-8, ecx mov edx, dword ptr ebp-8 add edx, 1 mov dword ptr ebp-8, edx mov eax , dword ptr ebp-8 add eax, dword ptr ebp-8 mov ecx , dword ptr ebp-8 add ecx, 1 mov dword ptr ebp-8, ecx add eax, dword ptr ebp-8 mov dword ptr ebp-0Ch, eax 从对应的汇编语言中可以看出, -精选财经经济类资料- -最新财经经济资料-感谢阅读- 6 VC+对该语言进行了优化。先算的是 前两个+i,即此时 i 的值为 3,前后两 个 i 都为 3。然后相加后再计算第三 +i,此时 i 的值为 4,这样最后的结 果就是 3+3+4 的和为 10,和程序运行 后的结果一致。这里体现出了汇编的思 维,而不仅仅是用 C 语言的语法来解释。 四、总结与展望 通过前面的例子可以看出,在学 习 C 语言之前,适当了解一些汇编语言 的语法和计算机底层硬件的知识是大有 好处的,因为汇编语言和机器语言能够 做到一一对应,而高级语言则无法做到, 因此将高级语言(如 C 语言)通过编译 器转化成汇编语言,可以清晰地看到程 序在机器上的运转过程。对于程序中含 义模糊的语句就可以一目了然了。通过 上面的例子也可以看出,学习 C 语言最 好要有点汇编语言

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论