0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

计算机基础知识之汇编语言1

jf_78858299 来源:前端柒八九 作者:前端柒八九 2023-03-31 16:29 次阅读

汇编语言和本地代码是一一对应的

在前面的文章中我们多次提到,计算机CPU能直接解释运行的只有 「本地代码」 (机器语言)程序。用C语言等编写的源代码,需要通过各自的 「编译器」 编译后,转换成本地代码。

通过调用本地代码的内容,可以了解程序最终是以何种形式来运行的。但是,直接打开本地代码来看,只能看到数值的罗列。

我们可以采用另外一种方式,在各本地代码中,附带上表示其功能的英语单词缩写。例如,在加法运算的本地代码中加上add、在比较运算的本地代码中加上cmp等。这些缩写被称为 「助记符」 ,使用助记符的编程语言称为**「汇编语言」**

不过, 「即使是用汇编语言编写的源代码,最终也必须要转换成本地代码才能运行」 。负责准换工作的程序称为 「汇编器」 ,转换这个一处理本身称为 「汇编」

❝用汇编语言编写的源代码,和本地代码是一一对应的

本地代码也可以反过来转换成汇编语言的源代码。持有该功能的 「逆变换」 程序称为 「反汇编程序」 ,逆变换这一处理本身称为 「反汇编」

图片


不会转换成本地代码的伪指令

汇编语言的源代码,是由转换本地代码的指令和针对汇编器的 「伪指令」 构成的。 「伪指令负责把程序的构造及汇编的方法指示给汇编器(转换程序)」 。不过,伪指令是无法汇编转换成本地代码。

图片

如上是一个汇编代码片段。其中 「彩色」 部分是伪指令。

由伪指令segmentends围起来的部分,是给构成程序的命令和数据的集合体加上一个名字而得到的,称为 「段定义」 。段定义的英文表达segment具有区域的意思。在程序中, 「段定义指的是命令和数据等程序的集合体的意思」

❝一个程序由多个段定义构成

如上图所示。源代码的开始位置,定义了3个名称分别为_TEXT_DATA_BSS的段定义。

  • _TEXT是指令的段定义
  • _DATA是被初始化(有初始值)的数据的段定义
  • _BSS是尚未初始化的数据的段定义

而这些段定义的名称及划分方法,不同的编译器都有自己的一套规则。

伪指令procendp围起来的部分,表示的是过程Proceduce的范围。在汇编语言中,这种相当于C语言的函数的形式称为过程。


汇编语言的语法是**「操作码 + 操作数」**

「在汇编语言中,1行表示对CPU的一个指令」 。汇编语言指令的语法结构是 「操作码」 + 「操作数」

  • 「操作码」 表示的是指令动作
  • 「操作数」 表示的是指令对象

操作码和操作数罗列在一起的语法,就是一个英文的指令文本。操作码是动词,操作数相当于宾语。

能够使用何种形式的操作码,是由CPU的种类决定的。

图片

常用操作码的功能

本地代码加载到内存后才能运行。内存中存储着构成本地代码的指令和数据。程序运行时,CPU会从内存中把指令和数据读出,然后再将存储在CPU内部的寄存器中进行处理。

图片「寄存器是CPU中的存储区域」 。不过,寄存器并不仅仅具有存储指令和数据的功能,也有运算功能。寄存器的名称会通过汇编语言的源代码指定给操作数。内存中的存储区域是用 「地址编号」 来区分的。CPU内的寄存器是用eaxebx这些名称开区分的。

下图是CPU的寄存器的主要种类和角色图片


mov指令

mov指令的两个操作数,分别是用来指定数据的 「存储地」「读出源」

操作数可以指定寄存器、常数、标签(附近在地址前)以及用方括号([])围起来的这些内容。

  • 如果指定了 「没有用方括号围起来」 的内容,就表示对该值进行处理
  • 如果指定了 「用方括号围起来」 的内容,方括号中的值则会被解释为 「内存地址」 ,然后就会对该内存地址对应的值进行读写操作
mov ebp,esp;
mov eax,dword ptr [ebp+8];

mov ebp,esp中,esp寄存器中的值被直接存储在ebp寄存器中。esp寄存器的值是100ebp寄存器的值也是100

mov eax,dword ptr [ebp+8];中,ebp寄存器的值加8后得到的值会被解释为内存地址。如果ebp寄存器的值是100的话,那么eax寄存器中存储的就是100 + 8 = 108地址的数据。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10442

    浏览量

    206560
  • 计算机
    +关注

    关注

    19

    文章

    6649

    浏览量

    84526
  • C语言
    +关注

    关注

    180

    文章

    7530

    浏览量

    128629
  • 编译器
    +关注

    关注

    1

    文章

    1577

    浏览量

    48614
收藏 人收藏

    评论

    相关推荐

    《微机原理与汇编语言》微机基础知识

    `《微机原理与汇编语言》微机基础知识[hide][/hide]`
    发表于 04-05 13:00

    汇编语言是什么?怎样去学习汇编语言

    汇编语言是什么?怎样去学习汇编语言呢?计算机怎么识别你写的代码呢?
    发表于 11-29 06:03

    计算机基础知识

    前言《MSP430单片机应用基础与实践》(华中科技大学出版社)------第0章------计算机基础知识(本文章作备忘录使用)1.进制转换2.数值数据的表示3.计算机的码制
    发表于 11-29 06:03

    什么是汇编语言

    文章目录前言一、 汇编语言简介1.1 什么是汇编语言1.2机器语言简介1.3 汇编语言的演变史1.4 汇编语言的广义组成二、硬件与软件2.1
    发表于 02-24 07:01

    计算机组成原理与汇编语言程序设计

    计算机组成原理与汇编语言程序设计是为中央电大计算机组成原理与汇编语言程序设计课程编写的教材。在开始学习本书之前,请大家务必先认真阅读这篇前言,它将告诉你本课
    发表于 10-21 17:56 0次下载
    <b class='flag-5'>计算机</b>组成原理与<b class='flag-5'>汇编语言</b>程序设计

    微机原理与汇编语言程序设计课件

    微机原理与汇编语言程序设计课件为PPT文件,内容有:第1章 基础知识 4第2章 微型计算机系统结构 6第3章 程序加载并执行 4第4章 微处理器一般指令 6第5
    发表于 12-06 22:20 5次下载
    微机原理与<b class='flag-5'>汇编语言</b>程序设计课件

    计算机组成原理与汇编语言习题一

    计算机组成原理与汇编语言习题一   硬盘低格格式化是对硬盘最彻底的初始化方式,经过低格后的硬盘,原来保护的数据将全部丢失
    发表于 04-15 16:16 507次阅读

    计算机基础知识介绍

    计算机基础知识计算机基础知识计算机基础知识
    发表于 12-03 16:13 0次下载

    《微机原理与汇编语言》微机基础知识

    《微机原理与汇编语言》微机基础知识
    发表于 12-14 15:07 0次下载

    计算机学习教程之指令系统与汇编语言程序设计课件免费下载

    本文档的主要内容详细介绍的是计算机学习教程之指令系统与汇编语言程序设计课件免费下载包括了:1.汇编语言程序设计,2.程序设计举例,
    发表于 01-03 08:00 0次下载

    计算机的机器语言汇编语言与高级语言的详细资料介绍

    计算机语言通常是一个能完整、准确和规则地表达人们的意图,并用以指挥或控制计算机工作的“符号系统”。计算机语言通常分为三类:即机器语言汇编语言
    的头像 发表于 02-06 16:11 5391次阅读

    [从零学习汇编语言] - 计算机中的硬件与软件

    文章目录前言一、 汇编语言简介1.1 什么是汇编语言1.2 机器语言简介1.3 汇编语言的演变史1.4 汇编语言的广义组成二、硬件与软件2
    发表于 12-31 19:55 10次下载
    [从零学习<b class='flag-5'>汇编语言</b>] - <b class='flag-5'>计算机</b>中的硬件与软件

    构建 4 位计算机汇编语言汇编器(第 2 部分)

    一旦我们构建了一台计算机,下一步就是开发一种汇编语言,然后是一个可以汇编我们程序的汇编器。   在我 之前的专栏 中,我们介绍了在计算机内存
    发表于 08-01 17:52 628次阅读
    构建 4 位<b class='flag-5'>计算机</b>:<b class='flag-5'>汇编语言</b>和<b class='flag-5'>汇编</b>器(第 2 部分)

    构建 4 位计算机汇编语言汇编器(第 1 部分)

    我们已经到了需要为 4 位 HRRG 计算机定义汇编语言的地步,但首先我们需要考虑某些概念。 如今,我们习惯于使用 C/C++、Java、Python 等高级语言对我们的计算机和微控制
    发表于 08-01 17:39 674次阅读
    构建 4 位<b class='flag-5'>计算机</b>:<b class='flag-5'>汇编语言</b>和<b class='flag-5'>汇编</b>器(第 1 部分)

    计算机基础知识汇编语言2

    在前面的文章中我们多次提到,计算机CPU能直接解释运行的只有 「本地代码」 (机器语言)程序。用C语言等编写的源代码,需要通过各自的 「编译器」 编译后,转换成本地代码。
    的头像 发表于 03-31 16:30 1249次阅读
    <b class='flag-5'>计算机</b><b class='flag-5'>基础知识</b>之<b class='flag-5'>汇编语言</b>2