AVR汇编求教

来源:百度知道 编辑:UC知道 时间:2024/06/08 05:05:35
这是一段USART接受9位数据的中断程序。前两句意思是当出现FE、DOR、PE三种错误之一时跳到错误处理程序。
问题:
1.汇编中的andi不是把寄存器的值与一个立即数按位与吗?如何理解第一句?
2.第二、三句的-1是什么意思?

查汇编代码,前面肯定有.EQU FE=4 .EQU DOR=3 .EQU PE=2这三句,相当于C语言中的#define FE 4
在编译时,编译器会自动把第一句变成 andi r18,(1 << 4)|(1 << 3)|(1 << 2)
也就是andi r18,0x10|0x08|0x04
也就是andi r18,0x1C

HIGH(-1)就是-1的高字节
LOW(-1)是-1的低字节
-1在16进制表示为0xFFFF
这两句等价于ldi r17,0xFF ldi r16,0xFF