-------------------------------------------------------------------------------------------------------------------------------------
开发环境:AVR Studio 4.19 + avr-toolchain-installer-3.4.1.1195-win32.win32.x86
芯片型号:ATmega16
芯片主频:8MHz
-------------------------------------------------------------------------------------------------------------------------------------
第一种实现方式
(2016.10.28)
今天临时起意、去看了位域部分的反汇编,看看汇编如何实现位域。
使用到的位域如下定义:
// 事件队列的结构(type[7bit],lock[1bit],data[32bit])
typedef struct
{
uint8_t type :7 ; // 消息类型、如数码管数据有更新:EVENT_SEG_UPDATE
uint8_t lock :1 ; // 加锁标志
uint32_t data; // 消息参数、如数码管的数据:1265214
}T_EVENT_LIST, *pT_EVENT_LIST;
使用这个结构的代码如下:
// --------------------------------------
event_buffer_task01[0].type = EVENT_SEG_UPDATE; // EVENT_SEG_UPDATE = 0x06
event_buffer_task01[0].data = second;
对应的反汇编代码如下:
87: event_buffer_task01[0].type = EVENT_SEG_UPDATE;
+00000098: 918000CC LDS R24,0x00CC Load direct from data space
+0000009A: 7880 ANDI R24,0x80 Logical AND with immediate
+0000009B: 6086 ORI R24,0x06 Logical OR with immediate
+0000009C: 938000CC STS 0x00CC,R24 Store direct to data space
88: event_buffer_task01[0].data = second;
+0000009E: 91800060 LDS R24,0x0060 Load direct from data space // second的地址是0x0060
+000000A0: 91900061 LDS R25,0x0061 Load direct from data space
+000000A2: 91A00062 LDS R26,0x0062 Load direct from data space
+000000A4: 91B00063 LDS R27,0x0063 Load direct from data space
+000000A6: 938000CD STS 0x00CD,R24 Store direct to data space // event_buffer_task0[0].data的地址是0x00CD
+000000A8: 939000CE STS 0x00CE,R25 Store direct to data space
+000000AA: 93A000CF STS 0x00CF,R26 Store direct to data space
+000000AC: 93B000D0 STS 0x00D0,R27 Store direct to data space
可以看出,为了操作处于同一个字节里面的 .type和 .lock,汇编里面使用 与操作和 或操作来实现对 bit7(.lock)和 bit[6:0](.type)的操作。
上一篇:A004-移位范围超过变量宽度-(ques=1)
下一篇:D001-开发工具-AVR Studio 环境配置和使用笔记
推荐阅读最新更新时间:2024-11-10 16:56
设计资源 培训 开发板 精华推荐
- 具有电源良好状态的 LT3976HMSE 5V、2MHz 降压转换器的典型应用电路
- TCR5SB12 200mA CMOS低压降稳压器的典型应用
- LTC4011,一款具有完全 PowerPath 控制的 3A NiMH 充电器
- #第七届立创电赛#基于ina199的USB电流表
- ADP2120 1.2V、1.25A降压稳压器的典型应用,强制连续导通模式
- MIC5232 的典型应用:10mA 超低静态电流电容 LDO
- 使用 Microchip Technology 的 TS8388BCF 的参考设计
- 离线高功率因数Triac可调光LED驱动器GreenPoint®参考设计
- EVAL-ADUM3151Z,用于评估 iCoupler ADuM3152ARSZ 数字隔离器的评估板
- SIP78L05AC 三端低电流正压稳压器典型应用
- 科学家研发基于AI的身份验证工具 可保护车辆免受网络攻击威胁
- Microchip推出广泛的IGBT 7 功率器件组合,专为可持续发展、电动出行和数据中心应用而设计
- 面向未来驾驶体验 博世推出新型微电子技术
- 英飞凌与马瑞利合作 利用AURIX™ TC4x MCU系列推动区域控制单元创新
- 5C超充,该怎么卷?
- 《2025年度中国汽车十大技术趋势》正式揭晓!你最看好哪个?
- Microchip推出新型VelocityDRIVE™软件平台和车规级多千兆位以太网交换芯片,支持软件定义汽车
- 英特尔中国正式发布2023-2024企业社会责任报告
- can转485数据是如何对应的
- MCU今年的重点:NPU和64位