AVRmega8汇编指令汇总.
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
指令集概述
指令操作数说明操作标志 # 时钟数
算数和逻辑指令
ADD Rd, Rr 无进位加法Rd ← Rd + Rr Z,C,N,V,H 1
ADC Rd, Rr 带进位加法Rd ← Rd + Rr + C Z,C,N,V,H 1
ADIW Rdl,K 立即数与字相加Rdh:Rdl ← Rdh:Rdl + K Z,C,N,V,S 2 SUB Rd, Rr 无进位减法Rd ← Rd - Rr Z,C,N,V,H 1
SUBI Rd, K 减立即数Rd ← Rd - K Z,C,N,V,H 1
SBC Rd, Rr 带进位减法Rd ← Rd - Rr - C Z,C,N,V,H 1
SBCI Rd, K 带进位减立即数Rd ← Rd - K - C Z,C,N,V,H 1
SBIW Rdl,K 从字中减立即数Rdh:Rdl ← Rdh:Rdl - K Z,C,N,V,S 2 AND Rd, Rr 逻辑与Rd ← Rd • Rr Z,N,V 1
ANDI Rd, K 与立即数的逻辑与操作Rd ← Rd • K Z,N,V 1
OR Rd, Rr 逻辑或Rd ← Rd v Rr Z,N,V 1
ORI Rd, K 与立即数的逻辑或操作Rd ← Rd v K Z,N,V 1
EOR Rd, Rr 异或Rd ← Rd ⊕ Rr Z,N,V 1
COM Rd 1 的补码Rd ← 0xFF − Rd Z,C,N,V 1
NEG Rd 2 的补码Rd ← 0x00 − Rd Z,C,N,V,H 1
SBR Rd,K 设置寄存器的位Rd ← Rd v K Z,N,V 1
CBR Rd,K 寄存器位清零Rd ← Rd • (0xFF - K Z,N,V 1
INC Rd 加一操作Rd ← Rd + 1 Z,N,V 1
DEC Rd 减一操作Rd ← Rd − 1 Z,N,V 1
TST Rd 测试是否为零或负Rd ← Rd • Rd Z,N,V 1
CLR Rd 寄存器清零Rd ← Rd ⊕ Rd Z,N,V 1
SER Rd 寄存器置位Rd ← 0xFF None 1
MUL Rd, Rr 无符号数乘法R1:R0 ← Rd x Rr Z,C 2
MULS Rd, Rr 有符号数乘法R1:R0 ← Rd x Rr Z,C 2
MULSU Rd, Rr 有符号数与无符号数乘法 R1:R0 ← Rd x Rr Z,C 2
FMUL Rd, Rr 无符号小数乘法R1:R0 ← (Rd x Rr << 1 Z,C 2
FMULS Rd, Rr 有符号小数乘法R1:R0 ← (Rd x Rr << 1 Z,C 2
FMULSU Rd, Rr 有符号小数与无符号小数乘法R1:R0 ← (Rd x Rr << 1 Z,C 2跳转指令
RJMP k 相对跳转PC ← PC + k + 1 无 2
IJMP 间接跳转到(Z PC ← Z 无 2
RCALL k 相对子程序调用PC ← PC + k + 1 无 3
ICALL 间接调用(Z PC ← Z 无 3
RET 子程序返回PC ← STACK 无 4
RETI 中断返回PC ← STACK I 4
CPSE Rd,Rr 比较,相等则跳过下一条指令if (Rd = Rr PC ← PC + 2 or 3 无 1 / 2 / 3
CP Rd,Rr 比较Rd − Rr Z, N,V,C,H 1
CPC Rd,Rr 带进位比较Rd − Rr − C Z, N,V,C,H 1
CPI Rd,K 与立即数比较Rd − K Z, N,V,C,H 1
SBRC Rr, b 寄存器位为"0” 则跳过下一条指令if (Rr(b=0 PC ← PC + 2 or 3 无 1 / 2 / 3 SBRS Rr, b 寄存器位为"1” 则跳过下一条指令if (Rr(b=1 PC ← PC + 2 or 3 无1 / 2 / 3 SBIC P, b I/O 寄存器位为"0” 则跳过下一条指令if (P(b=0 PC ← PC + 2 or 3 无 1 / 2 / 3 SBIS P, b I/O 寄存器位为"1” 则跳过下一条指令 if (P(b=1 PC ← PC + 2 or 3 无 1 / 2 / 3
BRBS s, k 状态寄存器位为"1” 则跳过下一条指令if (SREG(s = 1 then PC←
PC+k + 1 无 1 / 2 BRBC s, k 状态寄存器位为"0” 则跳过下一条指令 if (SREG(s = 0 then PC← PC+k + 1 无 1 / 2 BREQ k 相等则跳转if (Z = 1 then PC ← PC + k + 1 无 1 / 2
BRNE k 不相等则跳转 if (Z = 0 then P C ← PC + k + 1 无 1 / 2
BRCS k 进位位为"1” 则跳转if (C = 1 then PC ← PC + k + 1 无 1 / 2
BRCC k 进位位为"0” 则跳转if (C = 0 then PC ← PC + k + 1 无 1 / 2
BRSH k 大于或等于则跳转if (C = 0 then PC ← PC + k + 1 无 1 / 2
BRLO k 小于则跳转if (C = 1 then PC ← PC + k + 1 无 1 / 2
BRMI k 负则跳转if (N = 1 then PC ← PC + k + 1 无 1 / 2
BRPL k 正则跳转if (N = 0 then PC ← PC + k + 1 无 1 / 2