AVRmega8汇编指令汇总.

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档