历史上的今天
返回首页

历史上的今天

今天是:2024年11月15日(星期五)

正在发生

2019年11月15日 | avr宏汇编和表达式

2019-11-15 来源:51hei

汇编器提供一些伪指令伪指令并不直接转换成操作数而是用于调整存储器中程序的位置

定义宏初始化存储器等全部伪指令在表4.2 中给出


1 BYTE 保存字节到变量

BYTE 伪指令保存存储的内容到SRAM 中为了能提供所要保存的位置BYTE 伪指令前应有

标号该伪指令带一个表征被保存字节数的参数该伪指令仅用在数据段内见伪指令CSEG DSEG

和ESEG 注意必须带一个参数字节数的位置不需要初始化

语法LABEL BYTE 表达式


2 CSEG 一代码段

CSEG 伪指令定义代码段的开始位置一个汇编文件包含几个代码段这些代码段在汇 编时

被连接成一个代码段在代码段中不能使用BYTE 伪指令典型的缺省段为代码段代码段有一个

字定位计数器ORG 伪指令用于放置代码段和放置程序存储器指定位置的常数

CSEG 伪指令不带参数

语法CSEG


表4.2 伪指令表

序号 伪指令 说 明 序号 伪指令 说 明

1 BYTE 保存字节到变量 10 ESEG E2PROM 段

2 CSEG 代码段 11 EXIT 退出文件

3 DB 定义字节常数 12 INCLUDE 从指定文件开始读

4 DEF 设置寄存器的符号名 13 LIST 打开列表文件

5 DEVICE 定义被汇编的器件 14 LISTMAC 打开宏表达式

6 DSEG 数据段 15 MACRO 宏开始

7 DW 定义字常数 16 NOLIST 关闭列表文件

8 ENDMACRO 宏结束 17 ORG 设置程序起始位置

9 EQU 符号相等于表达式 18 SET 赋值给一个标号

3 DB 在程序存储器或E2PROM 存储器中定义字节常数


DB 伪指令保存数据到程序存储器或E2PROM 存储器中为了提供被保存的位置在DB 伪指令

前必须有标号DB 伪指令可带一个表达式表至少有一个表达式DB 伪指令必须放在代码段或

E2PROM 段表达式表是一系列表达式用逗号分隔每个表达式必须是一128 255 之间的有效值

如果表达式有效值是负数则用8 位2 的补码放在程序存储器或E2PROM 存储器中如果DB 伪指令用在代码段并且表达式表多于一个表达式则以两个字节组合成一个字放在程序存储器中如果表达式表是奇数那么最后一个表达式将独自以字格式放在程序存储器中而不管下一行汇编代码是否是单个DB 伪指令

语法LABEL DB 表达式


4 DEF 设置寄存器的符号名

DEF 伪指令允许寄存器用符号代替一个定义的符号用在程序中并指定一个寄存器,一个寄

存器可以赋几个符号符号在后面程序中能再定义

语法DEF 符号一寄存器


5 DEVICE 定义被汇编的器件

DEVICE 伪指令允许用户告知汇编器被执行的代码使用那种器件如果使用该伪指令若在代

码中有指定的器件不提供的指令则提示一个警告如果代码段或E2PROM 段的尺寸大于被指定器件的尺寸也提示警告如果不使用DEVICE 伪指令则假定器件提供所有的指令也不限制存储

器尺寸

语法 .DEVICE AT90S1200 AT90S2313 AT90S4414 AT9OS8515


6 DSEG 一数据段

DSEG 伪指令定义数据段的开始一个汇编文件能包含几个数据段这些数据段在汇编时

被连接成一个数据段一个数据段正常仅由BYTE 伪指令和标号组成数据段有自己的定

位字节计数器ORG 伪指令被用于在SRAM 指定位置放置变量DSEG 伪指令不带参数

语法 .DSEG


7 DW——在程序存储器和E2PROM 存储器中定义字常数

DW 伪指令保存代码到程序存储器或E2PROM 存储器为了提供被保存的位置在DW 伪指

令前必须有标号DW 伪指令可带一个表达式表至少有一个表达式DW 伪指令必须放在

代码段或E2PROM 段表达式表是一系列表达式用逗号分隔每个表达式必须是一32 768

65 535 之间的有效值如果表达式有效值是负数则用 16 位2 的补码放在程序存储器中 

语法LABEL .DW 表达式表


8·ENDMACRO 一宏结束

ENDMACRO 伪指令定义宏定义的结束该伪指令并不带参数参见MACRO 宏定义伪指令

语法 .ENDMACRO


9 EQU——设置一个符号相等于一个表达式

EQU 伪指令赋一个值到标号该标号用于后面的表达式用EQU 伪指令赋值的标号是一个

常数不能改变或重定义

语法 .EQU 标号= 表达式


10 ESEG - E2PROM 段

ESEG 伪指令定义E2PROM 段的开始位置一个汇编文件包含几个E2PROM 段这些E2PROM

段在汇编时被连接成一个E2PROM 段在E2PROM 段中不能使用BYTE 伪指令E2PROM 段有一

个字节定位计数器ORG 伪指令用于放置E2PROM 存储器指定位置的常数ESEG 伪指令不带参数

语法 .ESEG


11 EXIT——退出文件

EXIT 伪指令告诉汇编器停止汇编该文件正常情况下汇编器汇编到文件的结束如果

EXIT 出现在包括文件中则汇编器从文件中INCLUDE 伪指令行继续汇编

语法 .EXIT


12·INCLUDE——包括另外的文件

INCLUDE 伪指令告诉汇编器从指定的文件开始读然后汇编器汇编指定的文件直到文件

结束或遇到EXIT 伪指令一个包括文件也可能自己用INCLUDE 伪指令来表示

语法 .INCLUDE“文件名”


13 LIST——打开列表文件生成器

LIST 伪指令告诉汇编器打开列表文件生成器汇编器生成一个汇编源代码地址和操作

代码的文件列表列表文件生成器缺省值是打开该伪指令总是与NOLIST 伪指令一起出现

用于生成列表或汇编源文件有选择的列表

语法 .LIST


14 LISTMAC——打开宏表达式

LISTMAC 伪指令告诉汇编器当调用宏时用列表生成器在列表文件中显示宏表达式

缺省值仅是在列表文件中显示宏调用参数

语法 .LISTMAC


15 MACRCO 一宏开始

MACRO 伪指令告诉汇编器这是宏开始MACRO 伪指令带宏名和参数当后面的程序中写

了宏名被表达的宏程序在指定位置被调用一个宏可带10 个参数这些参数在宏定义中

用0 9 代表当调用一个宏时参数用逗号分隔宏定义用ENDMACRO 伪指令结束

缺省值为汇编器的列表生成器仅列表宏调用为了在列表文件中包括宏表达式必须使

用 LISTMAC 伪指令在列表文件的操作代码域内宏用 a+ 作记号

语法 .MACRO 宏名


16 NOLIST--关闭列表文件生成器

NOLIST 伪指令告诉汇编器关闭列表文件生成器正常情况下汇编器生成一个汇编源

代码地址和操作代码文件列表缺省时为打开列表文件但是可用该伪指令禁止列表为

了使被选择的汇编源文件部分产生列表文件该伪指令可以与LIST 伪指令一起使用

语法 .NOLIST


17 ORG 一设置程序起始位置

ORG 伪指令设置定位计数器一个绝对值设置的值为一个参数如果ORG 伪指令放在数

据段则设置SRAM 定位计数器如果该伪指令放在代码段则设置程序存储器计数器如

果该伪指令放在E2PROM 段则设置E2PROM 定位计数器如果该伪指令前带标号在相同

的源代码行则标号由参数值给出代码和E2PROM 定位计数器的缺省值是零而当汇编启

动时 SRAM 定位计数器的缺省值是32 因为寄存器占有地址为 0 31 注意E2PROM 和

SRAM 定位计数器按字节计数而程序存储器定位计数器按字计数

语法 .ORG 表达式


18 SET 设置一个与表达式相等的符号

SET 伪指令赋值给一个标号这个标号能用在后面的表达式中用SET 伪指令赋值的

标号在后面的程序中能改变

语法 .SET 标号 = 表达式


4 ·1 3 表达式

汇编器包括一些表达式表达式由操作数运算符和函数组成所有的表达式内部为32

一操作数

1 用户定义的标号该标号给出了放置标号位置的定位计数器的值

2 用户用SET 伪指令定义的变量

3 用户用EQU 伪指令定义的常数

4 整数常数包括下列几种形式

·十进制缺省值 10 255

·十六进制数二进制表示法0x0a,$0a,0xff.$ff

二进制数0b0O00101O,0bllllllll


5 PC 程序存储器定位计数器的当前值

二 函 数

1 LOW 表达式返回一个表达式的低字节

2 HIGH 表达式返回一个表达式的第二个字节

3 BYTE2 表达式与HIGH 函数相同

4 BYTE3 表达式返回一个表达式的第三个字节

5 BYTE4 表达式返回一个表达式的第四个字节

6 LWRD 表达式返回一个表达式的 0 15 位

(7) HWRD 表达式返回一个表达式的 16 31 位

8 PAGE 表达式返回一个表达式的 16 21 位

9 EXP2 表达式返回2 表达式

10 LOG2 表达式返回LOG2 表达式的整数部分


推荐阅读

史海拾趣

Foxconn_Optical_Interconnect_Technologies__Inc.公司的发展小趣事

Foxconn Optical Interconnect Technologies Inc. 的五个发展故事

故事一:创立与初步发展

Foxconn Optical Interconnect Technologies Inc.(简称FIT),作为鸿海精密工业股份有限公司(Foxconn,又称富士康)旗下的子公司,其发展历程可以追溯到富士康的崛起。富士康由郭台铭于1974年在台湾创立,起初主要生产塑料零件。随着电子行业的蓬勃发展,富士康迅速转型,开始涉足电子制造服务(EMS)。在这一背景下,FIT应运而生,专注于光机电整合连接器、天线、声学元件等产品的研发与生产,逐渐在电子行业中崭露头角。

故事二:技术突破与全球化布局

FIT凭借其在光电互连技术领域的不断创新,逐步确立了在全球市场的领先地位。公司通过持续加大研发投入,成功开发出一系列高性能、高可靠性的产品,广泛应用于电脑、通讯、消费电子等多个领域。同时,FIT积极实施全球化战略,在亚洲、北美、南美和欧洲等地设立生产基地和研发中心,形成了覆盖全球的生产和服务网络。这一布局不仅提升了公司的市场竞争力,也为其未来的发展奠定了坚实基础。

故事三:与富圣光电的合作

FIT与富圣光电科技(昆山)有限公司的合作是其发展历程中的一个重要里程碑。富圣光电作为富士康旗下专注于光电科技领域的企业,与FIT在技术研发、产品生产等方面展开了深度合作。通过资源共享和优势互补,双方共同推动了光电技术的发展和应用。目前,FIT持有富圣光电50%的股份,这一合作不仅增强了双方在光电市场的竞争力,也为双方带来了显著的经济效益。

故事四:收购夏普与技术整合

2016年,富士康(鸿海精密工业股份有限公司)成功收购日本夏普公司,这一举动对FIT的发展产生了深远影响。夏普在显示技术、半导体等领域拥有强大的技术实力和市场地位,而FIT则擅长光电互连技术的研发和生产。通过此次收购,FIT得以将夏普的先进技术与自身优势相结合,进一步提升了在光电领域的综合竞争力。同时,这也为FIT拓展国际市场、提升品牌影响力提供了有力支持。

故事五:新能源汽车领域的探索

近年来,随着新能源汽车市场的快速崛起,FIT也开始将目光投向这一新兴领域。公司利用自身在光电技术方面的优势,积极研发新能源汽车充电系统、光电传感器等关键零部件。通过不断的技术创新和市场拓展,FIT在新能源汽车领域取得了初步成果。这一领域的探索不仅为公司带来了新的增长点,也为其在光电技术领域的持续发展注入了新的动力。

Grande Electronics Ltd公司的发展小趣事
确保遥控器中的电池电量充足,避免电池电量不足导致的发射问题。
Gennum ( Semtech )公司的发展小趣事
作为输出设备,用于显示电路的工作状态。
Ericsson Power Modules公司的发展小趣事

随着产品质量的不断提升和技术的不断创新,Ericsson Power Modules开始积极拓展市场。公司不仅在欧洲市场取得了显著成绩,还逐步将业务拓展至亚洲、北美等地区。为了更好地服务全球客户,Ericsson Power Modules在瑞典斯德哥尔摩设立了总部,并在中国、美国等地建立了生产基地和研发中心。这种全球化布局使得Ericsson Power Modules能够更快速地响应市场需求,提供更高效、更便捷的服务。

Aydin Corp公司的发展小趣事

在国内市场取得一定成绩后,Aydin Corp开始积极拓展国际市场。通过与全球知名企业的合作,公司成功将产品打入多个国家和地区的市场。同时,Aydin Corp还积极参加国际电子展会和交流活动,与业界同行建立了广泛的合作关系。这些举措不仅提升了公司的国际知名度,也为公司的持续发展注入了新的动力。

Ecera Comtek Corp公司的发展小趣事

面对日新月异的电子科技行业,Ecera Comtek Corp公司深知只有持续创新才能保持领先地位。因此,公司不断加大对新技术、新产品的研发投入,积极探索新的商业模式和市场机会。同时,Ecera Comtek Corp公司还积极引进外部创新资源,与高校、科研机构等建立紧密的合作关系,共同推动电子科技行业的发展。在Ecera Comtek Corp公司的引领下,电子科技行业正朝着更加智能、高效、环保的方向发展。

请注意,以上故事均基于虚构情节,旨在模拟Ecera Comtek Corp公司可能的发展经历。如有雷同,纯属巧合。

问答坊 | AI 解惑

PROTEUS的应用

这是一本关于PROTEUS应用的教材…

查看全部问答>

请教这是个什么器件?

输入20V输出19.8,正向压降0.2-0.4V,属肖特基二极管,可第一脚做什么用呢?请教高手一下。…

查看全部问答>

关于AVR-M8使用串口中断的一些疑问。

最近在做M8的串口通讯实验,准备2个MCU之间串口通讯,使用发送和接受中断的思想来做,请问在一个多任务系统下,如何确保通讯以及别的程序不被出错。。。。谢谢!…

查看全部问答>

射频知识专题讲座

PPT格式的,射频的定义和概念,图文并茂,感觉比较详细。 …

查看全部问答>

请推荐一款最实用的2410开发板!

硬件资源: (1) OURS-2410-F型嵌入式开发板一块:包括2410RP核心板,2410F底板和     4.3寸液晶屏; (2) DC 5V 3A直流电源一个(支持AC 100~240V输入) (3) 直通串口线延长线一条(一头针一头孔); (4) 直通并口 ...…

查看全部问答>

我在关闭udp 的socket时,有时会导致多个任务挂起是怎么回事?

同一个socket描述符,在两个任务里同时使用,一个负责接收,一个复杂发送. 当发送次数超时而关闭socket时,有时候会导致多个任务挂起,都处于ready状态.而关闭socket的这个任务处于ready+I状态.这种现象只是偶尔会出现,不知道为什么?各位给个答案,谢了…

查看全部问答>

调试求救!

调试遇到这个,是个什么错误啊? first-chance exceptiont in xxxx.exe 0xc0000005:access violation. 一调试运行就显示这个。…

查看全部问答>

U盘的问题!

我的STM32的开发板连到PC之后,发现新硬件,但是出现一个病毒,可能是我在单位电脑上传播到开发板的病毒,想把他格式化,但是开发板上的好像是只读的,无法格式化,大家告诉我应该怎么解决呢?…

查看全部问答>

请教高手指教:2812的C语言中的.reset段的含义以及其在存储器中的定位

疑问一:仿真调试下载程序或把程序已烧写至FLASH后脱机上电运行程序时,程序是不是必须要执行“从0X3F FFC0处复位→执行0X3F FC00地址处的初始化引导函数(Initboot) →根据GPIO选择引导模式→确定用户程序入口地址→从入口处开始执行用户程序”这一 ...…

查看全部问答>

MPLAB编译没错,连接出现c盘下的头文件错误是怎么回事啊

有哪位朋友用过MPLAB编译器,我写的PIC的程序,编译的时候是正确,但连接的时候出现的错误全是指向C盘下面的pic头文件啊     生成不了hex文件     希望哪位朋友能解释一下   非常感谢了 就像这 ...…

查看全部问答>