汇编语言(举个栗子)

2023-11-05 06:45
文章标签 汇编语言 举个 栗子

本文主要是介绍汇编语言(举个栗子),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。

先举个栗子

        假设:让我们以做饭为例子,来解释机器语言、汇编语言和C语言之间的区别与作用。

1. 机器语言:

        比喻:想象你是一名大厨,但你只能与一位独特的厨房助手进行沟通,这位助手只能理解特定的二进制指令,比如"1010011101110100"。

        实际:在这个比方中,机器语言就相当于这些二进制指令,是计算机硬件直接理解和执行的底层指令。每个二进制序列对应于一项具体的操作,例如搅拌、加热等。

2. 汇编语言:

        比喻:然后,你意识到直接与这位助手沟通太复杂了,于是你设计了一份菜谱,使用一些简化的符号和助记词,比如"搅拌"、"加热"。

        实际:汇编语言就像是这份菜谱,使用更易读的符号和助记词,代表了底层机器语言的指令。你现在可以通过编写这种符号化的指令,而无需直接操作底层的二进制,使得沟通变得更为方便。

3. C语言:

        比喻:后来,你发现编写一份菜谱仍然需要很多工作,于是你雇佣了一位主厨,他可以根据更高级别的指令来协调整个厨房,比如"做一道BIANGBIANG面"、"准备一份番茄炒鸡蛋"。

        实际:C语言就相当于这种高级别的指令集。通过使用C语言,你可以以更抽象和易读的方式表达烹饪步骤,而不必亲自处理每个底层的细节。C语言的代码可以通过编译器转换为机器语言,使得整个烹饪流程更为灵活和可管理。

        机器语言是计算机硬件直接执行的底层二进制指令。

        汇编语言是对机器语言的一种符号化抽象,使得编写和理解指令更容易。

        C语言是一种更高级别的编程语言,提供了更多的抽象,使程序员能够以更自然的方式表达算法和逻辑。

概念

        汇编语言是一种低级的计算机编程语言(面向机器的程序设计语言),它使用与计算机体系结构直接相关的符号和助记符来表示机器指令、寄存器、内存位置等。汇编语言是机器语言的文本表示形式,它与特定的计算机体系结构密切相关,因此不同的计算机体系结构通常需要不同的汇编语言。

        与高级编程语言相比,汇编语言更接近计算机硬件的操作方式,程序员需要更加了解计算机体系结构的细节。每个汇编语言指令通常对应于一条机器指令,这是计算机能够直接执行的二进制代码。

        使用汇编语言编写程序可以提供对计算机硬件的更精细控制,但同时也需要更多的工作和理解。由于这种低级别的接近,汇编语言通常用于系统编程、嵌入式系统开发以及对性能和资源利用要求较高的应用程序。

        注意:

        不同的计算机体系结构有不同的汇编语言。例如,x86体系结构使用的是x86汇编语言,ARM体系结构使用的是ARM汇编语言。

        不同的计算机体系结构有不同的汇编语言。例如,x86体系结构使用的是x86汇编语言,ARM体系结构使用的是ARM汇编语言。

        不同的计算机体系结构有不同的汇编语言。例如,x86体系结构使用的是x86汇编语言,ARM体系结构使用的是ARM汇编语言。        

分类

        汇编指令可以根据其功能和操作类型进行分类。

  1. 数据传输指令(Data Transfer Instructions): 这类指令用于在寄存器之间或者寄存器与内存之间传输数据。包括加载(load)和存储(store)指令。

    • MOV(Move): 从一个位置将数据复制到另一个位置。
    • LDR(Load Register): 从内存加载数据到寄存器。
    • STR(Store Register): 将寄存器中的数据存储到内存。
  2. 算术和逻辑指令(Arithmetic and Logical Instructions): 用于执行各种算术和逻辑运算。

    • ADD(Addition): 将两个操作数相加。
    • SUB(Subtraction): 从一个操作数中减去另一个。
    • ANDORXOR(Bitwise AND, OR, XOR): 执行位运算。
  3. 控制转移指令(Control Transfer Instructions): 用于改变程序的执行顺序。

    • JMP(Jump): 无条件跳转到指定的地址。
    • JZJNZ(Jump if Zero, Jump if Not Zero): 根据条件跳转。
    • CALLRET(Call, Return): 用于调用和返回子程序。
  4. 条件转移指令(Conditional Transfer Instructions): 根据特定条件进行跳转。

    • CMP(Compare): 比较两个值,设置条件码。
    • JEJNE(Jump if Equal, Jump if Not Equal): 根据相等或不相等条件跳转。
  5. 字符串操作指令: 用于处理字符串的指令集。

    • MOVSB(Move String Byte): 将一个字节从一个地方复制到另一个地方。
    • CMPSB(Compare String Byte): 比较两个字节序列。
  6. 输入输出指令(Input/Output Instructions): 用于从外部设备读取数据或向外部设备发送数据。

    • INOUT: 用于端口的输入输出。

        不同的汇编语言和体系结构可能有不同的指令集和分类方式。

这篇关于汇编语言(举个栗子)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/348137

相关文章

《x86汇编语言:从实模式到保护模式》视频来了

《x86汇编语言:从实模式到保护模式》视频来了 很多朋友留言,说我的专栏《x86汇编语言:从实模式到保护模式》写得很详细,还有的朋友希望我能写得更细,最好是覆盖全书的所有章节。 毕竟我不是作者,只有作者的解读才是最权威的。 当初我学习这本书的时候,只能靠自己摸索,网上搜不到什么好资源。 如果你正在学这本书或者汇编语言,那你有福气了。 本书作者李忠老师,以此书为蓝本,录制了全套视频。 试

汇编语言知识基础介绍

汇编语言是一种低级编程语言,直接与计算机硬件的指令集架构(ISA)对应。它在操作系统、设备驱动程序和性能关键的应用程序中起着重要作用。以下是汇编语言的基础介绍: 1. 基本概念 指令集架构(ISA):汇编语言与特定的处理器架构(如 x86、ARM)对应,每种架构有其特定的指令集。汇编指令:汇编语言的语法是处理器指令的符号表示,通常包括操作码(opcode)和操作数。操作码指定操作的类型,操作数

汇编语言输出“Hello World!“

1.软件 Nasmide64.exe(李忠老师编写) Fixvhdw64.exe(李忠老师编写) VirtualBox虚拟机(免费 开源) 2.过程 01.Fixvhdw64.exe输入以下代码: mov ax,0xb800mov ds,axmov byte [0x00],'H'mov byte [0x02],'e'mov byte [0x04],'l'mov byte [0

ARM——结构体系(处理器工作模式,CPSR,立即数,汇编语言函数调用)

1、处理器工作模式          ARM有7个基本工作模式:User:非特权模式,大部分任务执行在这种模式FIQ:当一个高优先级(fast)中断产生时将会进入这种模式IRQ:当一个低优先级(normal)中断产生时将会进入这种模式Supervisor:当复位或软中断指令执行时将会进入这种模式Abort:当存取异常时将会进入这种模式Undef:当执行未定义指令时会进入这种模式Sy

ARM下汇编语言编程

一、ARM汇编语言程序格式 ARM汇编语言是以段(section)为单位来组织源文件的。段是相对独立的、具有特定名称的、不可分割的指令或者数据序列。 段又可以分为代码段和数据段,代码段存放执行代码,数据段存放代码运行时需要用到的数据。一个ARM源程序至少需要一个代码段,大的程序可以包含多个代码段和数据段。 二、ARM汇编语言中常用的伪操作 例如: area reset,cod

汇编语言05——包含多个段的程序

整理自fishcc论坛 安全的空间 通常来说,0:200~0:300这段空间是相对安全的,操作系统通常不会去占用 但这只有256个字节,当需要更多空间时,可以向操作系统申请 问题: 编程计算以下8个数据的和,结果存在ax 寄存器中: 0123H,0456H,0789H,0abcH,0defH,0fedH,0cbaH,0987H 程序: assume cs

汇编语言04——[BX]和loop指令

整理自fishcc论坛课件 首先展示一个新的程序: assume cs:codesg codesg segment start: mov ax,2000H mov ds,ax mov al,[0] mov bl,[1] mov cl,[2] mov dl,[3] mov ax,4C00H int 21H codesg ends end start 使用masm进行

汇编语言03——第一个汇编程序

整理自鱼C论坛课件 汇编程序编写步骤 编写源代码->使用MASM.exe进行编译,产生目标文件->用LINK.exe,对目标文件进行链接,生成可执行文件 可执行文件中包含两部分内容 1,程序和数据 2,相关的描述信息(程序有多大,要占用多少内存空间等) 源程序: assume cs:abc abc segment mov ax,2 add ax,ax add

汇编语言02——寄存器(内存访问)

整理自鱼C工作室的课件 DS和address DS寄存器通常用来存放要访问的数据的段地址 例如:我们要读取10000H单元的内容可以用如下程序段进行: mov bx,1000H mov ds,bx mov al,[0] 将10000H(1000:0)中的数据读到al中。 mov指令的格式: mov 寄存器名,内存单元地址 “[…]”表示一个内存单元, “[…]

汇编语言01——寄存器(CPU的工作原理)

寄存器概述 CPU的组成:运算器,控制器,寄存器 8086CPU有14个寄存器(8个通用寄存器),分别为: AX,BX,CX,DX,SI,DI,SP,BP,IP,CS,SS,DS,ES,PSW 8086CPU所有寄存器都是16位的,可以存放两个字节(一个字) AX,BX,CX,DX是通用寄存器,存放一般性数据 8086上一代CPU的寄存器是8位的;为保证兼容性,这四个寄存器都可