打印
[应用方案]

汇编常用伪指令

[复制链接]
1328|35
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
saservice|  楼主 | 2024-7-17 15:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一、什么是伪指令

汇编语言源程序必须翻译成机器语言才能被计算机运行,而翻译通常是由计算机通过汇编程序来实现,翻译过程称为汇编。在翻译过程中需要汇编语言源程序向汇编程序提供相应的编译信息,而这些信息是通过在汇编语言源程序中加入伪指令实现的。也就是说伪指令是放在汇编语言源程序中用于指示汇编程序如何对源程序进行汇编的指令。



二、常用伪指令

① ORG:

格式:ORG 地址(16进制表示)

作用:用于指明程序或数据从程序存储空间的什么位置开始存放。ORG伪指令后的地址是程序或数据的起始地址。

例:   ORG 1000H(指明后面的程序从程序存储器的1000H单元开始存放)

START:MOV A,#7FH



② DB:

格式:[标号:] DB 项或项表

作用:用于定义字节数据,可以定义一个字节也可以定义多个字节。定义多个字节时,两两之间用逗号隔开,定义时多个字节是在存储器中连续存放的。

例:   ORG 3000H

TAB1: DB 12H,34H

        DB '5','A','abc'



③ DW

格式:[标号:] DW 项或项表

作用:与DB相似,但用于定义字数据。项或项表所定义的一个字在存储器中占两个字节。汇编时,机器自动按高字节在前、低字节在后存放,即高字节存放在低地址单元,低字节存放在高地址单元。

例:  ORG 3000H

TAB2:DW 1234H, 5678H



④ DS

格式:[标号:] DS 数值表达式

作用:用于在存储器中保留一定数量的字节单元。保留存储单元空间是为了以后存放数据使用。保留的字节单元数由表达式的值决定。

例:  ORG 3000H

TAB1:DB 12H, 34H

       DS 4H

       DB '5'



⑤ EQU

格式:EQU 项

作用:将指令中项的值赋予EQU前面的符号。项可以是常数、地址标号或表达式。

例:

TAB1  EQU  1000H

TAB2  EQU  2000H

结果:TAB1的值为1000H,TAB2的值为2000H。



⑥ DATA

格式:符号  DATA  直接字节地址

作用:用于给片内RAM字节单元地址赋予DATA前面的符号,符号以字母开头,同一单元地址可以赋予多个符号。赋值后可用该符号代替DATA后面的片内RAM字节单元地址(有点像C里面的define)

例:

RESULT  DATA  60H (RESULT代表片内RAM的60H单元)

....

MOV  RESULT , A



⑦ XDATA

格式:符号  XDATA  直接字节地址

作用:与DATA基本相同,不同点是对片外RAM的字节单元


⑧ bit

格式:符号  bit  位地址
作用:用于给位地址赋予符号,经赋值后可用该符号代替bit后面的位地址。
例:
PLG  bit  F0
AL   bit  P1.0
⑨ END

格式:放于程序最后位置,指明程序的结束位置。


使用特权

评论回复
沙发
wwppd| | 2024-8-5 10:37 | 只看该作者
它们虽然不生成机器代码,但在汇编过程中起到关键作用,帮助编译器生成正确的目标代码

使用特权

评论回复
板凳
mmbs| | 2024-8-5 20:05 | 只看该作者
在使用DB、DW等伪指令时,要注意数据类型的大小,以确保正确地分配空间。

使用特权

评论回复
地板
maudlu| | 2024-8-6 15:23 | 只看该作者
伪指令的语法应严格遵守,避免语法错误导致编译失败。

使用特权

评论回复
5
nomomy| | 2024-8-6 19:08 | 只看该作者
在使用伪指令之前,务必清楚它们各自的作用和用途。伪指令如ORG(组织)、EQU(等值)、DS(定义段)等都有特定的功能。

使用特权

评论回复
6
alvpeg| | 2024-8-8 09:39 | 只看该作者
符号的命名要具有清晰的含义,避免与保留字或已有的标识符冲突。

使用特权

评论回复
7
backlugin| | 2024-8-8 14:55 | 只看该作者
不同的编译器和汇编器可能有不同的伪指令集,需要查阅文档确认

使用特权

评论回复
8
jackcat| | 2024-8-8 17:10 | 只看该作者
伪指令的顺序很重要,因为它会影响程序的内存布局。

使用特权

评论回复
9
caigang13| | 2024-8-9 08:38 | 只看该作者
现在应该很少有人用汇编编程了吧,大学时学过一段时间。

使用特权

评论回复
10
mattlincoln| | 2024-8-10 11:59 | 只看该作者
不同的单片机架构和硬件配置可能对伪指令的支持有所不同。在使用伪指令时,要考虑目标硬件的特性,以确保兼容性。

使用特权

评论回复
11
jackcat| | 2024-8-10 14:43 | 只看该作者
标签应具有描述性,避免使用保留关键字作为标签名。

使用特权

评论回复
12
febgxu| | 2024-8-10 15:40 | 只看该作者
伪指令的语法通常与汇编语言的语法规则相似,但也有一些特殊之处。确保按照正确的语法格式书写伪指令,以避免汇编错误。

使用特权

评论回复
13
pixhw| | 2024-8-10 20:09 | 只看该作者
使用ORG指令时,应确保地址的连续性和正确性,避免地址冲突。

使用特权

评论回复
14
uptown| | 2024-8-12 14:17 | 只看该作者
定义符号时避免使用关键字或已存在的标识符,以防止混淆。

使用特权

评论回复
15
bartonalfred| | 2024-8-12 14:36 | 只看该作者
单片机汇编语言中的伪指令提供了强大的工具,帮助开发者更好地管理内存资源、优化代码结构以及提高代码可读性。

使用特权

评论回复
16
tifmill| | 2024-8-12 16:12 | 只看该作者
ORG: 定义内存分配的起始地址。
注意: 必须确保地址不与其他已定义的地址冲突。
EQU: 定义一个符号常量。
注意: 符号名应具有描述性,并避免与预定义的寄存器或其他符号重名。
DW: 定义字数据(通常为16位)。
注意: 如果目标架构是8位的,则需要考虑如何处理字数据。
DB: 定义字节数据。

使用特权

评论回复
17
updownq| | 2024-8-13 06:15 | 只看该作者
常用伪指令
ORG(Origin)
功能:指定后续代码或数据的起始地址。
注意事项:
地址必须是合法的内存地址。
使用ORG指令时,应确保地址的连续性和正确性,避免地址冲突。
EQU(Equivalent)
功能:定义符号与数值或表达式的等价关系。
注意事项:
符号名应具有唯一性,避免与其他符号冲突。
表达式应是常量表达式,不能包含变量。
DB(Define Byte)
功能:定义一个字节的数据。
注意事项:
数据可以是数值、字符或表达式。
数据的范围应在-128到255之间。
DW(Define Word)
功能:定义一个字(16位)的数据。
注意事项:
数据可以是数值、字符或表达式。
数据的范围应在-32768到32767之间。
END
功能:表示程序的结束。
注意事项:
END指令必须出现在程序的最后,且只能出现一次。
IF/ELSE/ENDIF
功能:条件编译指令。
注意事项:
条件表达式应是常量表达式,不能包含变量。
IF和ENDIF必须成对出现,中间可以嵌套ELSE。
MACRO/ENDM
功能:定义宏指令。
注意事项:
宏指令的参数应明确,避免参数传递错误。
宏指令内部应避免使用局部变量,防止变量冲突。
EXTERN
功能:声明外部符号。
注意事项:
外部符号应在其他模块中定义,确保符号的唯一性。
使用EXTERN指令时,应确保符号的正确性,避免未定义的符号引用。
COMMON
功能:声明公共变量或数据。
注意事项:
公共变量应在多个模块中共享,确保变量的正确性。
使用COMMON指令时,应确保变量的唯一性,避免变量冲突。

使用特权

评论回复
18
macpherson| | 2024-8-13 10:36 | 只看该作者
伪指令通常在程序的开始部分使用,尤其是在数据段和代码段定义时。

使用特权

评论回复
19
jtracy3| | 2024-8-13 20:13 | 只看该作者
符号名应具有唯一性,避免符号冲突导致程序错误。

使用特权

评论回复
20
nomomy| | 2024-8-13 21:41 | 只看该作者
对于数据的定义,要根据实际需求选择合适的类型

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

40

主题

1204

帖子

2

粉丝