汇编语言程序设计(一)
创始人
2024-05-28 12:27:00
0

前言

在学习汇编语言之前,我们应该要知道汇编语言他是一门怎么样的语言。汇编语言是直接工作在硬件上的一门编程语言,学习汇编语言之前最好先了解一下计算机硬件系统的结构和工作原理。学习汇编语言的重点是学习如何利用硬件系统的编程结构和指令集进而有效地灵活地控制系统执行工作。汇编语言,是除了机器语言外的最底层的编程语言了。学习这门语言,可以帮助我们更加深入地理解CPU、内存等硬件的工作原理。用机器的思维去操作计算机。汇编语言和机器语言是一一对应的,汇编语言被编译成机器语言,这样的程序执行效率更高。

对于从事嵌入式行业相关的人员来讲,学习汇编语言可以帮你写出效率更高的程序,也可以帮助编程人员更好地理解高级语言,比如c语言。那么对于java、python这类语言编程人员是否就一定不用了解汇编语言呢?诚然,对于使用这类语言的编程人员来说学习汇编可能收效甚微,但是了解汇编对高级语言的内部实现也会有更好的理解。注意这里所说的学习汇编,并不是要求用汇编进行大型程序开发,而且能够看懂一些常用汇编代码即可。

在学习后续内容之前,希望读者对于一些基本的计算机知识有一定的认知,比如:具备计算机使用经验,熟悉不同进制,有一定的编程基础(c、c++…)。

1.基础知识

1.1 计算机语言发展

计算机语言总的来说分为机器语言,汇编语言,高级语言三大类。而这三种语言也恰恰是计算机语言发展历史的三个阶段。

1946年2月14日,世界上第一台计算机ENAC诞生,使用的是最原始的穿孔卡片。这种卡片上使用的语言是只有专家才能理解的语言,与人类语言差别极大,这种语言就称为机器语言。机器语言是第一代计算机语言。这种语言本质上是计算机能识别的唯一语言,人类很难理解。后来发展的语言能让人类直接理解但最终送入计算机的还是这种机器语言。

计算机语言发展到第二代,出现了汇编语言。汇编语言用助记符代替了操作码,用或标号地址符号代替地址码。这样就用符号代替了机器语言的二进制码。汇编语言也称为符号语言。比起机器语言,汇编大大进步了。尽管还是复杂,用起来容易出错,但在计算机语言发展史上是机器语言向更高级的语言进化的桥梁。

当计算机语言发展到第三代时,就进入了“面向人类”的高级语言。高级语言是一种接近于人们使用习惯的程序设计语言。它允许用英文写计算程序,程序中的符号和算式也与日常用的数学式子差不多。高级语言发展于20世纪50年代中叶到70年代,流行的高级语言已经开始固化在计算机内存里了,比如 basic语言。现在,计算机语言仍然在不断的发展,种类也相当多,比如 FORTRAN语言, COBOL语言,C语言,C++,C#, PASCAO,JAVA等等。

1.2 编程语言的分类

计算机语言发展至今已经出现了很多种语言(c/c++,python,java,c#…),下面我们通过分类看一下它们有哪些区别:

低级语言:机器语言、汇编语言

高级语言:c/c++、python、java、C#…

低级语言优点在于接近底层,程序运行速度快,缺点也同样明显,程序复杂,开发效率低,而高级语言虽然在运行速度上比不上低级语言,但是在开发效率上优点明显。但是高级语言在不能直接被机器识别,需要进行一定的转换才可以被执行。

对于转换形式的不同还可以划分为:

编译型语言:c/c++…

将代码源文件(xxx.c)经过编译器翻译之后生成可被机器执行的目标文件(机器语言),修改了源文件则需重新编译生成新的目标文件。

解释型语言:python、php…

类似于生活中的“同声翻译”,将源程序一边经过对应语言的解释器翻译成机器语言,一边执行,执行效率较低,不能生成可独立执行的目标文件,且其执行依赖于解释器。

混合型语言:java

java语言比较特殊,属于混合型语言(半编译半解释)

1.3 机器语言

计算机诞生的初期,计算机上运行的语言就是机器语言。机器语言就是机器指令的集合,机器指令是一台计算机可以正确执行的命令,一条机器指令对应一个机器码。(下图为第一台计算机ENIAC)

在这里插入图片描述
早期的程序设计都使用机器语言,程序员将用0、1编写成的程序代码打在纸带/卡片上,再通过纸带/卡片机将程序输入计算机,进行运算。

如果要计算s=768+12288-1280,机器码(8086机器)如下:

101110000000000000000011

000001010000000000110000

001011010000000000000101

也就是说程序执行到上述运算的时候,纸片上的数据应该按照上述的机器码进行打孔,可想而知如果出错,找出错误也是需要考验眼力的。(下图为输出 welcome to masm 的机器码)

在这里插入图片描述

1.4 汇编语言

由于机器语言难以辨别和记忆,很快人们就发明了另外一种方法来进行程序编写,这种方法也就是汇编语言。汇编语言的主体是汇编指令。相对于机器语言来说,汇编指令在记忆上有了极大的改善,不同于机器码,汇编采用的是机器指令便于记忆的格式。

例如:机器指令 1000100111011000 表示把寄存器BX的内容送到AX中。

而汇编指令则为:mov ax,bx

这样的方式大大方便了编程人员对于指令的记忆,此后程序人员都是采用汇编指令进行程序编写。但是我们需要理解的是计算机只能识别机器指令,将汇编指令直接输入到计算机中是不能直接识别的,故而我们在程序输入之前需要将汇编指令转换成机器指令,实现这种转换方式的程序我们称之为编译器。也就是说汇编程序的执行过程是程序员利用汇编编写程序文件,经过编译器翻译之后生成对应的机器码,再由计算机最终执行。

如下图所示:

在这里插入图片描述

汇编语言发展至今,有以下三类指令:

1)汇编指令:机器码的助记符,有对应的机器码

2)伪指令:没有对应的机器码,由编译器执行,计算机并不执行

3)其他符号:如 + - * / 等,由编译器识别,计算机并不执行

汇编语言的核心是汇编指令,它决定了汇编语言的特性。

相关内容

热门资讯

我们是一家人初中作文600字... 篇一:我们是一家人我们是一家人初中作文600字 篇一作为一个家庭,我们之间的亲情是无法用言语来形容的...
与妹妹一起走过的日子的初中作... 与妹妹一起走过的日子的初中作文 篇一初中时光如同一幅绚丽的画卷,而妹妹则是这幅画卷中最美的一笔。我们...
触网初一作文(经典5篇) 触网初一作文 篇一:网络对我生活的影响近年来,随着互联网的普及和发展,网络已经成为我们生活中不可或缺...
送你一轮明月初中作文【推荐6... 送你一轮明月初中作文 篇一初秋的夜晚,明月高挂,洒下一片银光。我静静地坐在院子里,仰望着天空中那轮明...
钢笔字范文初一【推荐6篇】 钢笔字范文初一 篇一:我与钢笔字的邂逅初一的时候,我踏入了中学的大门,开始了新的学习生活。与小学不同...
最好的奖赏作文600字(实用... 最好的奖赏作文600字 篇一奖赏,是一种对于努力和付出的肯定和鼓励。而最好的奖赏,应该是能够激发人们...
我的母亲作文【精简6篇】 我的母亲作文 篇一母爱的力量我有一个非常伟大的母亲,她是我生命中最重要的人。她对我的爱和关怀无处不在...
回望来时的路作文650字(精... 回望来时的路作文650字 篇一回望来时的路,我不禁感慨万分。一路走来,我经历了许多风雨,也收获了许多...
亲情的初中作文800字【优质... 亲情的初中作文800字 篇一亲情的力量亲情是人类最珍贵的情感之一,它是一种无私的、无条件的爱。在我初...
如何学好初一语文(优秀5篇) 如何学好初一语文 篇一初一是学习语文的关键阶段,语文作为一门基础学科,对于学生的学习能力和综合素质的...
初一新生暑期作业 数学答案【... 初一新生暑期作业 数学答案 篇一 初一新生暑期作业 数学答案 篇二初一新生暑期作业 数学答案 篇三 ...
那条路作文600字初一(推荐... 那条路作文600字初一 篇一那条路作文600字初一那条路,不长也不短,它穿过了我生活的每一个角落,见...
初中生活二三事作文【最新6篇... 初中生活二三事作文 篇一初中生活是每个人成长过程中重要的一段时光,我也不例外。在初中的三年里,我经历...
我变了作文【精简3篇】 我变了作文 篇一我变了人生中,我们常常会经历各种各样的变化,有些变化是因为外界的影响,有些则是我们内...
日出初一作文【优秀4篇】 日出初一作文 篇一初一的早晨,我迎着朝阳走出家门,准备迎接新的一天。太阳刚刚露出头,天空被染上一抹金...
初一新学期新计划作文200字... 初一新学期新计划作文200字 篇一新学期新计划新学期开始了,我制定了一些新的计划,希望能够在新的学期...
初中优秀作文(精简6篇) 初中优秀作文 篇一:我的初中生活初中生活是我人生中最美好的阶段之一。回首这三年的时光,无数的回忆涌上...
回忆鲁迅初中作文(经典5篇) 回忆鲁迅初中作文 篇一:我与鲁迅的初中岁月初中时期,对于我来说是一段充满回忆的时光。而在这段时光里,...
奇怪的人初中作文【通用3篇】 奇怪的人初中作文 篇一奇怪的人初中作文我认识一个非常奇怪的人,他叫小明。小明总是穿着一身怪异的衣服,...
枫泾状元糕-特产作文800字... 枫泾状元糕-特产作文800字_初一状物作文 篇一枫泾状元糕是上海嘉定区枫泾镇的特产之一,是一种以糯米...