汇编语言伪指令和汇编指令的区别
[指令语句]
每一条指令语句在源程序汇编时都要产生可供计算机执行的指令代码(即目标代码),所以这种语句又叫可执行语句。每一条指令语句表示计算机具有的一个基本能力,如数据传送,两数相加或相减,移位等,而这种能力是在目标程序(指令代码的有序集合)运行时完成的,是依赖于汁算机内的中央处理器(CPU)、存储器、I/O接口等硬件设备来实现的。
[伪指令语句]
伪指令语句是用于指示汇编程序如何汇编源程序,所以这种语句又叫命令语句。例如源程序中的伪指令语句告诉汇编程序:该源程序如何分段,有哪些逻辑段在程序段中哪些是当前段,它们分别由哪个段寄存器指向;定义了哪些数据,存储单元是如何分配的等等。伪指令语句除定义的具体数据要生成目标代码外,其他均没有对应的目标代码。伪指令语句的这些命令功能是由汇编程序在汇编源程序时,通过执行一段程序来完成的,而不是在运行目标程序时实现的。
伪指令没有对应的机器代码,它不像指令那样由CPU来执行,它 是由MASM汇编程序对源程序汇编期间进行处理的.
再次介绍指令和伪指令的区别
这个标题看似简单,但是我却一下子没明白,这里做下记录。
指令:每一条指令语句在源程序汇编时都要产生可供计算机执行的指令代码(即目标代码),所以这种语句又叫做可执行语句,每一条指令语句表示CPU具有的一个基本能力,比如数据传送,两数相加或相减,移位等,而这种能力是在目标程序运行时完成的,是依赖于CPU、存储器、IO等接口设备来实现的。
伪指令:顾名思义,它不是真正的指令,也就是不是最终的指令,是用于指示汇编程序如何汇编源程序,所以这种语句又叫命令语句,例如伪指令告诉汇编程序,该源程序如何分段,有哪些逻辑段在程序段中,哪些是当前段等等,伪指令语句的这些命令功能是由汇编程序在汇编源程序时,通过执行另外一段程序来完成的,而不是在运行目标程序时实现的。
那么为什么要有伪指令,而不直接都用指令呢?原因是为了实现更高级的功能。
总结:指令是控制程序运行时的机器代码运作的,是CPU执行的依据,编程、编译、执行都是有效的。
伪指令不直接控制运行时刻的机器,但是控制翻译程序如何生成机器指令代码,也就是只为编译服务,编译完成后,伪 指令的作用也就消失了。
总结
以上所述是小编给大家介绍的汇编语言伪指令和汇编指令的区别,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
相关推荐
-
16位汇编语言寄存器及指令整理(小结)
寄存器 通用寄存器 8位寄存器 16位寄存器 32位寄存器 寄存器名称 AH,AL AX EAX 累加寄存器 BH,BL BX EBX 基地址寄存器 CH,CL CX ECX 计数器寄存器 DH,DL DX EDX 数据寄存器 SI ESI 源变址寄存器 DI EDI 源目标寄存器 DH,DL DX EDX 基地址寄存器 DH,DL DX EDX 栈顶寄存器 段寄存器 标号 名称 CS 代码段 DS 数据段 SS 栈段 ES 附加数据段 GS,FS 附加数据段(+80386) 专用寄存器 标号
-
常用的汇编指令与技巧(收藏)
1.数据传送指令:mov move r1,r2 /*r1=r2*/ move r1,#4096 /*r1=4096*/ 2.大范围的地址读取指令:ldr ldr r1,=0x123456789 /*r1=0x123456789*/ ldr r1,=label /*获取绝对地址,即label的地址*/ label: -- 3.内存访问指令(当ldr后面没有=号时为内存读取指令) 读取指令:ldr ldr r1 ,[r2,#4] /*将内存地址为r2+4的数据读取到r1中,相当于C语言中的*操作*/
-
汇编语言无效指令错误概述
问题:cmpxchg8b 指令比较一个8字节值edx和EAX带有8字节值内存( 目的地操作数). 只有有效目标操作数用于此指令是内存 操作数. 如果目标操作数是一个寄存器处理器应产生一个 无效OpCode例外,执行的指令cmpxchg8b应当停止和 处理器应该执行无效OpCode异常处理程序. 此错误发生是 锁定前缀为使用cmpxchg8b指令与一个(无效)寄存器目的地 操作数. 在这种情况下,处理器可能无法启动执行无效OpCode 异常处理程序,因为总线已锁定. 这将导致系统挂起. 提示:如果
-
汇编语言lea指令使用方法解析
这篇文章主要介绍了汇编语言lea指令使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 lea指令变种(按大小分类): leaw #2个字节 leal #4个字节 leaq #8个字节 lea的用法: leaq a(b, c, d), %rax 首先lea指令是mov指令的变种,据说,lea指令是x86体系结构中,是一条最古老但是从某个方面来讲又是最神奇的指令. 表面上看,它做的事情非常简单,根据括号里的源操作数来计算地址,然后把地址加
-
汇编语言中mov和lea指令的区别详解
指令(instruction)是一种语句,它在程序汇编编译时变得可执行.汇编器将指令翻译为机器语言字节,并且在运行时由 CPU 加载和执行. 一条指令有四个组成部分: 标号(可选) 指令助记符(必需) 操作数(通常是必需的) 注释(可选) 最近在学习汇编语言,过程中遇到很多问题,对此在以后的随笔会逐渐更新,这次谈谈mov,lea指令的区别 一,关于有没有加上[]的问题 1,对于mov指令来说: 有没有[]对于变量是无所谓的,其结果都是取值 如: num dw 2 mov bx,num mov
-
汇编语言伪指令和汇编指令的区别
[指令语句] 每一条指令语句在源程序汇编时都要产生可供计算机执行的指令代码(即目标代码),所以这种语句又叫可执行语句.每一条指令语句表示计算机具有的一个基本能力,如数据传送,两数相加或相减,移位等,而这种能力是在目标程序(指令代码的有序集合)运行时完成的,是依赖于汁算机内的中央处理器(CPU).存储器.I/O接口等硬件设备来实现的. [伪指令语句] 伪指令语句是用于指示汇编程序如何汇编源程序,所以这种语句又叫命令语句.例如源程序中的伪指令语句告诉汇编程序:该源程序如何分段,有哪些逻辑段在程序段中
-
汇编语言:x86汇编指令大全及其注意事项
目录 Part 1:instruction Part 2 2.1 (逻辑)运算.移位等常用指令 2.1 (逻辑)运算.移位等常用指令 2.2 循环移位指令 2.3 数据串操作指令 2.4 逻辑运算指令 2.5 基于大小关系的跳转指令 2.6 基于单标志位的转移指令 Part 1:instruction 积少成多,持续更新.(这将会是一个极其漫长的过程) 表格中各条指令的顺序根据笔者所认为的重要或常用程度进行排序,仅供参考. Part 2 本表格中所涉及的F是指状态寄存器,CF指进位标志位,其它以
-
详解汇编语言中中括号[]作用及lea和mov指令的区别
汇编中中括号[]作用及lea和mov指令的区别 现在总结一下:其中牵扯到lea指令,mov指令,[] 一.lea指令: 对于寄存器来说:第二个操作数是寄存器必须要加[],不然报错,这里lea就是取[寄存器]的值,如: mov eax,2 lea ebx,[eax];执行后ebx=2 mov ebx,eax;等同于上句 lea ebx,eax;编译器报错: error A2070: invalid instruction operands 对于变量来说加不加[]都是一样的效果,都是取变量的地址,相
-
汇编语言指令大全 X86和X87汇编指令大全(带注释)
目录 一.数据传输指令 1. 通用数据传送指令. 2. 输入输出端口传送指令. 3. 目的地址传送指令. 4. 标志传送指令. 二.算术运算指令 三.逻辑运算指令 四.串指令 五.程序转移指令 六.伪指令 七.处理机控制指令:标志处理指令 浮点运算指令集 1.控制指令 2.数据传送指令 3.比较指令 4.运算指令 其它 一.机械码,又称机器码. 二.需要熟练掌握的全部汇编知识(只有这么多) 三.常见修改(机器码) 四.两种不同情况的不同修改方法 一.数据传输指令 它们在存贮器和寄存器.寄存器和输
-
汇编语言入门汇编指令及寄存器详解教程
目录 前言 什么是汇编语言 汇编语言产生的原因 汇编与二进制的关系 寄存器 寄存器作用 存取速度比较 寄存器分类 常用寄存器用途 寄存器EAX.AX.AH.AL的关系 汇编语言指令 数据传送指令 算术运算指令 逻辑运算指令 循环控制指令 转移指令 linux 和 windows 下汇编的区别 总结 前言 我们大都是被高级语言惯坏了的一代,源源不断的新特性正在逐步添加到各类高级语言之中,汇编作为最接近机器指令的低级语言,已经很少被直接拿来写程序了,不过我还真的遇到了一个,那是之前的一个同事,因为在
-
汇编语言教程文件后缀大小写S区别分析详解
目录 一.大小写后缀的区别 二.编译的相关流程 1.预处理器 2.编译阶段 3.汇编阶段 4.链接阶段 一.大小写后缀的区别 .s 汇编语言源程序;汇编 .S 汇编语言源程序;预处理,汇编 小写的s文件,在后期阶段不在进行预处理操作,所以我们不能在这里面写预处理的语句在里面 大写的S文件,还会进行预处理.汇编等操作,所以我们可以在这里面加入预处理的命令 二.编译的相关流程 预处理(Pre-Processing)-->编译(Compiling)-->汇编(Assembling)-
-
汇编语言系列之汇编实现简单数学运算
目录 5.计算S=1+2×3+3×4+4×5+···+N(N+1) 5.1设计要求: 5.2设计思路: 5.3程序清单: 5.4程序运行结果及分析: 6.计算N! 6.1设计要求: 6.2设计思路: 6.3程序清单: 6.4程序运行结果及分析: 软件:emu8086 语言:汇编语言(Assembly) 注意:本文列出了两种算术运算的代码,全部代码为博主独自一人编写,会有瑕疵,谨慎使用. 5.计算S=1+2×3+3×4+4×5+···+N(N+1) 5.1设计要求: 设计程序,实现数学公式S=1+
-
汇编语言系列之汇编实现字符串操作
目录 7.字符串匹配设计 7.1设计要求: 7.2设计思路: 7.3程序清单: 7.4程序运行结果及分析: 8.字符串输入及显示设计 8.1设计要求: 8.2设计思路: 8.3程序清单: 8.4程序运行结果及分析: 软件:emu8086 语言:汇编语言(Assembly) 注意:本文列出了字符串匹配和字符串输入显示的代码,全部代码为博主独自一人编写,会有瑕疵,谨慎使用. 7.字符串匹配设计 7.1设计要求: 要求掌握提示信息的设置及读取键入信息的方法.设计程序,从键盘输入两个字符串进行比较,如相
随机推荐
- AngularJS入门教程之ng-checked 指令详解
- php中XMLHttpRequest(Ajax)不能设置自定义的Referer的解决方法
- jQuery 研究心得 取得属性的值
- 谈谈Java利用原始HttpURLConnection发送POST数据
- Oracle数据库的启动和关闭顺序实例讲解
- php开发工具之vs2005图解
- PHP URL路由类实例
- php 将bmp图片转为jpg等其他任意格式的图片
- C#启动windows服务方法的相关问题分析
- PHP实现邮件群发的源码
- Lua教程(十七):C API简介
- SQL Server误区30日谈 第11天 镜像在检测到故障后瞬间就能故障转移
- 21条MySQL优化建议(经验总结)
- Hadoop1.2中配置伪分布式的实例
- 几行代码轻松搞定jquery实现flash8类似的连接效果
- js select下拉联动 更具级联性!
- JS实现的另类手风琴效果网页内容切换代码
- Python for Informatics 第11章之正则表达式(二)
- android nfc常用标签读取总结
- 详解如何使用VisualStudio高效开发调试AndroidNDK