广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >计算机系统汇编语言和机器语言深入理解
  • 854
分享到

计算机系统汇编语言和机器语言深入理解

2024-04-02 19:04:59 854人浏览 泡泡鱼
摘要

目录引言1、机器语言2、汇编语言3、高级语言总结引言 《深入理解计算机系统》第三章——程序的机器级表示。作者首先讲解了汇编代码和机器代码的关系,阐述了汇编承

引言

《深入理解计算机系统》第三章——程序的机器级表示。作者首先讲解了汇编代码和机器代码的关系,阐述了汇编承上启下的作用;

接着从机器语言IA32着手,分别讲述了如何存储数据、如何访问数据、如何完成运算以及如何进行跳转。通过这些步骤,又告诉了我们分支语句、循环语句是怎么完成的,函数调用、栈帧结构以及递归过程。

最后能通过编译器产生的汇编代码表示,我们要了解编译器和它的优化能力,知道编译器能为我们完成哪些工作。

而这篇博客我们将讲解汇编和机器代码的关系。首先下面一张图是C语言、汇编语言以及翻译过的机器语言,大家可以先有个大概的眼熟。 

1、机器语言

这系列博客第一篇 Hello World是如何运行的 我们就详细讲解了程序的编译,一个C语言程序是经过编译器变成汇编程序,然后通过汇编器变成机器代码,最后被计算机执行。

计算机是不能直接识别我们所编写的C程序或者Java程序的。它只能识别机器语言,而机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指指令系统令的集合

早期计算机就是指可以执行机器指令,进行运算的机器。在我们常用的PC机中,有一个芯片,就是我们常说的CPU(Central Processing Unit,中央处理单元)可以完成前面所说的计算机的功能,但是每一种这样的微处理器(CPU)由于硬件设计和内部结构的不同,就需要用不同的电平脉冲来控制,使它工作。所以每一种微处理器都有自己的机器指令集,也就是机器语言。

早期的程序设计均使用机器语言。程序员们将用0, 1数字编成的程序代码打在纸带或卡片上,1打孔,0不打孔,再将程序通过纸带机或卡片机输入计算机,进行运算。

用机器语言编写程序,编程人员要首先熟记所用计算机的全部指令代码和代码的涵义。手编程序时,程序员得自己处理每条指令和每一数据的存储分配和输入输出,还得记住编程过程中每步所使用的工作单元处在何种状态。这是一件十分繁琐的工作。编写程序花费的时间往往是实际运行时间的几十倍或几百倍,而且,编出的程序全是些0和1的指令代码,直观性差,还容易出错。

那么该怎么办呢?这时候汇编语言便产生了。

需要注意的是现在除了计算机生产厂家的专业人员外,一般是不需要学习机器语言了。

2、汇编语言

汇编语言的主体是汇编指令。汇编指令和机器指令的差别在于指令的表示方法上,汇编指令是机器指令便于记忆的书写格式。

比如下面将寄存器 BX 的内容发送到 AX 上:

操作:寄存器BX的内容送到AX中
1000100111011000              机器指令
mov ax,bx                    汇编指令

我们能很明显的从上面两条指令看出区别,汇编指令相对于机器指令是很容易记住的。

可能有人会问,我们用汇编语言编写程序,可是计算机只认识机器指令,那该怎么办?这时候就需要一个能将汇编语言转换成机器指令的工具,我们称其为编译器。程序员用汇编语言写出源代码,再用汇编编译器将其编译为机器码,最后由计算机执行。

  •  汇编语言是直接面向处理器(Processor)的程序设计语言。处理器是在指令的控制下工作的,处理器可以识别的每一条指令称为机器指令。每一种处理器都有自己可以识别的一整套指令,称为指令集。处理器执行指令时,根据不同的指令采取不同的动作,完成不同的功能,既可以改变自己内部的工作状态,也能控制其它外围电路的工作状态。
  • 汇编语言的另一个特点就是它所操作的对象不是具体的数据,而是寄存器或者存储器,也就是说它是直接和寄存器和存储器打交道,这也是为什么汇编语言的执行速度要比其它语言快,但同时这也使编程更加复杂,因为既然数据是存放在寄存器或存储器中,那么必然就存在着寻址方式,也就是用什么方法找到所需要的数据。
    例如上面的例子,我们就不能像高级语言一样直接使用数据,而是先要从相应的寄存器AX、BX 中把数据取出。这也就增加了编程的复杂性,因为在高级语言中寻址这部分工作是由编译系统来完成的,而在汇编语言中是由程序员自己来完成的,这无异增加了编程的复杂程度和程序的可读性。
  • 汇编语言指令是机器指令的一种符号表示,而不同类型的CPU 有不同的机器指令系统,也就有不同的汇编语言,所以,汇编语言程序与机器有着密切的关系。所以,除了同系列、不同型号CPU 之间的汇编语言程序有一定程度的可移植性之外,其它不同类型(如:小型机和微机等)CPU 之间的汇编语言程序是无法移植的,也就是说,汇编语言程序的通用性和可移植性要比高级语言程序低。

总结起来就是三个特点:机器相关性、高速度和高效率、编写和调试复杂(相对于高级语言)。

3、高级语言

前面的机器语言和汇编语言我们都有一定了了解了,汇编语言也是和机器语言一样,都是直接对硬件进行操作,但是汇编语言指令采用了英文缩写的标识符,更容易识别和记忆。但是说起来更容易识别和记忆,也只是相对于机器语言而言的。在实际编程中,汇编语言源程序也是十分复杂和冗长的,这时候高级语言产生了。

高级语言并不是指一种语言,而是包括很多编程语言,比如Java、C、c++C#python等等,是高度封装的编程语言。高级语言与计算机的硬件结构和指令系统无关,它有更强的表达能力,可方便地表示数据的运算和程序的控制结构,能更好的描述各种算法,而且容易学习掌握。但高级语言编译生成的程序代码一般比用汇编程序语言设计的程序代码要长,执行的速度也慢。

从最开始我们给出的一张图也可以看出,C语言写出的短短几行代码,翻译成汇编语言会多很多,更不用说变成机器语言了。

总结

首先我要说明的是,我们不需要学会如何用机器语言,汇编语言来进行编程,毕竟我们不是计算机生产厂家的专业人员。我们所要知道的是如何看懂汇编语言就行了。因为在我们所编写的高级语言,被翻译成汇编语言时,编译器会自动进行一些优化处理,而这些处理如果我们不知道,就会造成程序上的错误,具体实例后面会详细讲到。

以上就是计算机系统汇编语言和机器语言深入理解的详细内容,更多关于计算机系统汇编机器语言的资料请关注编程网其它相关文章!

--结束END--

本文标题: 计算机系统汇编语言和机器语言深入理解

本文链接: https://www.lsjlt.com/news/166521.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 计算机系统汇编语言和机器语言深入理解
    目录引言1、机器语言2、汇编语言3、高级语言总结引言 《深入理解计算机系统》第三章——程序的机器级表示。作者首先讲解了汇编代码和机器代码的关系,阐述了汇编承...
    99+
    2022-11-13
  • 计算机网络中机器语言、汇编语言、高级语言各有什么特点
    这篇文章主要介绍计算机网络中机器语言、汇编语言、高级语言各有什么特点,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!机器语言的特点:难学、难懂、难理解;无通用性;需要人为分配内存;运行速度最快。汇编语言的特点:程序的执...
    99+
    2023-06-14
  • 汇编语言基础理解计算机底层技术原理
    目录前言1.机器语言2.进制思想本质3.二进制我们为什么学习理解二进制?4.数据宽度5.有符号数和无符号数6.原码反码补码7.位运算8.位运算的加减乘除9.汇编语言环境说明10.寄存...
    99+
    2022-11-12
  • 机器语言、汇编语言和高级语言有哪些区别
    这篇文章主要为大家展示了“机器语言、汇编语言和高级语言有哪些区别”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“机器语言、汇编语言和高级语言有哪些区别”这篇文章吧。区别:1、机器语言的执行效率高,...
    99+
    2023-06-29
  • 计算机语言&Python解释器
    [TOC] 1.1机器语言 由于计算机内部只能接受二进制代码,因此,用二进制代码0和1描述的指令称为机器指令,全部机器指令的集合构成计算的机器语言机器语言属于低级语言 1.2汇编语言 汇编语言的实质和机器语言是相同的,都是直接对硬件操作...
    99+
    2023-01-31
    计算机语言 Python
  • 汇编语言中计算机底层技术原理的示例分析
    这篇文章将为大家详细讲解有关汇编语言中计算机底层技术原理的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.机器语言何为语言,就是人和人之间交流的工具。而汇编语言就是计算机的语言。机器语言(二进制...
    99+
    2023-06-25
  • 深入理解Go语言中的垃圾回收机制
    Go语言中的垃圾回收(GC)机制是自动进行的,开发者不需要手动管理内存。这种自动化垃圾回收机制可以帮助开发者降低内存泄漏的风险,并减...
    99+
    2023-10-08
    Golang
  • 深入了解Go语言内存管理的底层机制
    Go语言的内存管理是基于垃圾回收的机制,它使用了一个称为Go垃圾回收器的组件来自动管理内存的分配和释放。Go垃圾回收器使用了一个基于...
    99+
    2023-10-08
    Golang
  • 计算机能不能直接识别执行用汇编语言编写的程序
    这篇文章给大家分享的是有关计算机能不能直接识别执行用汇编语言编写的程序的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。不能。用汇编语言编写的程序,计算机是不能直接识别和执行的;必须先把汇编语言源程序翻译成机器语言程...
    99+
    2023-06-14
  • 自然语言处理:如何将语言转换成计算机能够理解的形式?
    自然语言处理(Natural Language Processing,NLP)是计算机科学中的一个重要分支,它致力于让计算机能够理解自然语言。自然语言是人类交流的基础,而计算机只能理解数字和符号,因此,将自然语言转换成计算机能够理解的形式是...
    99+
    2023-09-12
    git 自然语言处理 unix
  • 计算机网络中怎么样将高级语言编写的程序翻译成机器语言程序
    小编给大家分享一下计算机网络中怎么样将高级语言编写的程序翻译成机器语言程序,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!将高级语言编写的程序翻译成机器语言程序,可采用两种翻译方式:编译和解释。解释方式是将源程序逐句解释执行...
    99+
    2023-06-14
  • 深入研究Go语言的垃圾回收器管理机制
    Go语言的垃圾回收器是一种自动管理内存的机制,它负责在运行时检测和回收不再使用的内存,以避免内存泄漏和悬空指针等问题。Go语言的垃圾...
    99+
    2023-10-08
    Golang
  • 如何从Go语言角度理解关于计算机位的问题
    这篇文章主要介绍“如何从Go语言角度理解关于计算机位的问题”,在日常操作中,相信很多人在如何从Go语言角度理解关于计算机位的问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”...
    99+
    2022-10-19
  • 编程高手必备技能:掌握Go语言算法、自然语言处理与分布式系统设计
    随着互联网技术的快速发展,程序员们在编写代码的时候要求越来越高,不仅要求代码的运行速度快,还要求代码的可读性强、可维护性好、可扩展性强等等。为了满足这些要求,程序员们需要掌握一些重要的技能,其中包括掌握Go语言算法、自然语言处理与分布式系...
    99+
    2023-10-28
    编程算法 自然语言处理 分布式
  • 从入门到精通:Go语言在算法、自然语言处理和分布式系统中的应用全面解析
    Go语言是一种开源编程语言,由Google开发并在2009年发布。它被设计成具有高效、高并发、简单易学的特点。自发布以来,Go语言已经在各种应用场景中得到了广泛的应用,尤其在算法、自然语言处理和分布式系统中。 一、算法 Go语言在算法方面的...
    99+
    2023-10-28
    编程算法 自然语言处理 分布式
  • C语言数据类型是如何被大多数计算机系统所支持
    今天就跟大家聊聊有关C语言数据类型是如何被大多数计算机系统所支持,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。问题:在读K&R版的The C Programming Lang...
    99+
    2023-06-17
  • 自然语言处理:如何让计算机更好地理解我们的意图?
    自然语言处理(Natural Language Processing,简称NLP)是一种人工智能技术,它使得计算机能够理解和处理自然语言,例如英语和中文。在当今数字化时代,NLP技术的应用越来越广泛,包括自动翻译、语音识别、文本分类、信息提...
    99+
    2023-06-09
    异步编程 自然语言处理 索引
  • 分布式计算中的自然语言处理:Java 和 Numpy 的挑战与机遇。
    分布式计算中的自然语言处理:Java 和 Numpy 的挑战与机遇 随着数据规模的不断增大,自然语言处理在分布式计算中的应用越来越广泛。Java 和 Numpy 是两个常用的分布式计算框架,它们在自然语言处理中的应用也备受关注。然而,Jav...
    99+
    2023-11-12
    分布式 numpy 自然语言处理
  • ASP编程中如何应用基于机器学习的自然语言处理算法?
    随着人工智能技术的不断发展,自然语言处理(NLP)算法在各个领域中得到了越来越广泛的应用。ASP编程也不例外,利用基于机器学习的自然语言处理算法,可以大大提高ASP应用程序的智能化程度和用户体验。本文将介绍如何在ASP编程中应用基于机器学...
    99+
    2023-08-07
    编程算法 自然语言处理 bash
  • 你真的掌握了Java编程吗?深入Load算法和自然语言处理技术的挑战
    Java是一种广泛应用于企业级应用程序开发的编程语言,而Load算法和自然语言处理技术则是在Java编程中常常会遇到的技术难点。尽管很多程序员已经学习并使用Java编程多年,但仍有很多人在这些挑战中感到困惑。 Java编程的一个重要部分是内...
    99+
    2023-10-06
    编程算法 load 自然语言处理
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作