汇编语言:今天如何学习编码汇编

披露: 您的支持有助于保持网站的正常运行!我们会为此页面上推荐的某些服务收取推荐费.


汇编语言是一种非常低级的编程语言,与机器代码具有一对一的对应关系,机器代码是一系列二进制指令,可将值移入或移出CPU(或其他微处理器)中的寄存器。.

介绍

微处理器是机械计算器。它有许多命名寄存器,就像数字的握笔一样。它以机器代码的形式接收指令,该指令由一系列二进制位(1和0)表示。例如,这是一行机器代码:

10110000 01100001

前几位(10110)是将值复制到寄存器中的指令。接下来的三位数(000)标识将值复制到的寄存器。其余的(01100001)是要复制的值.

当然10110是没有意义的,计算机不会“知道”它的意思是“复制值”。设计处理器时,以10110表示的一系列电脉冲(开-关-开-关-关)会产生所需的结果。这是“机械”一词的一部分。

现在,如果您要编写一个程序供处理器执行,您可以想象编写成千上万的1和0行将既乏味又容易出错。解决方案是汇编语言。汇编语言为长字符串的二进制代码提供了易于理解的替代方法.

例如,如果10110表示“移动值”,则可以使用MOV命令将其缩写.

我们还可以给000寄存器起一个易于记忆的名称(在这种情况下,该寄存器名为AL).

最后,我们可以在其他编号系统中呈现该值,例如十进制(91)或十六进制(61)。该行将是MOV AL,61。一旦以这种方式编写了整个程序,汇编器就可以轻松地将每一行转换为适当的二进制表示形式.

计算机通过每秒处理数十亿条微小指令来进行工作(执行计算,移动数据,转换数据).

非常简单的指令(移动此值,将该值复制,将这两个值加在一起并在那里保存该值)合并形成复杂的操作,这些操作在越来越高的层次上结合起来,实际上可以做您认为有意义的事情.

汇编语言资源

在线资源

教程和基本指南

  • 从教程点开始的汇编编程教程

  • X86汇编语言编程,这是FreeBSD开发人员手册中的一章,它有助于将汇编语言编写置于操作系统开发的环境中

  • 在Code as Art博客中向X64 Assembly打个招呼,这是一个相当温和的汇编入门。

  • X86汇编语言编程,另一篇将汇编语言很好地置于其OS编程环境中的教程,该参考语言涉及Linux,Windows,甚至还涉及Mac OS X

  • PC汇编语言,主要针对运行Linux,Windows或FreeBSD的32位PC

  • X86汇编指南,来自弗吉尼亚大学计算机科学系

  • 韦伯斯特(Webster):被誉为“互联网上学习汇编语言的地方”,该网站(显然)由汇编语言艺术的作者和HLA的发明者运营

  • Linux汇编教程

  • 简易X86-64

  • X86组装

  • Windows汇编程序设计教程(pdf)

影片教学

  • 汇编语言编程教程,有关汇编的非常详尽的55个视频系列,紧随Kip Irvine撰写的《 x86处理器的汇编语言(第6版)》(如果您不关注这些视频,则可能需要更新的版本)

  • 汇编语言编程视频课程,一个由70个部分组成的视频系列,由Arthur Griffith教授,他很有民俗气息

  • 汇编语言介绍,康奈尔大学的课堂演讲,介绍汇编语言

  • 汇编语言编程,一个小时的汇编入门,一种格式很好的格式,如果您在上高中时真的喜欢在高架投影仪上关注代数示例(这是有关微处理器和微控制器的较大系列文章的一部分).

参考

  • X86指令清单,x86架构的所有指令的完整清单,并附有关于何时添加指令的注释

  • X86操作码和指令参考

  • 英特尔X86汇编语言备忘单(pdf).

工具类

汇编器-有很多可用的汇编器-以下是一些最受欢迎的免费和开源汇编器:

  • 美国宇航局

  • 财务会计准则

  • YASM

  • GASM.

IDE(集成开发环境):

  • SASM,适用于NASM,MASM,GAS,FASM汇编语言的简单跨平台IDE

  • 全新的IDE,带有内置FASM汇编器的可视汇编语言IDE

  • WinAsm Studio,一个免费的IDE,用于使用汇编程序开发32位Windows和16位DOS程序

  • 视觉MASM.

社区与持续学习

  • Dream.In.Code的组装论坛

  • MASM论坛

  • Hack论坛上的汇编语言和机器代码

图书

  • 汇编语言艺术(在线版)是一本最受欢迎的汇编语言书籍,出自于始终可读的No Starch Press;您可能也对同一作者的这些内容感兴趣:编写出色的代码:第1卷:了解机器并编写出色的代码,第2卷:低级思考,高水平编写

  • 汇编语言分步指南:使用Linux编程

  • 专业的汇编语言

  • x86处理器的汇编语言

  • 现代X86汇编语言编程:32位,64位,SSE和AVX

  • Linux和OS X的64位汇编程序设计入门:第三版– Linux和OS X

  • 80X86汇编语言和计算机体系结构简介

  • 汇编语言编程:适用于PC和便携式计算机.

您应该学习汇编语言吗?

是否应该学习汇编语言取决于您的目标。对于大多数开发人员来说,答案是“否”。

学习汇编语言的主要原因有两个:因为您想直接使用汇编语言,或者因为您想从根本上理解计算机.

从实践的角度来看,世界上只有相对少数的工程师和计算机科学家实际使用汇编语言.

绝大多数软件开发(包括几乎所有类型的所有应用程序开发)都使用高级编程语言,而不使用汇编代码。使用汇编语言的一些特定领域是:

  • 操作系统

  • 固件

  • 设备驱动程序

  • 语言设计

  • 编译器设计

  • 嵌入式系统

  • 硬件设计

  • 高级密码学

  • 理论计算机科学

学习汇编语言的另一个原因只是为了更好地了解计算机内胆中实际发生的事情。 (这就是为什么几乎所有计算机科学专业学生都必须学习汇编语言的原因。)

当然,如果您是对此真正感兴趣的人,则可能需要考虑从事低级系统开发工作的职业.

其他要学习的东西

在某些语言中,如果您仅了解一点,就可以做很多事情。 Python和Ruby就是这样-您可以在一个周末学到足够的知识来构建有价值的东西。汇编语言不是那样的.

汇编语言从未在真空中使用过。需要了解装配的工程师类型可能是在需要了解一些其他技能才能有效的领域中工作的。这些可能包括:

  • 硬件语言,例如VHDL和Verilog,以及对微处理器和电气工程的良好理解

  • 低级操作系统语言,例如C及其衍生语言:C ++,C#和D

  • 遗留语言,例如Fortran和Cobol

  • 平台语言,例如Java和Objective-C

  • 演算法

  • 编译器,解释器和语言设计.

进一步阅读和资源

我们有很多关于此类内容的信息,编程:语言,时间轴 & 导游.

您应该学习什么代码?

对应该学习哪种编程语言感到困惑?查看我们的信息图,您应该学习什么代码?

它不仅讨论了语言的不同方面,还回答了一些重要问题,例如:“我将以编程为生赚多少钱?”

您应该学习什么代码?
您应该学习什么代码?

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map