汇编语言 订阅
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。 [1] 展开全文
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。 [1]
信息
产生年代
20世纪50年代
外文名
Assembly Language
编译方式
汇编
中文名
汇编语言
学    科
软件工程
汇编语言简介
汇编语言, 即第二代计算机语言,用一些容易理解和记忆的字母,单词来代替一个特定的指令,比如:用“ADD”代表数字逻辑上的加减,“ MOV”代表数据传递等等,通过这种方法,人们很容易去阅读已经完成的程序或者理解程序正在执行的功能,对现有程序的bug修复以及运营维护都变得更加简单方便。当计算机的硬件不认识字母符号,这时候就需要一个专门的程序把这些字符变成计算机能够识别的二进制数。因为汇编语言只是将机器语言做了简单编译,所以并没有根本上解决机器语言的特定性,所以汇编语言和机器自身的编程环境息息相关,推广和移植很难,但是还是保持了机器语言优秀的执行效率,因为他的可阅读性和简便性,汇编语言到现在依然是常用的编程语言之一。 [2]  汇编语言不像其他大多数的程序设计语言一样被广泛用于程序设计。在今天的实际应用中,它通常被应用在底层,硬件操作和高要求的程序优化的场合。驱动程序、嵌入式操作系统和实时运行程序都需要汇编语言。 [1] 
收起全文
精华内容
下载资源
问答
  • 汇编语言
    千次阅读
    2021-05-23 05:50:54

    汇编语言(Assembler Language)

    [编辑]

    什么是汇编语言

    汇编语言是指能反映指令功能的助记符表达的计算机语言,它是符号化的机器语言。用汇编语言写出的程序是汇编语言源程序,机器无法执行。必须用计算机配置好的汇编程序把它翻译成机器语言目标程序,机器才能执行。这个翻译过程就是汇编过程。汇编语言比机器语言在编写、修改、阅读方面均有很大改进,运行速度也快,但掌握起来比较困难。

    [编辑]

    汇编语言的特点

    汇编语言采用了助记符来编写程序,比用机器语言的二进制代码编程要方便些,在一定程度上简化了编程过程。汇编语言的特点是用符号代替了机器指令代码,而且助记符与指令代码一一对应,基本保留了机器语言的灵活性。使用汇编语言能面向机器并较好地发挥机器的特性,得到质量较高的程序。

    汇编语言是面向具体机型的,它离不开具体计算机的指令系统,因此,对于不同型号的计算机有着不同结构的汇编语言,而且,对于同一问题所编制的汇编语言程序在不同机型类别的计算机间是互不相通的。

    汇编语言中使用了助记符号,对于用汇编语言编制的程序,计算机不能像用机器语言编写的程序一样直接识别和执行,必须经过预先放人计算机的“汇编程序”的加工和翻译才能变成能够被计算机识别和处理的二进制代码程序。用汇编语言等非机器语言书写的符号程序称为源程序,运行时汇编程序要将源程序翻译成目标程序。目标程序是机器语言程序.它被安置在内存的预定位置上后,就能被计算机的CPU处理和执行。

    汇编语言像机器指令一样,是硬件操作的控制信息,因而仍然是面向机器的语言,使用起来还是比较繁琐费时,通用性也差。但是,汇编语言用来编制系统软件和过程控制软件,其目标程序占用内存空间少,运行速度快,有着高级语言不可替代的用途。

    汇编语言指令能够直接控制硬件,例如访问I/O端口;而高级语言不提供对于硬件的控制。高级语言程序的效率取决于编译器翻译高级语言程序的方式,由于编译器必须可以翻译所有可能的高级语言代码,因此在某些情况下编译器翻译出的机器语言可能不是最有效的机器语言。而汇编语言指令和机器语言指令是一一对应的,因此使用汇编语言可以确保代码的高效性。编写一个完整程序可能不能体现汇编语言高效率的优势。若仅编写部分程序,在执行时常常可以获取较高的效率。在多数情况下,汇编语言程序员编写汇编语言程序不是为了实现一个完整的系统或者是一个程序,而仅仅是编写选定的模块。例如,可以通过写出口例程(exit routine)用户化应用程序或操作系统。为了保证与宿主语言程序能正常接口,常常需要用汇编语言编写这样的出口例程。

    [编辑]

    汇编语言的优缺点

    一、汇编语言的优点

    汇编语言的语句与机器语言的指令是一一对应的,因此它具有机器语言的一些特点,其优点如下。

    (1)易于理解与记忆。

    (2)能利用机器指令精确地描述算法,编程质量高。

    (3)所占存储空间小。

    (4)执行速度较快。

    二、汇编语言的缺点

    (1)与机器语言一样,程序通用性差。每一种汇编语言都是为某种特定类型的计算机专门设计的,不同类型计算机的汇编语言不能通用。

    (2)汇编语言与机器语言一样都依赖于机器,与计算机硬件直接相关,也是面向机器的语言。

    [编辑]

    汇编语言的应用

    汇编语言作为最基本的编程语言之一,虽然它的应用范围不算很广,但重要性却毋庸置疑,因为它能够完成许多其他语言所无法完成的功能。例如Linux内核的绝大部分代码是用C语言编写的,但仍然不可避免地在某些关键地方使用了汇编代码,其中主要是在Linux的启动部分。由于这部分代码与硬件的关系非常密切,即使是C语言也会有些力不从心,而汇编语言则能够很好地扬长避短,最大限度地发挥硬件的性能。70%以上的系统软件是用汇编语言编写的。某些快速处理、位处理、访问硬件设备等高效程序是用汇编语言编写的。某些高级绘图程序、视频游戏程序也是用汇编语言编写的。

    汇编语言是理解整个计算机系统的最佳起点和最有效途径.人们经常认为汇编语言的应用范围很小,而忽视它的重要性。其实汇编语言对每一个希望学习计算机科学与技术的人来说都是非常重要的,是不能不学习的语言。所有可编程计算机都向人们提供机器指令,通过机器指令人们能够使用机器的逻辑功能。所有程序,不论用何种语言编制,都必须转成机器指令,运用机器的逻辑功能,其功能才能得以实现。机器的逻辑功能、软件系统功能构筑其上,硬件系统功能运行于下。汇编语言直接描述机器指令,比机器指令容易记忆和理解。通过学习和使用汇编语言,能够感知、体会、理解机器的逻辑功能,向上为理解各种软件系统的原理打下技术理论基础;向下为掌握硬件系统的原理打下实践应用基础。学习汇编语言向上可以理解软件,向下能够感知硬件,是理解整个计算机系统的最佳起点。

    [编辑]

    参考文献

    ↑ 本书编写组编.第二章 会计电算化的工作环境 初级会计电算化 第4版.东北财经大学出版社,2011.09.

    ↑ 赵忠孝,赵晔编著.第一章 绪论 新编C程序设计教程.机械工业出版社,2011.08.

    本条目对我有帮助3

    MBA智库APP

    扫一扫,下载MBA智库APP

    分享到:

    更多相关内容
  • 王爽《汇编语言》第三版课后实验题 link.exe+masm.exe都在资源包里面 汇编语言实验一查看CPU和内存,用机器指令 汇编语言实验二用机器指令和汇编指令编程 汇编语言实验三编程·编译·链接·跟踪 汇编语言实验四[bx]...
  • 中断控制LED灯亮灭【汇编语言】.zip中断控制LED灯亮灭【汇编语言】.zip中断控制LED灯亮灭【汇编语言】.zip中断控制LED灯亮灭【汇编语言】.zip中断控制LED灯亮灭【汇编语言】.zip中断控制LED灯亮灭【汇编语言】.zip...
  • app逆向分析必备参考资料,底层的arm汇编语言
  • 编制完整的汇编语言源程序 汇编语言课程设计第三次实验报告。 自己写的实验报告,满绩分数,含图片。
  • 《普通高校"十三五"规划教材·汇编语言程序设计:基于ARM体系结构(第3版)》基于ARM体系结构进行汇编语言的教学。《普通高校"十三五"规划教材·汇编语言程序设计:基于ARM体系结构(第3版)》的内容分成3个部分:第1部分...
  • 本书从应用编程的角度解释x86处理器的内部架构和执行环境,全面介绍如何用x86汇编语言编写可被高级语言调用的函数。主要内容包括:x86-32核心架构(第1章和第2章),x87浮点单元(第3章和第4章),MMX技术(第5章和...
  • x86汇编语言 从实模式到保护模式完整版.pdf
  • 汇编语言.pdf————电子版_pdf版
  • 80X86汇编语言程序设计教程 基本信息 作者: 杨季文 出版社:清华大学出版社 ISBN:9787302029014 上架时间:2013-1-28 出版日期:2013 年1月 开本:16开 页码:595 版次:1-21 所属分类:计算机 > 软件与程序设计 ...
  • 利用汇编语言实现快速排序,汇编语言排序算法。 数字逻辑与处理器大作业,通过汇编实现文件读入,快速排序,再写到文件中 汇编 快排 数逻
  • 资源名称:西安交通大学《汇编语言程序设计》课程视频(36集)资源目录:【】西安交通大学汇编语言程序设计(1)【】西安交通大学汇编语言程序设计(10)【】西安交通大学汇编语言程序设计(11)【】西安交通大学汇编语言...
  • 北京理工大学《汇编语言》习题答案
  • 王爽的汇编语言 mobi格式,仅此一家,别嫌分高!扫描版 汇编语言是汇编指令集、伪指令集和使用它们规则的统称,使用具有一定含义的符号为助忆符,用指令助忆符、符号地址等组成的符号指令称为汇编格式指令。 汇编...
  • 最强大的王爽汇编语言学习环境
  • 汇编语言(assembly language)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地址符号(Symbol)或标号...
  • 北京理工大学《汇编语言》期末考试多套练习题(含答案)
  • 分享几个汇编语言写的游戏。 汇编语言写的程序练习程序的写成可以用汇编的编程器调试一下看看 汇编程序
  • 手把手教你学习汇编语言——从入门到起飞

    万次阅读 多人点赞 2021-05-11 08:07:33
    关于这篇博客,笔者会尽量用最简单的方式教会大家汇编语言以便应付各种考试 有什么不足的忘大佬评论或私信指出。 汇编环境安装 汇编运行调试 汇编指令 希望大家看完这些找一些样例练习一下会学的更好,这里有一些...

    专接本交流群:1051749714 (有什么问题欢迎进群讨论)
    关于这篇博客,笔者会尽量用最简单的方式教会大家汇编语言以便应付各种考试
    有什么不足的忘大佬评论或私信指出。

    汇编环境安装
    汇编运行调试
    汇编指令

    希望大家看完这些找一些样例练习一下会学的更好,这里有一些练习题希望能帮助到大家
    汇编语言编程题总结

    汇编语言环境安装

    这里用的是Masm,相比较纯Dosbox会简单很多的
    汇编语言和CodeBlock安装包 密码:dqs9

    下载以后打开运行
    下一步
    在这里插入图片描述
    安装
    在这里插入图片描述
    完成即可
    在这里插入图片描述
    安装完成后打开,进来是默认的程序框

    在这里插入图片描述
    汇编语言运行的话,一定要保存文件到本地才可以运行,调试的话也需要先运行一下才能调试,否则就是调试的上次运行的程序。

    汇编运行调试

    当我们写好以后,它会提示我们先保存在运行
    在这里插入图片描述

    ctrl+s保存在一个地方,记得改名字,把 * 换成名字
    在这里插入图片描述

    再点击运行,出现这个就可以了,这是没有屏幕输出的程序,如果有屏幕输出,还会先输出程序输出的,在输出这一行。
    在这里插入图片描述

    (如果到时候一闪而过,说明你的程序有问题)
    下面会有提示哪一行有问题的,双击就会高亮显示那一行
    (笔者这个就是在AL后面多打了一个S)

    在这里插入图片描述

    运行可以了,那就大概说一下调试的过程(如果要调试的话,一定要先运行一遍才可以,否则就是调试的上一次运行的代码)

    调试的话,输入 T 是运行一步,你可以选择一步一步的运行,
    我们输入一个T 出来的划线位置就是下一次要运行的代码
    我们可以看到命令框第二个划线的 MOV AL,[0000H] 我们的AL赋值是12H 第二次AX的低四位还不是12H
    当我们再输入一个T,才是12H,也就是调试出来的代码是下一次将要运行的代码。
    在这里插入图片描述

    也许有些时候可能会觉得一步一步调试太麻烦了,这里也有直接跳转调试的

    我们之间输入一个U就会出现每一步代码所对应的数。
    在这里插入图片描述

    通过G 在写对应的号,就可以跳转到指定的位置
    在这里插入图片描述

    其他的话,可能会有更方便的,但是笔者认为这些就很够用了。

    软件安装运行调试大概就是到这里了,接下来我们来简述一下基本的命令语句吧

    汇编指令

    先来看一下基本的结构(分号后面的都是注释的,汇编语言用分号注释)

    DATAS SEGMENT	;数据段
        ;此处输入数据段代码  
    DATAS ENDS
     
    CODES SEGMENT	;代码段
        ASSUME CS:CODES,DS:DATAS		;数据段给DS,代码段给CS
    START:			;开始代码
        MOV AX,DATAS	;需要先把DATAAX寄存器,然后再从AXDSDATA不能直接给DS
        MOV DS,AX
        ;此处输入代码段代码
        MOV AH,4CH		;结束语句
        INT 21H
        
    CODES ENDS		;代码段结束
        END START	;结束代码
    
    

    先来说常用的命令符号,如果大家有什么其他命令符使用的话,可以评论或者私信我,我看到会尽快给大家展示出来如何使用

    MOV AL,BL
    这里就是把BL的值放到AL中。
    
     
    

    然后就是类似于C语言的函数
    这个函数就是起个名字加个分号
    汇编语言的函数没有结束的地方,一般如果需要结束的加,就要加一个跳转到其他地方
    如果没有跳转,他就会一直运行到下面

    DATA SEGMENT 
    A DB 12H	;定义两个变量
    B DB 24H
    DATA ENDS 
    CODES SEGMENT 
    	ASSUME DS:DATA,CS:CODES
    START:
    	MOV AX,DATA
    	MOV DS,AX
    	
    	JMP EXIT	;这里就是直接跳转到EXIT  JMP就是跳转的方法
    	
    	MOV AL,A	;A->AL
    	MOV BL,B	;B->BL
    	MOV A,BL	;BL->A
    	MOV B,AL	;AL->B
    	 
    	 
    EXIT:
        MOV AH,4CH
        INT 21H
    CODES ENDS
        END START
    
    
    

    当然还有很多特别的JMP 也就是一些带标志位的 就是标志寄存器里面的六个状态位

    1、进位标志CF(Carry Flag)
    进位标志CF主要用来反映运算是否产生进位或借位。如果运算结果的最高位产生了一个进位或借位,那么,其值为1,否则其值为0使用该标志位的情况有:多字(字节)数的加减运算,无符号数的大小比较运算,移位操作,字(字节)之间移位,专门改变CF值的指令等。
    
    2、奇偶标志PF(Parity Flag)
    
    奇偶标志PF用于反映运算结果中“1”的个数的奇偶性。如果“1”的个数为偶数,则PF的值为1,否则其值为0。
    
    利用PF可进行奇偶校验检查,或产生奇偶校验位。在数据传送过程中,为了提供传送的可靠性,如果采用奇偶校验的方法,就可使用该标志位。
    
    3、辅助进位标志AF(Auxiliary Carry Flag)
    在发生下列情况时,辅助进位标志AF的值被置为1,否则其值为0:
    
    (1)、在字操作时,发生低字节向高字节进位或借位时;
    (2)、在字节操作时,发生低4位向高4位进位或借位时。
    
    对以上6个运算结果标志位,在一般编程情况下,标志位CFZFSFOF的使用频率较高,而标志位PFAF的使用频率较低。
    
    4、零标志ZF(Zero Flag)
    零标志ZF用来反映运算结果是否为0。如果运算结果为0,则其值为1,否则其值为0。在判断运算结果是否为0时,可使用此标志位。
    
    5、符号标志SF(Sign Flag)
    
    符号标志SF用来反映运算结果的符号位,它与运算结果的最高位相同。
    在微机系统中,有符号数采用补码表示法,所以,SF也就反映运算结果的正负号。运算结果为正数时,SF的值为0,否则其值为16、溢出标志OF(Overflow Flag)
    
    溢出标志OF用于反映有符号数加减运算所得结果是否溢出。如果运算结果超过当前运算位数所能表示的范围,则称为溢出,
    OF的值被置为1,否则,OF的值被清为0。 
    (有些时候,有些问题会问你是不是溢出了,这里有个巧计的方法,负数加负数是正数,正数加正数是负数,如果出现这种情况就是溢出了)
    

    然后衍生出来的就是几个条件跳转指令
    一般情况下,条件跳转上面要跟一些影响标志寄存器的命令

    
    JE   ;等于则跳转
    JNE  ;不等于则跳转
     
    JZ   ;0 则跳转
    JNZ  ;不为 0 则跳转
     
    JS   ;为负则跳转
    JNS  ;不为负则跳转
     
    JC   ;进位则跳转
    JNC  ;不进位则跳转
     
    JO   ;溢出则跳转
    JNO  ;不溢出则跳转
     
    JA   ;无符号大于则跳转
    JNA  ;无符号不大于则跳转
    JAE  ;无符号大于等于则跳转
    JNAE ;无符号不大于等于则跳转
     
    JG   ;有符号大于则跳转
    JNG  ;有符号不大于则跳转
    JGE  ;有符号大于等于则跳转
    JNGE ;有符号不大于等于则跳转
     
    JB   ;无符号小于则跳转
    JNB  ;无符号不小于则跳转
    JBE  ;无符号小于等于则跳转
    JNBE ;无符号不小于等于则跳转
     
    JL   ;有符号小于则跳转
    JNL  ;有符号不小于则跳转
    JLE  ;有符号小于等于则跳转
    JNLE ;有符号不小于等于则跳转
     
    JP   ;奇偶位置位则跳转
    JNP  ;奇偶位清除则跳转
    JPE  ;奇偶位相等则跳转
    JPO  ;奇偶位不等则跳转
    
    

    说完跳转类的指令,接下来我们看一看左移右移指令
    左移这种指令左移一位就是二进制左移一位,也就是乘2的操作。

    SHL(Shift Left)SAL(Shift Arithmetic Left): 每位左移, 低位补 0,  高位进 CF
    SHR(Shift Right)     : 每位右移, 低位进 CF, 高位补 0
    SAR(Shift Arithmetic Right)     : 每位右移, 低位进 CF, 高位不变(也就是高位复制到第二位)
    
    使用的时候就是 
    SHL AL,1
    左移一位
    如果移动的位数大于1位,就要放到CX

    循环左移右移

    ;ROL(Rotate Left): 循环左移, 高位到低位并送 CF
    ;ROR(Rotate Right): 循环右移, 低位到高位并送 CF
    ;RCL(Rotate through Carry Left): 循环左移, 进位值(CF)到低位, 高位进 CF
    ;RCR(Rotate through Carry Right): 循环右移, 进位值(CF)到高位, 低位进 CF
    
    使用的时候就是 
    ROL AL,1
    循环左移一位
    如果移动的位数大于1位,就要放到CX

    然后就是加减乘除

    加法add和adc、inc
    ADD AL,BL
    ALBL加起来放到AL
    
    ADC的话就是ADD的运算在家一个CF状态位的值,
    
    INC AL
    AL1
    
    
    减法sub和sbb、dec
    SUB 对应ADD
    SBB 对应ADC
    DEC 对应INC
    用法都是一样的,就是一个是加一个是减
    
    乘法mul和imul
    MUL是无符号乘法
    MUL 8位的   就是AL乘这个数放到AL 高位放到AH
    MUL 16位的   就是AX乘这个数放到AX中	高位放到DX
    
    除法div和idiv
    DIV是无符号除法
    DIV 8位的   就是 AX除这个数,商放AL  余数放AH
    DIV16位的   就是(DX:AX)除这个数,商放AX  余数放DX
    
    异或运算XOR
    
    XOR AL,BL
    ALBL异或运算放入AL
    
    与运算AND   或运算OR都是一样的
    
    然后就是CMPTEST
    CMP 就是对应的减法,但是这个不会影响AL的值,他只会影响状态标志位
    TEST 就是AND的用法,也是不会影响AL,只影响状态标志位
    
    

    最后就是DOS功能的输入输出

    字符输入输出
    
    DATA SEGMENT 
    	 
    DATA ENDS 
    
    CODES SEGMENT 
    	ASSUME DS:DATA,CS:CODES
    START:
    	MOV AX,DATA
    	MOV DS,AX
    	
    	MOV AH,01H	 ;键盘输入的时候,给AH  1
    	INT 21H		 ;然后INT 21H调用,默认输入到ALMOV DL,AL	 ;CMD窗口输出的时候,要把输出的放到DLMOV AH,02H	 ;AH  2
    	INT 21H
    	
    	 
    	 
    EXIT:
       		MOV AH,4CH
            INT 21H
    CODES ENDS
        END START
    
    字符串输入输出
    
    DATA SEGMENT 
    	 BUF DB 20 DUP('$')
    	 BUFF DB 'Hello World!$'
    DATA ENDS 
    
    CODES SEGMENT 
    	ASSUME DS:DATA,CS:CODES
    START:
    	MOV AX,DATA
    	MOV DS,AX
    	
    	MOV DX,OFFSET BUF	;把偏移地址给DX,也可以用 LEA DX,BUF  二者皆可
    	MOV AH,0AH	 ;键盘输入的时候,给AH  10
    	INT 21H		 ;然后INT 21H调用,默认输入到BUFMOV DX,OFFSET BUFF	 ;CMD窗口输出的时候,要把输出偏移地址放到DXMOV AH,09H	 ;AH  2
    	INT 21H
    	
    	 
    	 
    EXIT:
       		MOV AH,4CH
            INT 21H
    CODES ENDS
        END START
    
    展开全文
  • 汇编语言 王爽 实验七 独立完成 汇编语言 王爽 实验七 独立完成
  • 汇编语言指令大全(详解版)pdf,汇编语言指令大全
  • 如何用汇编语言编写 File Header, Section Table, Import Table, Export Table 汇编语言调用消息框,制作对话框 汇编语言使用odbc连接数据库 汇编语言扫描硬盘 汇编语言制作位图文件.bmp 汇编语言读取剪切板中的数据 ...
  • INTEL汇编语言程序设计, 作者:Kip Irvine 包含 英文版 中文第4版 中文第5版
  • 汇编语言第三版王爽

    2017-12-02 12:01:16
    ______________________汇编语言第三版王爽_______________
  • 汇编语言(assembly language)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地址符号(Symbol)或标号...
  • 80X86汇编语言与计算机体系结构(中英文版),经典书籍
  • 32位汇编语言程序设计电子教案配套教材:钱晓捷主编,32位汇编语言程序设计
  • 汇编语言_基于x86处理器 原书第七版 -超高清版-带书签 带真正书签,目前来说是网上最清晰的啦,好好学底层,为我国计算机事业贡献力量。
  • 生日快乐歌曲程序【汇编语言】.zip生日快乐歌曲程序【汇编语言】.zip生日快乐歌曲程序【汇编语言】.zip生日快乐歌曲程序【汇编语言】.zip生日快乐歌曲程序【汇编语言】.zip生日快乐歌曲程序【汇编语言】.zip生日快乐...
  • 使用汇编语言,产生斐波拉契数列并显示

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 305,507
精华内容 122,202
关键字:

汇编语言

友情链接: bp源程序.zip