avr c语言 进位标志位,AVR单片机C语言调用汇编指令集的宏

/*************************************

*** AVR单片机C语言调用汇编指令集的宏 ***

*************************************/

#ifndef _ASM_H_

#define _ASM_H_

/********************

*** 算术和逻辑指令 ***

********************/

// ### ADD ### 两个寄存器相加 (dest = dest + src)

#define ASM_ADD(dest, src) asm volatile ("add %0, %1" : "=r" (dest) : "r" (src))

// ### ADC ### 两个寄存器带进位位相加 (dest = dest + src + carry)

#define ASM_ADC(dest, src) asm volatile ("adc %0, %1" : "=r" (dest) : "r" (src))

// ### ADC_zero ### Add Carry To Register dest (dest = dest + carry), Special Form Of ADC

#define ASM_ADCzero(dest) asm volatile ("adc %0, __zero_reg__" : "=r" (dest) :)

// ### ADIW ### 立即数与字相加 (word = word - const)

#define ASM_ADIW(word, const) asm volatile ("adiw %0, %1" : "=w" (word) : "I" (const))

// ### SUB ### 两个寄存器相减 (dest = dest - src)

#define ASM_SUB(dest, src) asm volatile ("sub %0, %1" : "=r" (dest) : "r" (src))

// ### SUBI ### 立即数与寄存器相减 (reg = reg - const)

#define ASM_SUBI(reg, const) asm volatile ("subi %0, %1" : "=d" (reg) : "M" (const))

// ### SBC ### 两个寄存器带进位位相减 (dest = dest - src - carry)

#define ASM_SBC(dest, src) asm volatile ("sbc %0, %1" : "=r" (dest) : "r" (src))

// ### SBC_zero ### Subtract Carry From Register dest (dest = dest - carry), Special Form Of SBC

#define ASM_SBC_zero(dest) asm volatile ("sbc %0, __zero_reg__ " : "=r" (dest) :)

// ### SBIW ### 字与立即数相减 (reg = reg - const)

#define ASM_SBIW(word, const) asm volatile ("sbiw %0, %1" : "=w" (word) : "I" (const))

// ### AND ### 两个寄存器逻辑与 (dest = dest & src)

#define ASM_AND(dest, src) asm volatile ("and %0, %1" : "=r" (dest) : "r" (src))

// ### ANDI ### 寄存器与常数逻辑与 (reg = reg & const)

#define ASM_ANDI(reg, const) asm volatile ("andi %0, %1" : "=d" (reg) : "M" (const))

// ### OR ### 两个寄存器逻辑或 (dest = dest | src)

#define ASM_OR(dest, src) asm volatile ("or %0, %1" : "=r" (dest) : "r" (src))

// ### ORI ### 寄存器与常数逻辑或 (reg = reg | const)

#define ASM_ORI(reg, const) asm volatile ("ori %0, %1" : "=d" (reg) : "M" (const))

// ### EOR ### 两个寄存器异或 (dest = dest ^ src)

#define ASM_EOR(dest, src) asm volatile ("eor %0, %1" : "=r" (dest) : "r" (src))

// ### COM ### 1的补码 (reg = 0xFF - reg)

#define ASM_COM(reg) asm volatile ("com %0" : "=r" (reg) : "0" (reg))

// ### NEG ### 2的补码 (reg = 0x00 - reg)

#define ASM_NEG(reg) asm volatile ("neg %0" : "=r" (reg) : "0" (reg))

// ### SBR ### 寄存器的某些位置位 (reg = reg | mask)

#define ASM_SBR(reg, mask) asm volatile ("sbr %0, %1" : "=d" (reg) : "M" (mask))

// ### CBR ### 寄存器的某些

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值