汇编 订阅
汇编程序是指把汇编语言书写的程序翻译成与之等价的机器语言程序的翻译程序。汇编程序输入的是用汇编语言书写的源程序,输出的是用机器语言表示的目标程序。汇编语言是为特定计算机或计算机系列设计的一种面向机器的语言,由汇编执行指令和汇编伪指令组成。采用汇编语言编写程序虽不如高级程序设计语言简便、直观,但是汇编出的目标程序占用内存较少、运行效率较高,且能直接引用计算机的各种设备资源。它通常用于编写系统的核心部分程序,或编写需要耗费大量运行时间和实时性要求较高的程序段。 展开全文
汇编程序是指把汇编语言书写的程序翻译成与之等价的机器语言程序的翻译程序。汇编程序输入的是用汇编语言书写的源程序,输出的是用机器语言表示的目标程序。汇编语言是为特定计算机或计算机系列设计的一种面向机器的语言,由汇编执行指令和汇编伪指令组成。采用汇编语言编写程序虽不如高级程序设计语言简便、直观,但是汇编出的目标程序占用内存较少、运行效率较高,且能直接引用计算机的各种设备资源。它通常用于编写系统的核心部分程序,或编写需要耗费大量运行时间和实时性要求较高的程序段。
信息
外文名
assembler
汉语拼音
huibian chengxu
中文名
汇编程序
学    科
计算机
汇编程序背景信息
汇编执行指令是机器指令的符号化表示,其操作码用记忆符表示,地址码直接用标号、变量名字、常数等表示。汇编执行指令经汇编程序翻译为机器指令,二者之间基本上保持一一对应的关系。汇编伪指令又称作汇编指示,用于向汇编程序提供用户自定义的符号、数据的类型、数据空间的长度,以及目标程序的格式、存放位置等提示性信息,其作用是指示汇编程序如何进行汇编。使用汇编语言编写的源代码,需要通过使用相应的汇编程序将它们转换成可执行的机器代码。这一过程被称为汇编过程。许多汇编程序可以识别代表地址和常量的标签(label)和符号(symbols),这样就可以用字符来代表操作数而无需采取写死的方式。普遍地说,特定的汇编语言和特定的机器语言指令集是一一对应的。许多汇编程序为程序开发、汇编控制、辅助调试提供了额外的支持机制。有的汇编语言编程工具经常会提供宏,它们也被称为宏汇编器。汇编语言不像其他大多数的程序设计语言一样被广泛用于程序设计;在实际应用中,它通常被应用在底层硬件操作和高要求的程序优化的场合。驱动程序、嵌入式操作系统和实时运行程序都需要汇编语言 [1]  。
收起全文
精华内容
下载资源
问答
  • 《普通高校"十三五"规划教材·汇编语言程序设计:基于ARM体系结构(第3版)》基于ARM体系结构进行汇编语言的教学。《普通高校"十三五"规划教材·汇编语言程序设计:基于ARM体系结构(第3版)》的内容分成3个部分:第1部分...
  • 王爽的汇编语言 mobi格式,仅此一家,别嫌分高!扫描版 汇编语言是汇编指令集、伪指令集和使用它们规则的统称,使用具有一定含义的符号为助忆符,用指令助忆符、符号地址等组成的符号指令称为汇编格式指令。 汇编...
  • 汇编语言(assembly language)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地址符号(Symbol)或标号...
  • 分享几个汇编语言写的游戏。 汇编语言写的程序练习程序的写成可以用汇编的编程器调试一下看看 汇编程序
  • 汇编语言 王爽 答案

    2018-07-25 10:24:32
    王爽 汇编语言 第三版的答案——《汇编语言(第3版) 》王爽著,欢迎大家下载,
  • 汇编金手指 学习汇编必备神器 中文版 有需要的下载吧 小甲鱼专用版
  • 汇编字节互转工具

    2018-08-21 15:57:15
    支持汇编转字节码 字节码转汇编码 MFC编写文件稍大 绝对有用。支持指令集比较完善
  • ARM64汇编.pdf

    2018-05-03 08:55:11
    ARM64汇编,是iOS真机测试的时候的汇编指令,包含生成汇编文件,寄存器,指令,iOS汇编,函数的堆栈
  • 汇编转换工具

    2018-07-28 13:46:16
    能将代码转换成为别汇编代码能将代码转换成为别汇编代码
  • ARM汇编语言编程详解

    2018-02-22 09:08:23
    ARM汇编语言编程详解ARM汇编语言编程详解ARM汇编语言编程详解ARM汇编语言编程详解ARM汇编语言编程详解
  • 汇编语言——基于Linux环境(第三版)带书签目录完整版 入门好书,从8086的历史开始,经历80386,直到linux环境下的汇编,篇幅略长,但很适合基础性读物
  • 学习汇编很好的例子

    2018-02-02 21:37:46
    学习汇编很好的例子,适合初学者,学好汇编你会发现单片机理解得更加深刻。
  • 64位汇编教材,英文版,intel 64位汇编技术手册,高清版本
  • IDApro反汇编程序教程

    2018-06-26 21:43:35
    IDApro反汇编程序教程,详细介绍了IDApro工具反汇编源代码的使用教程
  • 手把手教你学习汇编语言——从入门到起飞

    万次阅读 多人点赞 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
    
    展开全文
  • 汇编语言是计算机专业的重要专业基础课程,也 是电子、通信及自动控制等相关专业计算机技术课程的内容。郑晓薇编著的这本《汇编语言(第2版)》以80X86系列微型计算机为基础,以MASM5.0为汇编上机实验环境,重点介绍...
  • ARM汇编语言手册,中文版的ARM汇编语言手册,中文版的ARM汇编语言手册,中文版的
  • 汇编语言指令大全(详解版)pdf,汇编语言指令大全
  • 内含: masm库(lib,include) AsmHighlighter15/17(asm高亮插件)
  • 8086汇编工作环境

    2017-02-03 09:03:50
    提供学习8086汇编语言程序设计的极简解决方案。DOSBox0.74-win32-installer.exe是DOS模拟器,masm.exe汇编、link.exe连接、Debug.exe调试,edit.com和edlin.com是两个编辑程序。
  • RH850 D1汇编指令

    2017-07-04 15:46:56
    RH850 D1汇编指令
  • 易语言ASM(汇编)模块V1.2更新 内详 V1.2把其实也没有做太多修改 删掉了一些个指令 刚开始发布把,太激动 所以很多没用的东西都没删 现在删掉了 并且做了几个api函数的使用方式 如 消息框 等 在这里声明: 反汇编...
  • windows环境下64位汇编语言程序设计 作者:JoenChen 。是把罗云彬的32位移植到64位。
  • 64位汇编转机器码

    2017-06-30 13:28:02
    windows 64位汇编语言 转机器码工具
  • TI C2000系列DSP的汇编指令,含cmd文件编写。最重要的内容是,解释了cmd文件指令,是定制cmd文件不可或缺的参考文档,TI原版下载
  • ARM 汇编语言官方手册(中文)
  • 现代x86汇编语言程序设计附录及源代码。介绍了微软visual c++和宏汇编器的简要教程。总结了X86的调用约定。并且给出了相关参考文献等
  • 汇编实现pwm及按键控制
  • 汇编语言实现矩阵乘法
  • 完整的介绍了ARM7的指令集,也可以作为后续架构如ARM11、A5、A8、A9等全系列ARM内核的CPU的参考资料,自己整理了书签,方便阅读,在此贡献出来

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 483,960
精华内容 193,584
关键字:

汇编