伪指令的使用与心得
汇编语言伪指令
汇编语言伪指令汇编语言作为一种低级编程语言,广泛应用于嵌入式系统、驱动程序开发和操作系统内核等领域。
在进行汇编语言编程时,我们常常会使用到一些伪指令。
本文将介绍一些常见的汇编语言伪指令及其用法。
1. 数据定义伪指令数据定义伪指令用于声明并初始化数据。
在汇编语言中,我们可以使用以下伪指令来定义不同类型的数据:1.1 DB(Define Byte):用于定义一个字节的数据。
例如:DB 10 ;定义一个字节的数据,值为101.2 DW(Define Word):用于定义一个字的数据。
例如:DW 100 ;定义一个字的数据,值为1001.3 DD(Define Doubleword):用于定义一个双字的数据。
例如:DD 1000 ;定义一个双字的数据,值为10001.4 DQ(Define Quadword):用于定义一个四字的数据。
例如:DQ 10000 ;定义一个四字的数据,值为100001.5 DT(Define Ten Bytes):用于定义一个十个字节的数据。
例如:DT 1234567890 ;定义一个十个字节的数据,值为12345678902. 代码段和数据段伪指令在汇编语言中,我们通常需要将代码和数据分开存放,以便于管理和执行。
以下是一些常用的代码段和数据段伪指令:2.1 CODE SEGMENT:用于定义代码段。
例如:CODE SEGMENT;代码段内容CODE ENDS2.2 DATA SEGMENT:用于定义数据段。
例如:DATA SEGMENT;数据段内容DATA ENDS2.3 STACK SEGMENT:用于定义堆栈段。
例如:STACK SEGMENT;堆栈段内容STACK ENDS3. 控制指令伪指令控制指令伪指令用于控制程序的执行流程。
以下是一些常见的控制指令伪指令:3.1 IF-ELSE-ENDIF:用于条件判断。
例如:IF 条件;条件为真时执行的代码ELSE;条件为假时执行的代码ENDIF3.2 REPEAT-UNTIL:用于循环执行一段代码直至满足条件。
汇编语言指令及伪指令练习的实验报告总结(范文)
汇编语言指令及伪指令练习的实验报告总结汇编语言指令及伪指令练习的实验报告总结篇一:汇编语言实验报告福建农林大学金山学院课程名称:姓名:系:专业:年级:学号:指导教师:职称: (程序设计类课程) 实验报告汇编语言 201X~201X学年第二学期实验项目列表福建农林大学金山学院实验报告系:专业:年级:姓名:学号:实验课程:汇编语言实验室号:_ _1#605 实验设备号: I3 实验时间:201X.4.25指导教师签字:成绩:实验一汇编程序的汇编及运行1.实验目的和要求 (1)熟悉汇编程序的汇编、连接、执行过程;(2)生成LST文件,查看L ST文件;(3)生成BJ文件,修改语法错误;(4)生成EXE文件;(5)执行程序。
2.实验环境 IBM—PC机及其兼容机;实验的软件环境是:操作系统: DS2.0以上;调试程序: DEBUG.CM;文本编程程序: EDIT.EXE、PS.EXE;宏汇编程序:MA SM.EXE(或AS M .EXE);连接装配程序:L INK .EXE;交叉引用程序:CREF.EXE(可有可无)。
3.实验内容及实验数据记录(1)将数据段输入,取名 1.txt,保存在MASM文件夹下。
生成LST文件,(不必连接、运行)用EDI T查看1.LS T文件。
试回答: DA1,DA2的偏移量分别是多少?C UNT的值为多少?DATA SEGME NT RG 20HNUM1=8 NUM2=NUM1+10H DA1 DB ‘I BM PC’ CUN T EQU $-DA1 DATA END S DA2 DB 0AH, 0DH EN D(2)输入有错误的文件,修改错误语句。
(MASM没有出现错误即可。
不必连接、运行。
)D ATA SEGMEN T VAR1 DB0, 25, DH,300 VAR2DB 12H, A4H, 6BH VAR3 DB ’ABCD EF’ VAR4 D 1H, 5678H VAR5 D 10H DUP(?) D ATA ENDS C DE SEGMENT ASSUME CS: CDE, DE: DATA MV D S, AX LEASI, VAR5 M V BX, FFSE T VAR2 MV[SI], 0ABH MV AX, VA R1+2 MV [B X], [SI] M V VAR5+4,VAR4 MV AH, 4CH INT21H ENDS E ND START B EING MV AX, DATA CDE(3)输入正确的程序,汇编、连接、运行 STACKS SEGMENT S TACK D 128DUP(?) EN DS SEGMENT ENDS SEGM ENT ASSUME CS: CDES,DS: DATAS STACKS DA TAS DATASCDES STRIN G DB ‘ELCM E!’, 13, 10, ‘$’ STA RT: MV AX, DATAS MV DS, AX LEA DX, S TRING MV A H, 9 INT 21H MV AH,4CH INT 21H CDES END S END STAR T4.算法描述及实验步骤 1)首先,用记事本输入各段程序,并储存成源程序,保存在MASM目录下。
指令、伪指令、伪操作的概念及其作用。
指令、伪指令、伪操作的概念及其作用。
指令、伪指令和伪操作是计算机中常见的概念,它们在计算机系统中起着重要的作用。
本文将分别介绍这三类概念,并探讨它们在计算机系统中的作用。
指令是计算机程序中的基本操作单位,用于告诉计算机要执行的操作。
指令通常由操作码和操作数两部分组成,操作码表示要执行的操作类型,操作数表示该操作所需的数据。
指令可以是计算机硬件所支持的真正的操作,也可以是一些高级语言编译成的机器码。
指令在计算机系统中起着至关重要的作用,它们决定了程序的执行流程和计算结果。
计算机通过执行指令来完成各种任务,包括数据处理、运算、存储等。
伪指令是一种不是真正被计算机执行的指令。
它们通常是由汇编语言编写的,用于在程序的编译或汇编过程中指示编译器或汇编器执行一些特定的操作。
伪指令不是计算机硬件所支持的真正的操作,而是一些在编译或汇编过程中产生的辅助指令。
它们可以是一些声明、调用、分支等指令,用于指示程序的结构和执行流程。
伪指令在编译和汇编过程中扮演着重要的角色,它们可以帮助程序员控制程序的编译和执行过程,提高程序的效率和可维护性。
伪操作是一种在程序编译或汇编过程中执行的操作,它们通常是由汇编器或编译器实现的一些特定功能。
伪操作也是一种在程序编译过程中产生的辅助操作,它们可以用来定义一些数据、常量、符号等内容,或者执行一些初始化、分配内存等操作。
伪操作在程序编译和汇编过程中起着非常重要的作用,它们可以帮助程序员更好地管理程序的数据和符号,提高程序的可读性和可维护性。
指令、伪指令和伪操作在计算机系统中有着不同的作用和重要性。
指令是计算机程序中的基本操作单位,决定了程序的执行流程和计算结果,是程序的核心部分。
伪指令和伪操作则是在程序编译和汇编过程中起着辅助作用,帮助程序员控制程序的结构和执行流程,提高程序的效率和可维护性。
三者在计算机系统中相互配合,共同构成了程序的编译和执行过程。
指令、伪指令和伪操作的作用可以从以下几个方面来分析:首先,指令是计算机程序的基本操作单位,它决定了程序的执行流程和计算结果。
伪指令知识点总结
伪指令知识点总结伪指令这玩意儿,听起来是不是有点玄乎?其实啊,它就像我们生活中的“幕后英雄”,虽然不直接参与“表演”,但却起着至关重要的作用。
比如说,在编程的大舞台上,指令就像是冲锋陷阵的战士,执行着各种具体的任务。
而伪指令呢,则像是军师,在幕后出谋划策,为整个程序的架构和布局提供指导。
咱先来说说数据定义伪指令。
这就好比是在为程序的“仓库”划分区域,规定好每个区域存放什么样的“货物”。
比如说,定义一个字节类型的数据,就像是给仓库里划出一个小格子,只能放一个小小的“物件”;定义一个字类型的数据呢,那就是一个稍微大一点的格子,可以放个稍微大一点的“宝贝”。
你说这是不是很形象?再看看段定义伪指令。
这就像是给程序的“大部队”划分阵营。
不同的阵营有不同的任务和职责。
比如说,代码段就是专门负责执行具体操作的“战斗部队”;数据段呢,则是存放各种“粮草弹药”的地方。
如果没有段定义伪指令,那程序岂不是乱成了一锅粥?还有过程定义伪指令,这就像是给程序中的一个小任务成立了一个“特别行动小组”。
这个小组有自己的规则和流程,能独立完成特定的功能。
宏定义伪指令呢?这就好比是给程序制作了一个“快捷方式”。
当你需要重复执行一段复杂的操作时,不用一次次地重复写那些代码,只要调用这个“快捷方式”就行了,多省事啊!伪指令的作用可不仅仅是这些,它还能控制程序的编译过程,就像是一个精明的“导演”,掌控着整个程序的“拍摄进度”和“效果呈现”。
总之,伪指令在编程中可是不可或缺的存在。
要是没有它们,程序就像是失去了方向的船只,在茫茫的代码海洋中迷失。
所以啊,咱们可得好好掌握这些伪指令的知识,让我们的程序能够高效、准确地运行,为我们解决各种复杂的问题。
你说是不是这个理儿?。
《汇编语言》学习笔记6——伪指令
《汇编语⾔》学习笔记6——伪指令1.伪指令⼜称伪操作,即不能像汇编指令⼀样⽣成可执⾏的⼆进制机器代码,⽽是在汇编程序对汇编语⾔源程序进⾏汇编(编译)期间,由汇编程序执⾏。
它与C中的说明性语⾔的含义类似,起到说明作⽤,⽤来指出程序分段、数据定义、存储分配、程序开始和结束等信息,这些信息在汇编(编译)完成后就不⽤了。
但程序中没伪指令,则系统就⽆法完成编译。
2.段定义伪指令:⽤来定义各种类型的段 1.格式:段名 SEGMENT [类型参数] ...... 段名 ENDS 1.其中SEGMENT和ENDS必须成对出现,表⽰段的开始和结束。
⼀般的,段名和段的意义⼀致,便于识别。
2.段名实际就是段地址,在汇编过程中,系统给出具体的地址值,⼀个段必须有⼀个名字来标识。
3.参数是可选项(可有可⽆),⽤于指出段的边界、段的组合、类别标识,⼀般⽤于多模块程序设计中。
2.类型参数 1.定位类型 PARA 该段的起始地址必须为⼩段的⾸地址,即起始地址的16进制数最低位为0 BYTE 该段可以从任意地址开始 WORD 该段必须从字边界开始,即起始地址为偶数 DWORD 该段必须从双字边界开始,即起始地址的16进制数为最低应为4的倍数 PAGE 该段必须从页边界开始,即起始地址的16进制数最低两位为00(能被256整除) 若不指定定位类型,系统默认为PARA 2.组合类型 PRIVATE 该段为私有段,连接时不与其他同名段合并 PUBLIC 连接时可与其他模块中的同名段按顺序连接成⼀个段 COMMON 表⽰该段与其他模块中的同名段有相同的起始地址,如果连接将产⽣覆盖,连接后段的长度为同名段中的最长者 STACK 表⽰该段为堆栈段 AT 表达式 该段直接定位在表达式指出的位置上 若不指定组合类型,默认为PRIVATE 3.类型标识:在引号中给出段的类型名。
在连接时,类别标识相同的段放在连续的存储区中。
(如:"STACK"⽤啦标识该段为堆栈段) 4.END:结束标记,若碰到伪指令END则停⽌编译3.ASSUME伪指令:⽤于指明段寄存器与段的对应关系 1.格式:ASSUME 段寄存器:段名,[段寄存器:段名,段寄存器:.....]【[]中标识可选项】 2.除了代码段寄存器CS不能⽤MOV指令赋值外,其他段寄存器都可⽤MOV指令进⾏初始化。
8086汇编语言伪指令
一、伪指令详解伪指令在百度百科中的定义为:伪指令(Pseudo Instruction)是用于对汇编过程进行控制的指令,该类指令并不是可执行指令,没有机器代码,只用于汇编过程中为汇编程序提供汇编信息。
例如,提供如下信息:哪些是指令、哪些是数据及数据的字长、程序的起始地址和结束地址等。
伪指令有2个特点:1.由于是伪“指令”,因而它只存在于汇编语言中。
高级语言中不叫指令,叫语句;2.由于是“伪”指令,也即“假”指令,因而不是可执行指令,不会产生机器代码,不会占用ROM空间,只用于汇编过程中为汇编程序提供汇编信息。
与指令的区别::1.指令是在执行阶段发挥作用的,由CPU(Intel、AMD等)来执行。
2.伪指令是在编译阶段发挥作用的,由汇编器(MASM、TASM等)来解释。
二、数据定义伪指令为源程序中的数据和堆栈区分配数据存储单时,使用最多的伪指令。
数据定义伪指令格式如下:常用的数据定义伪指令类型有:∙DB(定义字节,常用)一个字节数据占1个字节单元,读完一个,偏移量加1∙DW(定义字,常用)一个字数据占2个字节单元,读完一个,偏移量加2∙DD(定义双字)一个双字数据占4个字节单元,读完一个,偏移量加4∙DQ(定义四字)一个四字数据占8个字节单元,读完一个,偏移量加8∙DT(定义十字节,用于BCD码)数据定义伪指令后面的初值表可以是常数、表达式、字符串。
例如:D2DW110*230;为D2分配1个字,存放表达式的值D3DB‘GOOD!’;为D3分配5字节,用来存放字符串‘GOOD!’D4DD2.4E+3;为D4分配2个字,存放一个浮点数D5DB‘AB’;为D5分配2字节,字符A在低字节,B在高字节D6DW‘AB’;为D6分配1个字,字符A在高字节,B在低字节S1DB5DUP(?);为S1预留5字节的存储空间S2DW3DUP(0);为S2分配3个字,初值设为0语句1相当于C语言中的DW D2=110*230,只不过是语法结构不太一样注意:通过变量名操作时,变量名代表存储区的第一个数据的地址。
ARM伪指令
ARM伪指令.txt珍惜生活——上帝还让你活着,就肯定有他的安排。
雷锋做了好事不留名,但是每一件事情都记到日记里面。
在 ARM 汇编语言程序里,有一些特殊指令助记符,这些助记符与指令系统的助记符不同,没有相对应的操作码,通常称这些特殊指令助记符为伪指令,他们所完成的操作称为伪操作。
伪指令在源程序中的作用是为完成汇编程序作各种准备工作的,这些伪指令仅在汇编过程中起作用,一旦汇编结束,伪指令的使命就完成。
在 ARM 的汇编程序中,有如下几种伪指令:符号定义伪指令、数据定义伪指令、汇编控制伪指令、宏指令以及其他伪指令。
符号定义( Symbol Definition )伪指令符号定义伪指令用于定义 ARM 汇编程序中的变量、对变量赋值以及定义寄存器的别名等操作。
常见的符号定义伪指令有如下几种:—用于定义全局变量的 GBLA 、 GBLL 和 GBLS 。
—用于定义局部变量的 LCLA 、 LCLL 和 LCLS 。
—用于对变量赋值的 SETA 、 SETL 、 SETS 。
—为通用寄存器列表定义名称的 RLIST 。
1、 GBLA、GBLL 和GBLS语法格式:GBLA ( GBLL 或 GBLS )全局变量名GBLA 、 GBLL 和 GBLS 伪指令用于定义一个 ARM 程序中的全局变量,并将其初始化。
其中:GBLA 伪指令用于定义一个全局的数字变量,并初始化为 0 ;GBLL 伪指令用于定义一个全局的逻辑变量,并初始化为 F (假);GBLS 伪指令用于定义一个全局的字符串变量,并初始化为空;由于以上三条伪指令用于定义全局变量,因此在整个程序范围内变量名必须唯一。
使用示例:GBLA Test1 ;定义一个全局的数字变量,变量名为 Test1Test1 SETA 0xaa ;将该变量赋值为 0xaaGBLL Test2 ;定义一个全局的逻辑变量,变量名为 Test2Test2 SETL ;将该变量赋值为真GBLS Test3 ;定义一个全局的字符串变量,变量名为 Test3Test3 SETS “ Testing ”;将该变量赋值为“ Testing ”2、 LCLA、LCLL 和LCLS语法格式:LCLA ( LCLL 或 LCLS )局部变量名LCLA 、 LCLL 和 LCLS 伪指令用于定义一个 ARM 程序中的局部变量,并将其初始化。
完整版汇编语言中常用的伪指令档
完整版汇编语言中常用的伪指令档汇编语言是一种低级的程序设计语言,它用于编写底层计算机程序。
在汇编语言中,伪指令是一类特殊的指令,它们在程序运行时不会被计算机执行,而是在编译或汇编时被处理器或汇编器解释和展开。
伪指令在汇编语言中起到辅助编程、优化代码和声明常量等作用。
本文将介绍完整版汇编语言中常用的伪指令档。
一、伪指令的定义和作用伪指令是汇编语言中的一类特殊指令,它们不是真正的指令,不会被计算机执行,而是在编译或汇编的过程中被汇编器或处理器解释和处理。
伪指令主要用于辅助编程、优化代码和声明常量等作用。
伪指令的格式一般与真正的指令相似,但一般不包含操作码。
在一些汇编语言中,伪指令以特殊的标记或符号来区分,比如以“.”开头的指令。
二、常用的伪指令档1. ORG指令ORG指令用于指定程序的起始地址。
在汇编程序中,使用ORG指令可以将程序的代码段或数据段放置在指定的内存地址处。
其格式一般为:ORG 地址其中,地址为16进制数或表示内存单元的符号。
2. EQU指令EQU指令用于定义符号常量或符号变量。
它将一个符号与一个数值或地址进行关联,使得在程序中使用该符号时可以被汇编器或处理器替换为对应的数值或地址。
其格式一般为:符号 EQU 数值或地址其中,符号为一个标识符,数值或地址可以是16进制数、10进制数或表示内存单元的符号。
3. DB指令DB指令用于定义字节型数据。
它可以用于声明字符、整数等字节型数据,并将这些数据存储在指定的内存地址中。
其格式一般为:标号 DB 表达式其中,表达式可以是一个字节常量、字符常量或表示内存单元的符号。
4. DW指令DW指令用于定义字型数据。
它可以用于声明无符号整数等字型数据,并将这些数据存储在指定的内存地址中。
其格式一般为:标号 DW 表达式其中,表达式可以是一个字常量或表示内存单元的符号。
5. DD指令DD指令用于定义双字型数据。
它可以用于声明无符号双字整数等双字型数据,并将这些数据存储在指定的内存地址中。
常用伪指令及其应用
常用伪指令及其应用
常用伪指令及其应用
伪指令(pseudo instructions)是一类特殊的指令,它不会被编译成机器指令而是被编译器转换为特定的机器指令,并且一般可以用于汇编语言程序中。
1. ORG指令:
ORG指令是最常见的伪指令,它用于指定程序在被装载到计算机存储器中的位置。
它通常的格式是ORG address, address是要求程序地址的起始位置。
ORG指令是汇编程序的一个标记指令,指定下一条指令的装载地址,它不产生机器指令。
2. EQU指令:
EQU指令是给变量赋值的指令,它的格式通常为symbol=exprssion,其中symbol是变量,expression是一个表达式,用于给变量symbol赋值,或者指定程序中用作标记的某个地址。
3. DS指令
DS指令是在程序中定义一段存储空间的指令,它的格式一般为DS size,其中size为所要定义存储空间的大小,该指令中定义的变量没有初始值,在程序中可以用于定义数组等多种形式。
4. END指令
END指令是汇编程序的结束指令,它的格式为END symbol,其中symbol可以是一个标记,用来标记汇编程序的起始地址,也可以是一个数字,用来标记程序的起始地址。
5. IF指令
IF指令是汇编中的条件指令,它的格式为IF expression,其中expression可以是一个比较运算的表达式,当表达式的结果为真(1)时,IF中的条件成立,程序就会按照正确的执行步骤进行操作,否则,IF指令中的语句就会被忽略。
伪指令的使用与心得
伪指令的使⽤与⼼得伪指令的使⽤与⼼得1 伪指令的定义所谓指令(instruction),针对汇编程序⽽⾔,就是将CPU直接识别的指令——⼆进制指令通过查表的⽅式转换为asmmebly 指令⽽⽅便程序⼈员来编制程序,⼆进制指令就是我们所常说的机器指令。
这个转换过程是编译器的⼯作,不⽤程序员来⼲涉。
汇编语⾔指令的形式是以助记符的形式出现的, 所以⽐较容易理解和记忆。
⽤汇编指令编制的汇编语⾔源程序, 可长可短,这是由程序员根据系统的要求, 或是根据程序的难易程序决定的。
单⽚机与其它计算机⼀样, 在汇编源程序时需要向汇编程序提供某些必要的信息, 诸如源程序的⽬的程序从存储器的哪⼀个单元开始装⼈? 源程序是否结束? 程序中所⽤的数据存放在什么地址? 某⼀个标号的地址是哪⾥? 某⼀个可位寻址的代名字是什么?等等。
这些信息要和源程序⼀起出现, 成为源程序的⼀部分, 这⼀类信息也可以指令的形式出现, 汇编语⾔把它们称为伪指令。
所以伪指令是⼀些特殊的符号集合, 它们不是⼀个单⽚机系统指令集中的指令(在指令集中找不到)。
我们可以通过以上的过程描述发现,通过以上从⼆进制到汇编指令的转换过程发现,这⽅便了程序⼈员进⾏程序的编制。
但是,⽤汇编程序代码和⾼级语⾔的代码进⾏⽐较,汇编程序还是很复杂。
⽐如说,⼀个简单⽐较过程,需要使⽤CMP、JMP、JNZ、JZ等⼀系列的指令来实现,不仅复杂⽽且容易出错,很⼤的影响了效率。
正是因为这个⽅⾯的原因,MASM 就出现了.if.endif.elseif等伪指令,这些伪指令为我们在汇编程序中使⽤和⾼级语⾔⼗分接近的的控制⽅式来进⾏⽐较、循环等结构控制。
⾄于,这些伪指令到真正的指令之间的转换⼯作,交给汇编器来完成就好了。
总结起来,伪指令最终⾯对的是CPU 指令的指令。
伪指令⼜称汇编程序控制译码指令。
“伪”字体现在汇编时伪指令不产⽣机器指令代码,不影响程序的执⾏, 仅产⽣供汇编⽤的某些命令, 在汇编时执⾏某些特殊操作。
2.4伪指令
EQU:为标号赋值。
◦ 格式:label: . EQU value ◦ 所赋之值可以为在此标号之前定义过的某一符号常量或一 表达式。符号不能超前引用。 ◦ 举例:
label: .EQU 10
VDEF:为标号赋值,可以在程序的任何部位为标 号重复赋值。
◦ 格式:int0: .VDEF 0x5F
主要用来对段、程序数据等进行定义。 1、 PUBLIC, EXTERNAL, DEFINE, VAR, EQU, VDEF
PUBLIC:声明将在其他文件中被引用的全局标号。 格式:.PUBLIC label[ ,label] [ ,…] 当要声明多个全局标号时,要用逗号将每一标号分开。 在外部文件中用伪指令EXTERNAL所声明的标号必须是用 PUBLIC伪指令已经声明过的。 ◦ 举例: .PUBLIC sym1,sym2 //声明多个全局标号用逗号隔开, 空格被忽略 ◦ ◦ ◦ ◦
DW:以16位整型数据形式来存储常量或变量。 格式:[label:] .DW [value][,value][,…] 说明:
◦ 本伪指令是把一系列的16位整型常量或变量存入连续的整 型数据单元中。 ◦ 用逗号隔开多个数值。 ◦ 常量中含有ASCII字符串,必须用单引号将其括起来。 ◦ 若DW后未输入任何数值,自动会存入一个整型零常量。
过程调用 在程序中调用一个过程时,程序控制就从调用程序 中转移到被调用的过程,且从过程的起始位置开始 执行该过程的指令,直到执行到RETF指令时,程序 控制返回调用过程时原程序的断点位置继续执行下 面的指令。 过程调用格式:
◦ CALL 过程名
举例:
汇编学习笔记(4)-伪指令(MASM)
汇编学习笔记(4)-伪指令(MASM)前⾔ 编写汇编代码的时候会使⽤到两种语句,⼀种就是前⾯介绍的汇编指令⼜CPU提供功能⽀持,另⼀种呢叫做伪指令,伪指令是由汇编的编译器提供⽀持。
所以伪指令的运⾏结果都必须实在编译的时候就能确定的,下⾯介绍的就是伪指令了。
注意接下来介绍的伪指令都是基于MASM汇编编译器,⽐较常⽤的还有NASM 它的语法以后有机会介绍数值表达式 数值表达式不是汇编指令,表达式的值是在汇编代码的汇编过程中就由汇编编译器计算出结果⽽写到⼆进制程序中了,并不是在程序运⾏的过程中才计算的 (1) 常数表达式 常数就是直接的数字,直接写数字默认表⽰10进制数,也可以⽤符号指定为其他进制 D = ⼗进制 ; MOV AL, 1234D B = ⼆进制 ; MOV AL, 0101B H = ⼗六进制 ; MOV AL, 0FFFFH , 注意常数必须是数字开头不能是字母开头,如果16进制数第⼀个数字是字母的话就要补⼀个0在前⾯ Q = ⼋进制 ; MOV AL, 123Q 因为在程序中字母也是数字,所以其实也可以直接将字母或者字符串当成数字,⽐如 MOV AL, 'a' MOV AX,"ab" ; 双引号和单引号都是可以使⽤的 (2) 算数运算符 就是简单的正(+) 负(-) 加(+) 减(-) 乘(*) 除(/) 模(mod) mov ax, 100+200 mov ax, 100/2 (3) 关系运算符 等于(EQ) 不等(NE) ⼤于(GT) ⼩于(LT) ⼤于等于(GE) ⼩于等于(LE) 如果等式成⽴则实际的值为0FFFF就是补码表⽰的-1, 如果关系不成⽴那么结果就是0 mov ax, 123 gt 234 mov ax, 1234+5 lt 1235 (4) 逻辑运算 与(and) 或(or) ⾮(not) 异或(xor) 左位移(shl) 右位移(shr) mov ax, 1 shl 3 mov al, 3 and 47 (5) 其他操作符 HIGH LOW WIDTH MASK HIGH 表⽰取数据的⾼⼋位 LOW 表⽰取数据的低⼋位地址表达式 地址表达式所表⽰的是存储器操作数的地址。
微型计算机原理及应用-伪指令
用于定义程序中的代码段、数据段 和堆栈段等逻辑段,如SEGMENT、 ENDS等。
过程定义伪指令
用于定义程序中的子程序或过程,如 PROC、ENDP等。
宏定义伪指令
用于定义程序中可重复使用的宏, 如MACRO、ENDM等。
其他伪指令
包括一些特殊的伪指令,如条件汇 编伪指令、列表控制伪指令等。
03 伪指令在汇编语言中的应 用
简化程序编写
符号定义
使用伪指令可以为常量、 变量和地址等定义易于记 忆的符号,避免硬编码, 提高程序的可维护性。
数据结构声明
伪指令可用于声明数组、 结构体等复杂数据结构, 简化数据组织和管理。
宏定义
通过伪指令定义宏,可以 实现代码片段的复用,减 少重复编写相似代码的工 作量。
未来,高级语言可能会进一步吸收伪指令的优点 ,使得编程更加简便、高效。
智能化编程辅助工具的发展
随着人工智能技术的进步,未来可能会出现更加 智能化的编程辅助工具,这些工具能够自动识别 程序员意图,推荐合适的伪指令,进一步提高编 程效率。
THANKS FOR WATCHING
感谢您的观看
未来发展趋势预测
伪指令的标准化
随着计算机技术的发展,伪指令的标准化将成为 一个重要趋势,这将有助于提高程序的可移植性 和兼容性。
伪指令在特定领域的优化
针对特定应用领域,伪指令可能会进行专门优化 ,以适应不同场景下的需求。例如,在嵌入式系 统、图形处理等领域,可能会出现更加专业化的 伪指令集。
高级语言与伪指令的融合
提高程序可读性
注释
伪指令可用于添加注释,说明代 码的功能、实现逻辑等,提高程
序的可读性和可理解性。
格式化输出
第四章伪指令
第四章伪指令汇编语言源程序由一系列语句构成,这些语句既可以是指令,也可以是伪指令。
指令是由CPU负责执行的,每一条指令都和一条机器语言相对应。
而伪指令是由汇编程序负责执行,完成一些内存单元分配、段之间的连接关系等操作,所以伪指令并不会生成机器指令,也就不会被CPU执行。
在本章中,重点讲解一些常用的伪指令及其功能。
4.1伪指令的分类及伪指令语句格式伪指令又称为伪操作,它虽然不会被CPU执行,但却可以指示汇编程序按照用户的意图,完成数据的定义、存储器的分配、指示程序结束等功能。
所以伪指令在汇编语言程序设计过程中具有重要的意义,希望读者在学习过程中应该加以高度重视。
4.1.1 伪指令的分类8088/8086的伪指令大致可分为以下八类:·数据定义伪指令;·符号定义伪指令;·段定义伪指令;·过程定义伪指令;·结束伪指令;·条件汇编伪指令;·结构、记录定义伪指令;·其他伪指令。
其中,条件汇编伪指令与结构、记录定义伪指令将在第八章予以介绍。
4.1.2 伪指令语句格式伪指令语句格式一般由四部分组成。
语句格式: [变量] 伪指令助记符参数1,参数2····参数n[;注释]说明:伪指令助记符规定了伪指令的功能。
一般伪指令都有参数,用于说明伪指令的操作对象,参数的类型和个数随着伪指令的不同而不同。
有时参数是常数或数值表达式,有时参数是一般的符号,有时是具有特殊意义的符号。
伪指令语句中的变量可有可无,如果伪指令语句中出现变量,则汇编程序使其记以第一个字节的偏移地址。
注释部分也是可有可无的,用于说明该伪指令的功能。
例如 VAR1 DW 1234H,5678H ;定义VAR1为字变量该语句中的VAR1为变量;DW为伪指令助记符;1234H与5678H为参数;分号后面给出的文字为注释。
4.2汇编语言中的数据项数据项是指令或伪指令语句操作对象的基本组成部分。
51单片机汇编指令及伪指令小结
51单片机汇编指令及伪指令小结51单片机汇编指令及伪指令小结51单片机汇编指令小结一、数据传送类指令MOV用法MOVA,RnMOVA,@RiMOVA,#dataMOVA,directMOVRn,AMOVRn,#dataMOVRn,directMOV@Ri,AMOV@Ri,#dataMOV@Ri,directMOVdirect,AMOVdirect,@RiMOVdirect,Rn功能寄存器送累加器立即数送累加器直接寻址单元送累加器累加器送寄存器立即数送寄存器直接寻址单元送寄存器字节数122122周期11111121121222222222221111XCH不能出现两个直接寻址地址R0和R1只能寻址片内低128字节或者片外低256字节MOVX必须通过A与外部RAM传值,另一个操作数必须用寄存器间接寻址MOVC必须通过A进行注意事项MOV指令中不能出现两个工作寄存器间接寄存器寻址只能用R0和R1R0和R1只能寻址片内低128字节或者片外低256字节(SFR不能通过工作寄存器寻址)DPTR为唯一16位寄存器内部RAM单元送累加器1累加器送内部RAM单元1立即数送内部RAM单元2直接寻址单元送内部RAM单元累加器送直接寻址单元内部RAM单元送直接寻址单元寄存器送直接寻址单元址单元223223MOVdirect,#data 立即数送直接寻址单元MOVdirect2,direct1直接寻址单元送直接寻MOVDPTR,#data1616位立即数送数据指针3MOVXMOVXA,@Ri外部RAM单元送累加器1(8位地址)MOVXA,@DPTRMOVX@Ri,AMOVX@DPTR,AMOVCMOVCAA+DPTRXCHXCHD,@外部RAM单元送累加器(16位地址)累加器送外部RAM单元(8位地址)累加器送外部RAM单元(16位地址)查表数据送累加器(DPTR为基址)查表数据送累加器(PC为基址)累加器与寄存器交换累加器与内部RAM单元交换累加器与直接寻址单元交换累加器与内部RAM单元111111121MOVCA,@A+PCXCHA,RnXCHA,@RiXCHA,directXCHDA,@Ri低4位交换PUSH&POPPOPdirectPUSHdirect栈顶弹出指令直接寻址单元直接寻址单元压入栈顶2222用ACC表示累加器堆栈在用户RAM区二、算术运算类指令指令ADD用法ADDA,RnADDA,@RiADDA,directADDA,#dataADDCADDCA,RnADDCA,@RiADDCA,#dataADDCA,directINCINCAINCRnINCdirectINC@Ri功能累加器加寄存器累加器加内部RAM单元累加器加直接寻址单元累加器加立即数累加器加寄存器和进位标志累加器加内部RAM单元和进位标志累加器加立即数和进位标志累加器加直接寻址单元和进位标志累加器加1寄存器加1直接寻址单元加1内部RAM单元加1字节数112211221121周期111111111111注意事项ADD可以产生进位,但不考虑进位加法类指令只能通过A进行加法类的和超过8位时,CY置1,OV置1 ADDC可以产生进位,也考虑进位除了INCA改变奇偶标识位,其他都不改变PSW(不改变CY)INCDPTRDASUBBDAASUBBA,RnSUBBA,@RiSUBBA,#dataSUBBA,directDECDECADECRnDEC@RiDECdirectMUL&MULABDIV数据指针加1十进制调整累加器减寄存器和进位标志累加器减内部RAM单元和进位标志累加器减立即数和进位标志累加器减直接寻址单元和进位标志累加器减1寄存器减1内部RAM单元减1直接寻址单元减1累加器乘寄存器B1111221112121111111114结果存储为BAA、B为单字节无符号数乘积大于255时(结果中B不为0),OV置1CY总为0结果储存为:商A,余数B除数为0时,OV置1与INC类似DIVAB累加器除以寄存器B14三、逻辑运算类指令指令ANL用法ANLA,RnANLA,@RiANLA,#dataANLA,directANLdirect,AANLdirect,#dataORLORLA,RnORLA,@RiORLA,#dataORLA,direct功能累加器与寄存器累加器与内部RAM单元累加器与立即数累加器与直接寻址单元直接寻址单元与累加器直接寻址单元与立即数累加器或寄存器累加器或内部RAM单元累加器或立即数累加器或直接寻址单字节数1122231122周期注意事项111111111元ORLdirect,AORLdirect,#dataXRLXRLA,RnXRLA,@RiXRLA,#dataXRLA,directXRLdirect,AXRLdirect,#dataRLARRARLCARRCACPLACLRA 直接寻址单元或累加器直接寻址单元或立即数累加器异或寄存器累加器异或内部RAM单元累加器异或立即数累加器异或直接寻址单元直接寻址单元异或累加器直接寻址单元异或立即数累加器左循环移位累加器右循环移位累加器连进位标志左循环移位累加器连进位标志右循环移位累加器取反累加器清零2311222311111111111112111111边上一位移入CY,另一侧一位从CY移入ANL、ORL、XRL均可以对接口进行操作四、控制转移类指令类指令用法ACALLaddr11功能2KB范围内绝对调用字节数2周期注意事项2Addr0~10赋给PC0~10PC11~15不变调用时,地址分两次压栈调用时,地址分两次压栈A+DPTR赋给PCLCALLaddr16AJMPaddr11LJMPaddr16SJMPrelJMP@A+DPTRRETRET1JCrel64kb范围内长调用2KB范围内绝对转移64KB范围内长转移-128B~127B相对短转移相对长转移子程序返回中断返回判断CY=1转移323211122222222JNCrelJZrelJNZrelCJNEA,#data,relCJNEA,direct,relCJNERn,#d ata,rel判断CY=0转移累加器为零转移累加器非零转移累加器与立即数不等转移累加器与直接寻址单元不等转移寄存器与立即数不等转移22233332222222221影响CY:前数>=后数,CY=0,反之CY=1CJNE@Ri,#data,relRAM单元与立即数不等转移五、位操作类指令MOVMOVC,bitMOVbit,C直接寻址位送CC送直接寻址DJNZRn,relDJNZdirect,relNOP直接寻址单元减1不为零转移空操作寄存器减1不为零转移2312212Bit为RAM中20H~2FH中128个可寻址位,或SFR中可寻址储存单元必须通过C传送SETBJBbit,relJNBbit,relJBCbit,relSETBCSETBbit(bit)为1则转移并清零3331222211逻辑操作与字节中的一致51汇编常用伪指令16位地址:此指令用在原程序或数据块的开始,指明此语句后面目标程序或数据块存放的起始地址;2.【标号】DB字节数据项表:奖项表中的字节数据存放到从标号开始的连续字节单元中。
ARM汇编伪指令
在线学习好工作/ARM汇编伪指令我们做一些操作会有一点麻烦,比方进行一个if then的判断操作。
比如要比较a>b,则去调用某个函数,这就要先去比较a,b的值,然后就会跳转,跳转又会比较大小,less than,就是BLLT,然后跳转到loop,我们通过这些来实现if then 的操作。
循环,先定义一个loop,然后有一些语句跳转到这个语句,然后进行条件判断跳出,然后又进行if then的方式来进行判断。
其实这样是很麻烦的。
为了方便,引入了相当于宏。
c语言里有宏的概念,引入类似于宏的方式,把复杂的有好几天指令进行跳转的完成的小功能级进行新的标签设定,这就是伪指令。
伪指令作用:我们的指令已经可以做各类操作了,但我们操作起来太麻烦了。
比如我现在要设置一个值给寄存器R0,但下次我修改了寄存器R0之后又需要读出来刚才的值,那我们就要先临时保存值到SPSR,CPSR,然后不断切换。
再比如,我们要做一个循环,就要用label结合BL不断进行,但如果我们要循环很多次。
我们就定义了一些类似于带参数的宏的操作一样,来定义我们的伪指令,方便我们更好的实现汇编程序逻辑。
伪指令只是在汇编器之前作用,汇编以后翻译为标准的汇编令集。
伪指令的类别伪指令可分为ARM汇编伪指令和GNU汇编伪指令。
伪指令又类似于学c语言的时候的预处理,在预处理的时候把它定义于一堆的宏转化为真正的c语言的代码。
同样,伪指令是在定义好之后的汇编,汇编的时候会把它翻译成标准指令,也许一条简单的伪指令可以翻译成很多条标准的汇编指令集,所以这就是伪指令最重要的作用。
ARM汇编伪指令是ARM公司的,GNU汇编伪指令是GNU平台的。
他们有自己的汇编器,不同的汇编器的解释语法可以设成不同。
汇编语言分成两块:标准指令集和非标准指令集。
伪指令,我们说了,是类似于宏的东西,是为了简化工作的,所以这种非标准指令集在不同的汇编器下,支持的语法是稍微有点差别的。
今天讲解ARM汇编伪指令,在工作中也常常会遇到GNU的。
常用伪指令及其应用
常用伪指令及其应用一、常用伪指令1. ORG指令ORG指令用于指定程序的起始地址,其语法如下:ORG start [, length]其中start为起始地址,length是程序占用的字节数,可以省略。
ORG指令的应用:ORG指令用于指定程序的起始地址,通常它的第一条指令出现在程序的起始处,它的值默认为0H,即以当前段指针DS的值为基址,若需将程序置于某个内存段中,可通过ORG指令指定程序的起始地址。
2. EQU指令EQU指令用于定义符号,它的语法如下:label EQU expression其中label为一个标号,expression既可以是一个十进制数,也可以是某个标号或表达式。
EQU指令的应用:EQU指令用于定义标号,其值既可以是一个十进制数,也可以是某个标号或表达式,标号的值可以随程序的执行改变,在改变之前可以通过EQU指令预定义标号的值,使程序更加可读。
此外,还可以将EQU指令用于定义常量,便于替换程序中的字符串或数值。
3. DB指令DB指令用于定义数据字节,其语法如下:label DB val1 [, val2]其中label为定义的标号,val1,val2为数据。
DB指令的应用:DB指令用于定义十六进制数据,在程序中可以用来定义字符串、变量等常量,例如下面的定义比特位:flag DB 0 ; 定义比特位flag,初始值为0.4. DD指令DD指令用于定义数据double word,其语法如下:label DD val1 [, val2]其中label为定义的标号,val1,val2为数据。
DD指令的应用:DD指令用于定义双字(4个字节)的数据,它和DB指令类似,只是定义的是双字,例如下面的定义:var1 DD 0 ; 定义双字变量var1,初始值为0.5. DW指令DW指令用于定义数据word,其语法如下:label DW val1 [, val2]其中label为定义的标号,val1,val2为数据。
数字逻辑 伪指令
数字逻辑伪指令
在计算机科学中,数字逻辑是一个非常重要的概念。
它是指使用
数字信号进行逻辑运算的过程,这种运算方式可以用来构建各种电子
设备,包括计算机、手机、MP3播放器等等。
数字逻辑是由伪指令来实现的,所谓伪指令,就是为了方便计算
机编程而设置的一种指令。
它不是硬件上真正的指令,而是由软件来
模拟执行。
通常情况下,伪指令既可以用机器语言来编写,也可以用
汇编语言来编写。
在数字逻辑中,常用的伪指令包括一些逻辑运算指令,例如AND、OR、NOT等等。
这些指令用于控制计算机中的各种电子元件,实现不同逻辑电路之间的数据传输和处理。
此外,在数字逻辑中还有一个非常重要的伪指令叫做时钟指令。
时钟指令的作用就是控制逻辑电路中各个元件的工作时序。
只有在时
钟信号的作用下,计算机中的各种电子元件才能按照正确的顺序进行
工作。
通过伪指令,数字逻辑可以实现各种逻辑运算和数据处理。
例如,我们可以使用伪指令来实现加减乘除等基本算术运算,还可以通过伪
指令来编写各种逻辑判断程序,例如判断一个数是否为质数,判断两
个数是否相等等等。
总之,数字逻辑是计算机科学中的重要概念,它的实现离不开伪指令的支持。
在未来,随着计算机科学不断发展,数字逻辑和伪指令将继续发挥非常重要的作用,为我们带来更多的科技进步和便利。
实验二 伪指令实验
实验二伪指令实验一、实验目的1.掌握数据定义伪指令的使用方法;2.掌握符号定义伪指令的使用方法;3.掌握段定义伪指令的使用方法4.掌握各种数据在内存中的存放形式。
二、实验要求1.学会使用数据定义伪指令定义字节数据、字数据、双字数据、四字数据及十字数据;2.学会使用DEBUG中的D命令观察字节数据、字数据、双字数据等在内存中的存放格式;3.学会使用DEBUG中的D命令观察带符号数据和不带符号数据在内存中的存放形式;4.学会使用DEBUG中的D命令观察实数在内存中的存放形式。
三、实验举例【例3.2】 编辑、汇编、连接下列程序段,然后在DEBUG下观察数据的存储格式。
【步骤一】 启动EDIT编辑器,编辑源程序。
程序清单如下:CSEG SEGMENTX1 DB 0AH,0BH,0CH,0DH,31H,32H,33H,34HX2 DB 10,11,12,13,14,15,16,17,18X3 DB -1,-2,-3,-4,-5,-6,-7,-8Y1 DB 25+25,78-34,15*4,90/3Y2 DB 80 MOD 9,3 DUP(50)Y3 DB ‘ABCDEFGH’Z1 DW 1234H,5678H,0ABCDH,0ABEFHZ2 DW -1,-2,-3,-4,-5,-6,-7,-8Z3 DW OFFSET Y3,3 DUP(0),OFFSET Z2,3 DUP(?)CSEG ENDSEND程序输入完毕,以EXAM2.ASM为文件名存入磁盘,进行下一步操作。
【步骤二】 对源程序EXAM2.ASM进行汇编,生成目标程序EXAM2.OBJ。
操作如下:C:>\MASM EXAM2;↙屏幕显示如下信息:Microsoft (R) Macro Assembler Version 5.00Copyright (C) Microsoft Corp 1981-1985, 1987. All rights reserved.50554 + 449926 Bytes symbol space free0 Warning Errors0 Severe Errors汇编通过,没有错误信息产生,进行下一步操作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
伪指令的使用与心得
1 伪指令的定义
所谓指令(instruction),针对汇编程序而言,就是将CPU直接识别的指令——二进制指令通过查表的方式转换为asmmebly指令而方便程序人员来编制程序,二进制指令就是我们所常说的机器指令。
这个转换过程是编译器的工作,不用程序员来干涉。
汇编语言指令的形式是以助记符的形式出现的, 所以比较容易理解和记忆。
用汇编指令编制的汇编语言源程序, 可长可短, 这是由程序员根据系统的要求, 或是根据程序的难易程序决定的。
单片机与其它计算机一样, 在汇编源程序时需要向汇编程序提供某些必要的信息, 诸如源程序的目的程序从存储器的哪一个单元开始装人? 源程序是否结束? 程序中所用的数据存放在什么地址? 某一个标号的地址是哪里? 某一个可位寻址的代名字是什么? 等等。
这些信息要和源程序一起出现, 成为源程序的一部分, 这一类信息也可以指令的形式出现, 汇编语言把它们称为伪指令。
所以伪指令是一些特殊的符号集合, 它们不是一个单片机系统指令集中的指令(在指令集中找不到)。
我们可以通过以上的过程描述发现,通过以上从二进制到汇编指令的转换过程发现,这方便了程序人员进行程序的编制。
但是,用汇编程序代码和高级语言的代码进行比较,汇编程序还是很复杂。
比如说,一个简单比较过程,需要使用CMP、JMP、JNZ、JZ等一系列的指令来实现,不仅复杂而且容易出错,很大的影响了效率。
正是因为这个方面的原因,MASM 就出现了.if.endif.elseif等伪指令,这些伪指令为我们在汇编程序中使用和高级语言十分接近的的控制方式来进行比较、循环等结构控制。
至于,这些伪指令到真正的指令之间的转换工作,交给汇编器来完成就好了。
总结起来,伪指令最终面对的是CPU指令的指令。
伪指令又称汇编程序控制译码指令。
“伪”字体现在汇编时伪指令不产生机器指令代码,不影响程序的执行, 仅产生供汇编用的某些命令, 在汇编时执行某些特殊操作。
但伪指令使用的错误将直接使源程序无法汇编和产生语法错误及目的地址找不到等问题。
所以正确理解单片机中的伪指令对于学习好、应用好单片机是十分重要的。
表1列出了指令与伪指令的区别。
表1 指令与伪指令的区别
2 伪指令的分类和应用
伪指令按照其功能可以四类:目标文件伪指令,控制伪指令,列表伪指令,数据伪指令。
本次就最常用的伪指令做简要介绍。
2.1 目标文件伪指令
目标文件伪指令(object file directive)控制汇编器生成目标文件代码。
表2列出了诸多目标文件伪指令及其作用。
表2 目标文件伪指令
最常用的目标文件伪指令是CODE、UDATA和UDATA_ACS。
CODE伪指令定义不同的代码段。
CODE伪指令中,标记是代码段的名称,操作数是代码段的绝对地址。
如果要将代码段置于复位向量地址处,可以使用语句RESET_VECTOR CODE 0x0000,这条语句告诉汇编器,复位向量要从0x0000处开始。
如果使用不带标记和操作数的CODE伪指令,则一般代码段作为程序的主体部分处理,其地址由汇编器确定。
UDATA和UDAT_ACS伪指令在数据存储器中为变量保存空间。
使用标记,而非数字形式的地址识别数据存储器位置,使程序更加易于阅读。
IDATA和IDATA_ACS伪指令和UDATA和UDAT_ACS伪指令相似,不同之处在于UDATA和UDAT_ACS伪指令用使用数据来初始化存储器,而不是保留存储器空间。
Microchip承认,使用仿真器时,使用IDATA和IDATA_ACS伪指令可能会不正常。
由于这个原因,不应该使用IDATA和IDATA_ACS伪指令初始化数据。
如果需要将数据存入存储器中,可以编写初始化数据的代码。
CODE伪指令还可以用来初始化EEPROM存储器。
在EEPROM中存储数据时,一定要像学过的那样,使用IDE伪指令在EEPROM 中存储数据。
2.2 控制伪指令
控制伪指令(control directive)是另一组常用的回避拿起伪指令,他们控制汇编过程,有时还控制连接过程。
最常见的控制伪指令时#include、end、processor、equ和set。
表3列出了PIC微控制器的控制伪指令。
表3 控制伪指令
在C语言中,#include伪指令用于包含常被称为头文件的代码文件。
end伪指令的意义很直观,它必须放在程序文件的末尾。
否则就不能正确汇编程序文件,不要将end伪指令放在include文件的末尾,不然,汇编过程(称为编译)将停止在include 文件末尾。
end伪指令是一个信号,告诉汇编器结束汇编过程,其后的任何内容都不会被编译。
processor伪指令标识项目文件使用的处理器,有可能不在文件中使用。
如果在IDE配置环节中选择了处理器类型,就不需要将其包含在程序文件中。
在大多数情况下,程序文件中都不包含processor伪指令。
equ伪指令将值与标记等同看待。
例如,WREG与0xFE8是等同的,因此可以在程序中使用WREG,而不需要使用数字形式的地址。
Include与equ伪指令使汇编语言的编写更容易、更加易读。
set伪指令用于设置标记等同于某个值,以后还可以使用set伪指令改变这个标记等同的值。
在编程中,set伪指令不如equ伪指令使用广泛,但其工作方式和equ伪指令相似。
2.3 列表伪指令
列表伪指令(list directive)用来控制列表过程。
在这些伪指令中,最常用的是list伪指令,list伪指令控制所选微控制器的一般程序列表。
表4列出了可用的列表伪指令。
表4 列表伪指令
2.4 数据伪指令
数据伪指令(data directive)用于描述数据,出现在程序中的很多地方。
可能是汇编器最常用的为指令类型了。
数据伪指令一般用于定义数据的类型。
表5给出了完整的数据伪指令列表。
对于PIC18系列微控制器,最常用的数据伪指令是db、de、dw和res。
3 总结
伪指令的应用十分广泛,而且用起来夜并不复杂,同时伪指令的应用简化了编程的任务,增强了程序的阅读性,减少了检查程序的难度。
总而言之,伪指令的用处是可圈可点的。