找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9025|回复: 0
收起左侧

AVR单片机汇编指令的小合集

[复制链接]
ID:304171 发表于 2018-4-28 21:34 | 显示全部楼层 |阅读模式
目前在学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

AVR汇编指令.rar

13.72 KB, 下载次数: 117, 下载积分: 黑币 -5

评分

参与人数 2黑币 +60 收起 理由
zkele + 10 很给力!现在觉得用C的确方便移植!
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表