目前在学AVR,主要还是以C为主,但是也希望能懂一些汇编的语句,就找了一些常用语句,一起记忆。
一、算术和逻辑指令
1、加法指令
不带进位位加法:ADD Rd,Rr
带进位位加法:ADC Rd,Rr
字加立即数:ADIW Rdl,K
增1指令:INCRd
2、减法指令
不带进位位减法:SUB Rd,Rr
减立即数(字节):SUBI Rd,K
带进位位减法SBC :Rd,Rr
带进位位减立即数(字节):SBCI Rd,K
减立即数(字):SBIW Rdl,K
减1指令:DECRd
3、取反码指令
COM Rd
4、取补码指令
NEG Rd
5、比较指令
寄存器比较:CP Rd,Rr
带进位比较:CPC Rd,Rr
与立即数(字节)比较:CPI Rd,K
6、逻辑“与”指令
寄存器逻辑“与”:AND Rd,Rr
“与”立即数(字节):ANDI Rd,K
寄存器位清零:CBR Rd,K
测试寄存器为零或负:TST Rd
7、逻辑“或”指令
寄存器逻辑“或”:OR Rd,Rr
“或”立即数(字节):ORI Rd,K
置寄存器位:SBR Rd,K
置寄存器为$FF:SER Rd
8、逻辑“异或”指令
寄存器“异或”:EOR Rd,Rr
寄存器清零:CLR Rd
9、乘法指令
无符号数乘法:MUL Rd,Rr
有符号数乘法:MULS Rd,Rr
有符号数与无符号数乘法:MULSU Rd,Rr
无符号定点小数乘法:FMUL Rd,Rr
有符号定点小数乘法:FMULS Rd,Rr
有符号定点小数和无符号定点小数乘法:FMULSURd,Rr
二、跳转指令
1、无条件跳转指令
相对跳转:RJMP k
间接跳转:IJMP
直接跳转:JMP k
2、条件跳转指令
①测试条件符合跳转指令
状态寄存器中位为“1”跳转:BRBS s,k
状态寄存器中位为“0”跳转:BRBC s,k
相等跳转:BREQ k
不相等跳转:BRNE k
进位标志位C为“1”跳转:BRCS k
进位标志位C为“0”跳转:BRCC k
大于或等于跳转(对无符号数):BRSH k
小于跳转:BRLO k
结果为负跳转:BRMI k
结果为正跳转:BRPL k
大于或等于跳转(带符号数):BRGE k
小于跳转(带符号数):BRLT k
半进位标志H为“1”跳转:BRHS k
半进位标志H为“0”跳转:BRHC k
T标志为“1”跳转:BRTS k
T标志为“0”跳转:BRTC k
溢出标志V为“1”跳转:BRVS k
溢出标志V为“0”跳转:BRVC k
中断标志I为“1”跳转:BRIE k
中断标志I为“0”跳转:BRID k
②测试条件符合跳行跳转指令
相等跳行:CPSE Rd,Rr
寄存器位为“1”跳行:SBRS Rr,b
寄存器位为“0”跳行:SBRC Rr,b
I/O寄存器位为“1”跳行:SBIS P,b
I/O寄存器位为“0”跳行:SBIC P,b
3、子程序调用和返回指令
相对调用:RCALL k
间接调用:ICALL
直接调用:CALL k
从子程序返回:RET
从中断程序返回:RETI
三、数据传送指令
1、直接寻址数据传送指令
工作寄存器间传送数据:MOV Rd,Rr
SRAM数据直接送寄存器:LDS Rd,k
寄存器数据直接送SRAM:STS k,Rr
立即数送寄存器:LDI Rd,K
2、间接寻址数据传送指令
①使用X指针寄存器间接寻址传送数据
使用地址指针寄存器X间接寻址将SRAM内容装入到指定寄存器:
LD Rd,X
LD Rd,X+
LD Rd,-X
使用地址指针寄存器X间接寻址将寄存器内容存储到SRAM:
ST X,Rr
ST X+,Rr
ST –X,Rr
②使用Y指针寄存器间接寻址传送数据
使用地址指针寄存器Y间接寻址将SRAM内容装入到指定寄存器:
LD Rd,Y
LD Rd,Y+
LD Rd,-Y
LDD Rd,Y+q
使用地址指针寄存器Y间接寻址将寄存器内容存储到SRAM:
ST Y,Rr
ST Y+,Rr
ST –Y,Rr
STD Y+q,Rr
③使用Z指针寄存器间接寻址传送数据
使用地址指针寄存器Y间接寻址将SRAM内容装入到指定寄存器:
LD Rd,Z
LD Rd,Z+
LD Rd,-Z
LDD Rd,Z+q
使用地址指针寄存器Y间接寻址将寄存器内容存储到SRAM:
ST Z,Rr
ST Z+,Rr
ST –Z,Rr
STD Z+q,Rr
3、从程序存储器中取数装入寄存器指令
从程序存储器中取数装入寄存器R0:LPM
从程序存储器中取数装入寄存器Rd:LPM Rd,Z
带后增量的从程序存储器中取数装入寄存器Rd:LPM Rd,Z+
4、写程序存储器指令
写程序存储器:SPM
5、I/O口数据传送指令
I/O口数据装入寄存器:IN Rd,P
寄存器数据送I/O口:OUT P,Rr
6、堆栈操作指令
进栈指令:PUSH Rr
出栈指令:POP Rd
四、位操作和位测试指令
1、带进位逻辑操作指令
寄存器逻辑左移:LSL Rd
寄存器逻辑右移:LSR Rd
带进位位的寄存器逻辑循环左移:ROL Rd
带进位位的寄存器逻辑循环右移:ROR Rd
寄存器算术右移:ASR Rd
寄存器半字节交换:SWAP Rd
2、位变量传送指令
寄存器中的位存储到SREG中的T标志:BST Rr,b
SREG中的T标志位值装入寄存器Rd中的某一位:BLD Rd,b
3、位变量修改指令
状态寄存器SREG的指定位置位:BSET s
状态寄存器SREG的指定位清零:BCLR s
I/O寄存器的指定位置位:SBI P,b
I/O寄存器的指定位清零:CBI P,b
置进位位:SEC
清进位位:CLC
置负标志位:SEN
清负标志位:CLN
置零标志位:SEZ
清零标志位:CLZ
使能全局中断位:SEI
禁止全局中断位:CLI
置S标志位:SES
清S标志位:CLS
置溢出标志位:SEV
清溢出标志位:CLV
置T标志位:SET
清T标志位:CLT
置半进位标志:SEH
清半进位标志:CLH
五、MCU控制指令
空操作指令:NOP
进入休眠方式指令:SLEEP
清0看门狗计数器:WDR
上一篇:单片机控制电力柜用操控状态仪表程序
下一篇:7脚12864spi单片机源程序,直接函数调用
推荐阅读
史海拾趣
BETA Transformer Technology Corp公司深知人才是企业发展的核心动力。因此,公司高度重视人才培养和团队建设。BETA公司建立了一套完善的人才培养机制,通过内部培训、外部学习等方式不断提升员工的技能水平和综合素质。同时,公司还注重团队建设和文化建设,营造了一个积极向上、团结协作的工作氛围。这些举措使得BETA公司的员工队伍更加稳定、高效,为公司的长期发展提供了有力保障。
以上五个故事分别从不同角度描述了BETA Transformer Technology Corp公司的发展历程和取得的成就。虽然这些故事是虚构的,但它们反映了电子行业中企业可能面临的挑战和机遇,以及应对这些挑战和机遇的策略和措施。希望这些故事能够满足您的需求。
在激烈的市场竞争中,成本控制是企业生存和发展的重要因素之一。Aborn Electronics深知这一点,因此在供应链管理上下了大力气。公司与多家优质供应商建立了长期稳定的合作关系,确保了原材料的稳定供应和质量可靠。同时,通过对生产流程的不断优化和改进,降低了生产成本,提高了生产效率。这些措施使得Aborn Electronics的产品在市场上更具竞争力。
Aborn Electronics Inc公司创立之初,面临着资金短缺、市场竞争激烈和技术壁垒等多重挑战。创始人凭借对电子技术的深厚理解和对市场需求的敏锐洞察,带领团队攻克了一个又一个技术难关。公司最初的产品线集中在电子元器件的生产和供应上,通过优化生产流程和降低成本,逐渐在市场上站稳了脚跟。同时,Aborn Electronics积极与各大电子厂商建立合作关系,为公司的长远发展奠定了坚实的基础。
DATATRONICS高度重视人才战略的实施。公司积极引进和培养了一批高素质的技术人才和管理人才,为他们提供了良好的工作环境和发展空间。同时,DATATRONICS还建立了完善的激励机制和培训机制,鼓励员工不断创新和进取,共同推动公司的持续发展。
GSI Technology公司成立于1995年3月,总部位于加利福尼亚州的圣何塞(硅谷),自创立之初便专注于提供领先的电信和网络解决方案。公司采用先进的CMOS工艺技术,如0.25、0.15和0.13微米等,致力于开发低功耗、全功能、高性能的SRAM产品。通过不断的技术创新和产品优化,GSI Technology逐渐在高性能存储器市场占据了一席之地,为后续的快速发展奠定了坚实的基础。
DC Components公司成立于1992年,总部位于台湾台中市。公司自创立之初,就专注于二极管桥式整流器的研发与生产。在创立初期,公司面临着资金、技术和市场的诸多挑战。然而,凭借对技术的执着追求和对市场的敏锐洞察,DC Components公司逐渐在二极管桥式整流器领域树立了专业形象,为未来的发展奠定了坚实基础。
据专业研究机构分析,随着科技不断进步,安防行业领域不断扩大。报警运营、中介、资讯等专业化服务开始起步,产品种类不断丰富,发展到了视频监控、出 入口控制、入侵报警、防爆安检等十几个大类。 目前,安防在各行业的应用,已经 ...… 查看全部问答∨ |
|
怎样通过com1口实现可执行文件的传输啊,我写的程序可以传输文本文件,但不能传输可执行文件,该怎么改进程序 才可以通过串口传输可执行文件? 也就是怎么把可执行文件转换成十六进制 求源码 谢谢… 查看全部问答∨ |
|
1.如果一个信号是由多个信号经过复杂的组合逻辑和时序逻辑产生的,那么应该将组合逻辑比较均匀的分布在各个reg变量前。不应当造成某些reg前面LUT里面没有组合逻辑,而另外一些reg前面的LUT里面组合逻辑过于复杂的情形。均匀分布不仅有利于时序,也 ...… 查看全部问答∨ |
根据 TI Android ICS 4.0.3 DevKitV3.0.1 AM335x EMV-SK Sources 进行修改。 1 修改使支持beaglebone上的用户指示灯: 修改的源码位置: $HOME/rowboat-android/kernel/arch/arm/mach-omap2/board-am335xevm.c 找到:static struct pinmux_con ...… 查看全部问答∨ |
请教下 bus hound 如何向带有USB接口的430发送命令呢? 大家好,本人初来乍到,对一些问题不是很明白,希望好心人可以帮助解答!先谢谢咯! 我用 MSP430F5529 与电脑连接后,下载了USB通信的 LAB4 程序,希望通过bus hound向板子发送命令,但在 Send Command 的USB一栏中发送时总提示the de ...… 查看全部问答∨ |