iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >计算机系统汇编语言和机器语言深入理解
  • 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--

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

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

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

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

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

下载Word文档
猜你喜欢
  • 计算机系统汇编语言和机器语言深入理解
    目录引言1、机器语言2、汇编语言3、高级语言总结引言 《深入理解计算机系统》第三章——程序的机器级表示。作者首先讲解了汇编代码和机器代码的关系,阐述了汇编承...
    99+
    2024-04-02
  • 计算机网络中机器语言、汇编语言、高级语言各有什么特点
    这篇文章主要介绍计算机网络中机器语言、汇编语言、高级语言各有什么特点,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!机器语言的特点:难学、难懂、难理解;无通用性;需要人为分配内存;运行速度最快。汇编语言的特点:程序的执...
    99+
    2023-06-14
  • 深入理解Go语言编译机制
    编程语言的编译机制一直是程序员们感兴趣的话题之一。在Go语言颇受开发者喜爱的今天,深入理解Go语言的编译机制是非常有必要的。本文将着重探讨Go语言的编译机制,并结合具体的代码示例,帮助...
    99+
    2024-04-02
  • 汇编语言基础理解计算机底层技术原理
    目录前言1.机器语言2.进制思想本质3.二进制我们为什么学习理解二进制?4.数据宽度5.有符号数和无符号数6.原码反码补码7.位运算8.位运算的加减乘除9.汇编语言环境说明10.寄存...
    99+
    2024-04-02
  • 机器语言、汇编语言和高级语言有哪些区别
    这篇文章主要为大家展示了“机器语言、汇编语言和高级语言有哪些区别”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“机器语言、汇编语言和高级语言有哪些区别”这篇文章吧。区别:1、机器语言的执行效率高,...
    99+
    2023-06-29
  • 计算机语言&Python解释器
    [TOC] 1.1机器语言 由于计算机内部只能接受二进制代码,因此,用二进制代码0和1描述的指令称为机器指令,全部机器指令的集合构成计算的机器语言机器语言属于低级语言 1.2汇编语言 汇编语言的实质和机器语言是相同的,都是直接对硬件操作...
    99+
    2023-01-31
    计算机语言 Python
  • 计算机编程语言发展史
    目录1 编程语言简介2 编程语言发展2.1 机器语言2.2 汇编语言2.3 高级语言2.4 面向对象语言3 码农洞见3.1 编程语言Bug的由来1 编程语言简介 编程语言(progr...
    99+
    2024-04-02
  • 汇编语言中计算机底层技术原理的示例分析
    这篇文章将为大家详细讲解有关汇编语言中计算机底层技术原理的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.机器语言何为语言,就是人和人之间交流的工具。而汇编语言就是计算机的语言。机器语言(二进制...
    99+
    2023-06-25
  • 深入理解Go语言的并发机制
    深入理解Go语言的并发机制 在Go语言中,通过goroutine和channel实现并发是一种非常高效和简洁的方式。并发是指程序中的多个任务可以同时执行,而不需要等待其它任务结束。通过...
    99+
    2024-04-02
  • 深入理解Go语言设计原理
    深入理解 go 语言的设计原理对于充分利用其强大功能至关重要,这些原理包括:并发性和 goroutine:go 语言通过 goroutine 实现并发性,允许并行执行代码块。通道:通道实...
    99+
    2024-04-03
    go语言 设计原理 并发请求 垃圾回收器
  • 深入理解Go语言函数的原理与机制
    深入理解Go语言函数的原理与机制 在Go语言中,函数是一等公民,也是其最重要的特性之一。函数可以作为参数传递,也可以作为返回值,这种特性使得函数在Go语言中具有非常灵活的应用方式。在本...
    99+
    2024-03-10
    go函数原理 函数机制解析 go函数深入 go语言
  • 简单写一个计算机编程c语言
    当然,下面是一个简单的C语言程序示例,用于计算两个整数的和:```c#include <stdio.h>int main...
    99+
    2023-09-27
    c语言
  • day01编程语言,计算机组成: 五大组
    本周内容 第一天: 计算机原理 操作系统 第二天: 编程语言 python入门:环境 - 编辑器 变量 基本数据类型​ 学习方法 鸡汤 - 干货​wwwh:what | why | whe...
    99+
    2023-01-31
    五大 编程语言 计算机
  • 深入理解C语言的new[]和delete[]
    目录1、重载操作符2、new和delete的原理3、new[]和delete[]的原理总结c++的动态内存管理方式和c语言不一样,在c++中使用new和delete来替换c语言中的m...
    99+
    2024-04-02
  • c语言和计算机二级一样吗
    否,c 语言和计算机二级并非同一概念。c 语言是一种编程语言,而计算机二级是一项认证考试,用于评估计算机应用能力。 C 语言和计算机二级是一样的吗? 否,C 语言和计算机二级不是一回事...
    99+
    2024-04-13
    c语言
  • 深入理解Go语言中的垃圾回收机制
    Go语言中的垃圾回收(GC)机制是自动进行的,开发者不需要手动管理内存。这种自动化垃圾回收机制可以帮助开发者降低内存泄漏的风险,并减...
    99+
    2023-10-08
    Golang
  • 计算机能不能直接识别执行用汇编语言编写的程序
    这篇文章给大家分享的是有关计算机能不能直接识别执行用汇编语言编写的程序的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。不能。用汇编语言编写的程序,计算机是不能直接识别和执行的;必须先把汇编语言源程序翻译成机器语言程...
    99+
    2023-06-14
  • 汇编语言入门汇编指令及寄存器详解教程
    目录前言什么是汇编语言汇编语言产生的原因汇编与二进制的关系寄存器寄存器作用存取速度比较寄存器分类常用寄存器用途寄存器EAX、AX、AH、AL的关系汇编语言指令数据传送指令算术运算指令...
    99+
    2024-04-02
  • 深入理解Go语言注释编码规范
    在Go语言中,注释编码规范是非常重要的,它不仅可以使代码更加易读和易维护,还能帮助其他开发者快速理解你的代码逻辑。本文将详细介绍Go语言中的注释编码规范,并附带具体的代码示例,帮助读者...
    99+
    2024-04-02
  • 自然语言处理:如何将语言转换成计算机能够理解的形式?
    自然语言处理(Natural Language Processing,NLP)是计算机科学中的一个重要分支,它致力于让计算机能够理解自然语言。自然语言是人类交流的基础,而计算机只能理解数字和符号,因此,将自然语言转换成计算机能够理解的形式是...
    99+
    2023-09-12
    git 自然语言处理 unix
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作