完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
状态寄存器与标志位
SREG: 8 位状态寄存器,其中每一位的定义为: C: 进位标志位 Z: 结果为零标志位 N: 结果为负数标志位 V: 2 的补码溢出标志位 S: N⊕V,用于符号测试的标志位 H: 操作中产生半进位的标志位 T: 用于和 BLD、BST 指令进行位数据交换的位 I: 全局中断触发/禁止标志位 算术和逻辑指令 加法指令 1.不带进位位加法 ADD Rd,Rr 0≤d≤31,0≤r≤31 说明:两个寄存器不带进位 C 标志相加,结果送目的寄存器 Rd。 2.带进位位加法 ADC Rd,Rr 0≤d≤31,0≤r≤31 说明:两个寄存器和 C标志的内容相加,结果送目的寄存器 Rd。 3.字加立即数 ADIW Rdl,K dl 为:24、26、28、30,0≤K≤63 说明:寄存器对(一个字)同立即数(0~63)相加,结果放到寄存器对。 4.增1 指令 INC Rd 0≤d≤31 说明:寄存器 Rd 的内容加 1,结果送目的寄存器 Rd 中。 减法指令 1.不带进位位减法 SUB Rd,Rr 0≤d≤31,0≤r≤31 说明:两个寄存器相减结果送目的寄存器 Rd 中。 2.减立即数(字节) SUBI Rd,K 16≤d≤31,0≤K≤255 说明:一个寄存器和常数相减,结果送目的寄存器 Rd。 3.带进位位减法 SBC Rd,Rr 0≤d≤31,0≤r≤31 说明:两个寄存器带着 C 标志相减,结果放到目的寄存器 Rd 中。 4.带进位位减立即数(字节) SBCI Rd,K 16≤d≤31,0≤K≤255 说明:寄存器和立即数带着 C 标志相减,结果放到目的寄存器 Rd 中。 5.减立即数(字) SBIW Rdl,K dl为24、26、28、30,0≤K≤63 说明:寄存器对(字)与立即数 0~63 相减,结果放入寄存器对。 6.减1 指令 DEC Rd 0≤d≤31 说明:寄存器 Rd 的内容减 1,结果送目的寄存器 Rd 中。 取反码指令 COM Rd 0≤d≤31 说明:该指令完成对寄存器 Rd 的二进制反码操作。 操作:Rd←$FF-Rd PC←PC+1 机器码:1001 010d dddd 0000 取补码指令 NEG Rd 0≤d≤31 说明:寄存器 Rd 的内容转换成二进制补码值。 操作:Rd←$00-Rd PC←PC+1 机器码:1001 010d dddd 0001 比较指令 1.寄存器比较 CP Rd,Rr 0≤d≤31,0≤r≤31 说明:该指令完成两个寄存器 Rd 和 Rr 相比较操作,而寄存器的内容不改变,该指令 后能使用所有条件跳转指令。 2.带进位比较 CPC Rd,Rr 0≤d≤31, 0≤r≤31 说明:该指令完成寄存器 Rd 的值和寄存器 Rr 加 C 相比较操作,而寄存器的内容不改 变,该指令后能使用所有条件跳转指令。 3.与立即数(字节)比较 CPI Rd,K 16≤d≤31,0≤K≤255 说明:该指令完成寄存器 Rd 和常数的比较操作,寄存器的内容不改变,该指令后能使 用所有条件跳转指令。 逻辑与指令 1.寄存器逻辑与 AND Rd,Rr 0≤d≤31,0≤d≤31 说明:寄存器 Rd 和寄存器 Rr 的内容逻辑与,结果送目的寄存器 Rd。 2.与立即数(字节) ANDI Rd,K 16≤d≤31,0≤K≤255 说明:寄存器 Rd 的内容与常数逻辑与,结果送目的寄存器 Rd。 3.寄存器位清零 CBR Rd,K 16≤d≤31,0≤K≤255 说明:清除寄存器 Rd 中的指定位,利用寄存器 Rd 的内容与常数表征码 K 的补码相与, 其结果放在寄存器 Rd 中。 4.测试寄存器为零或负 TST Rd 0≤d≤31 说明:测试寄存器为零或负,实现寄存器内容自己同自己的逻辑与操作,而寄存器内 容不改变。 逻辑或指令 1.寄存器逻辑或 OR Rd,Rr 0≤d≤31, 0≤r≤31 应用:置数,使某位为 1,用 1 去或;保留,用 0 去逻辑或;代替硬件或门。 说明:完成寄存器 Rd 与寄存器 Rr 的内容逻辑或操作,结果送目的寄存器 Rd 中。 2.或立即数(字节) ORI Rd,K 16≤d≤31, 0≤K≤255 说明:完成寄存器 Rd 的内容与常量 K 逻辑或操作,结果送目的寄存器 Rd中。 3.置寄存器位 SBR Rd,K 16≤d≤31, 0≤K≤255 说明:用于对寄存器 Rd 中指定位置位。完成寄存器 Rd 和常数表征码 K 之间的逻辑或 操作,结果送目的寄存器 Rd。 4.置寄存器为$FF SER Rd 16≤d≤31 说明:直接装入$FF 到寄存器 Rd。 逻辑异或指令 1.寄存器异或 EOR Rd,Rr 0≤d≤31, 0≤r≤31 说明:完成寄存器 Rd 和寄存器 Rr 的内容逻辑异或操作,结果送目的寄存器 Rd。 2.寄存器清零 CLR Rd 0≤d≤31 说明:寄存器清零。该指令采用寄存器 Rd 与自己的内容相异或实现的寄存器的所有位 都被清零。 乘法指令 1.无符号数乘法 MUL Rd,Rr 0≤d≤31, 0≤r≤31 说明: 该指令完成将寄存器 Rd 和寄存器 Rr 的内容作为两个无符号 8 位数的乘法操作, 结果为 16 位的无符号数,保存在 R1:R0 中,R1 为高 8 位,R0 为低 8 位。如果操作数为寄存器 R1 或 R0,则结果会将原操作数覆盖。 2.有符号数乘法 MULS Rd,Rr 16≤d≤31, 16≤r≤31 说明: 该指令完成将寄存器 Rd 和寄存器 Rr 的内容作为两个 8位有符号数的乘法操作, 结果为 16 位的有符号数,保存在 R1:R0 中,R1 为高 8 位,R0 为低 8 位。源操作数为寄存器 R16~R31。 3.有符号数与无符号数乘法 MULSU Rd,Rr 16≤d≤23, 16≤r≤23 说明:该指令完成将寄存器 Rd(8 位,有符号数)和寄存器 Rr(8 位,无符号数)的 内容相乘操作,结果为 16 位的有符号数,保存在 R1:R0 中,R1 为高 8 位,R0 为低 8 位。 源操作数为寄存器 R16~R23。 4.无符号定点小数乘法 FMUL Rd,Rr 16≤d≤23, 16≤r≤23 说明:该指令完成将寄存器 Rd(8 位无符号数)和寄存器 Rr(8 位无符号数)的内容相乘操作,结果为 16 位的无符号数,并将结果左移一位后保存在 R1:R0 中,R1 为高 8 位,R0 为低 8 位。源操作数为寄存器 R16~R23。 5.有符号定点小数乘法 FMULS Rd,Rr 16≤d≤23, 16≤r≤23 说明:该指令完成寄存器 Rd(8 位带符号数)和寄存器 Rr(8 位带符号数)的内容相乘操作,结果为 16 位的带符号数,并将结果左移一位后保存在 R1:R0 中,R1 为高 8 位,R0 为低 8 位。源操作数为寄存器 R16~R23。 6.有符号定点小数和无符号定点小数乘法 FMULSU Rd,Rr 16≤d≤23, 16≤r≤23 说明:该指令完成寄存器 Rd(8 位带符号数)和寄存器 Rr(8 位无符号数)的内容相乘操作,结果为 16 位的带符号数,并将结果左移一位后保存在 R1:R0 中,R1 为高 8 位,R0 为低 8 位。源操作数为寄存器 R16~R23。 跳 转 指 令 无条件跳转指令 1.相对跳转 RJMP k -2048≤k≤2047 说明:相对跳转到 PC-2048~PC+2047字范围内的地址,在汇编程序中,用目的地址的标号替代相对跳转字 k。 2.间接跳转 IJMP 说明:间接跳转到 Z 指针寄存器指向的 16 位地址。Z 指针寄存器是 16 位宽,允许在 当前程序存储器空间 64K 字(128K字节)内跳转。 3.直接跳转 JMP k 0≤k≤4194303 说明:直接跳转到 k 地址处,在汇编程序中,用目的地址的标号替代跳转字 k。 条件跳转指令 1.测试条件符合跳转指令 (1)状态寄存器中位为“1”跳转 BRBS s,k 0≤s≤7,-64≤k≤63 说明:执行该指令时,PC 先加 1,再测试 SREG 的 s 位,如果该位被置位,则跳转 k 个字,k 为 7 位带符号数,最多可向前跳 63 个字,向后跳 64 个字;否则顺序执行。在汇编程序中,用目的地址的标号替代相对跳转字 k。 (2)状态寄存器中位为“0”跳转 BRBC s,k 0≤s≤7,-64≤k≤63 说明:执行该指令时,PC 先加 1,再测试 SREG 的 s 位,如果该位被清零,则跳转 k 个字,k 为 7 位带符号数,最多可向前跳 63 个字,向后跳 64 个字;否则顺序执行。在汇编程序中,用目的地址的标号替代相对跳转字 k。 (3)相等跳转 BREQ k -64≤k≤63 说明:条件相对跳转,测试零标志位 Z,如果Z位被置位,则相对 PC 值跳转 k 个字。 如果在执行 CP、CPI、SUB 或 SUBI 指令后,立即执行该指令,且当寄存器 Rd 中数与寄存器 Rr 中数相等时,将发生跳转。这条指令相当于指令 BRBS 1,k。 (4)不相等跳转 BRNE k -64≤k≤63 说明:条件相对跳转,测试零标志位 Z,如果Z位被清零,则相对 PC 值跳转 k 个字。这条指令相当于指令 BRBC 1,k. (5)进位标志位 C 为“1”跳转 BRCS k -64≤k≤63 说明:条件相对跳转,测试进位标志 C,如果C位被置位,则相对 PC 值跳转 k 个字。 这条指令相当于指令 BRBS 0,k。 (6)进位标志位 C 为“0”跳转 BRCC k -64≤k≤63 说明:条件相对跳转,测试进位标志 C,如果C位被清除,则相对 PC 值跳转 k 个字。 这条指令相当于指令 BRBC 0,k。 (7)大于或等于跳转(对无符号数) BRSH k -64≤k≤63 说明:条件相对跳转,测试进位标志 C,如果C位被清零,则相对 PC 值跳转 k 个字。 如果在执行 CP、CPI、SUB或 SUBI 指令后,立即执行该指令,且当在寄存器 Rd 中无符号二进制数大于或等于寄存器Rr中无符号二进制数时, 将发生跳转。 该指令相当于指令 BRBS 0,k。 (8)小于跳转(对无符号数) BRLO k -64≤k≤63 说明:条件相对跳转,测试进位标志 C,如果C位被置位,则相对 PC 值跳转 k 个字。如果在执行 CP、CPI、SUB或 SUBI 指令后立即执行该指令,且当在寄存器 Rd 中无符号二进制数小于在寄存器Rr中无符号二进制数时,将发生跳转。该指令相当于指令BRBS 0,k (9)结果为负跳转 BRMI k -64≤k≤63 说明:条件相对跳转,测试负号标志 N,如果N位被置位,则相对 PC 值跳转 k 个字。该指令相当于指令 BRBS 2,k (10)结果为正跳转 BRPL k -64≤k≤63 说明:条件相对跳转,测试负号标志 N,如果N位被清零,则相对 PC 值跳转 k 个字。 该指令相当于指令 BRBC 2,k (11)大于或等于跳转(带符号数) BRGE k -64≤k≤63 说明:条件相对跳转,测试符号标志 S,如果S位被清零,则相对 PC 值跳转 k 个字。如果在执行 CP、CPI、SUB 或 SUBI 指令后立即执行该指令,且当在寄存器 Rd 中带符号二进制数大于或等于寄存器Rr中带符号二进制数时, 将发生跳转。 该指令相当于指令 BRBC 4,k。 (12)小于跳转(带符号数) BRLT k -64≤k≤63 说明:条件相对跳转,测试符号标志 S,如果S位被置位,则相对 PC 值跳转 k 个字。如果在执行 CP、CPI、SUB或 SUBI 指令后立即执行该指令,且当在寄存器 Rd 中带符号二进制数小于在寄存器 Rr 中带符号二进制数时,将发生跳转。该指令相当于指令 BRBS 4,k (13)半进位标志为“1”跳转 BRHS k -64≤k≤63 说明:条件相对跳转,测试半进位标志 H,如果 H 位被置位,则相对 PC 值跳转k 个字。该指令相当于指令 BRBS 5,k。 (14)半进位标志为“0”跳转 BRHC k -64≤k≤63 说明:条件相对跳转,测试半进位标志 H,如果 H 位被清零,则相对 PC 值跳转k 个字。该指令相当于指令 BRBC 5,k。 (15)T 标志为“1”跳转 BRTS k -64≤k≤63 说明:条件相对跳转,测试标志位 T,如果标志位 T 被置位,则相对 PC值跳转 k 个字。该指令相当于指令 BRBS 6,k。 (16)T 标志为“0”跳转 BRTC k -64≤k≤63 说明:条件相对跳转,测试 T 标志位,如果标志位 T 被清零,则相对 PC 值跳转 k 个字。该指令相当于指令 BRBC 6,k。 (17)溢出标志为“1”跳转 BRVS k -64≤k≤63 说明:条件相对跳转,测试溢出标志 V,如果V位被置位,则相对 PC 值跳转 k 个字。该指令相当于指令 BRBS 3,k。 (18)溢出标志为“0”跳转 BRVC k -64≤k≤63 说明:条件相对跳转,测试溢出标志 V,如果V位被清零,则相对 PC 值跳转 k 个字。该指令相当于指令 BRBC 3,k。 (19)中断标志为“1”跳转 BRIE k -64≤k≤63 说明:条件相对跳转,测试全局中断允许标志 I,如果I 位被置位,则相对 PC 值跳转k 个字。该指令相当于指令 BRBS 7,k。 (20)中断标志为“0”跳转 BRID k -64≤k≤63 说明:条件相对跳转,测试全局中断允许标志 I,如果I 位被清零,则相对 PC 值跳转k 个字。该指令相当于指令 BRBC 7,k。 2.测试条件符合跳行跳转指令 (1)相等跳行 CPSE Rd,Rr 0≤d≤31, 0≤r≤31 说明:该指令完成两个寄存器 Rd 和Rr 的比较,若 Rd=Rr,则跳一行执行指令。 (2)寄存器位为“0”跳行 SBRC Rr,b 0≤r≤31, 0≤b≤7 说明:该指令测试寄存器第 b 位,如果该位被清零,则跳一行执行指令。 (3)寄存器位为“1”跳行 SBRS Rr,b 0≤r≤31, 0≤b≤7 说明:该指令测试寄存器第 b 位,如果该位被置位,则跳下一行执行指令。 (4)I/O 寄存器位为“0”跳行 SBIC P,b 0≤P≤31, 0≤b≤7 说明:该指令测试 I/O 寄存器第 b 位,如果该位被清零,则跳一行执行指令。该指令只在低 32 个I/O 寄存器内操作,地址为 I/O 寄存器空间的 0~31。 (5)I/O 寄存器位为“1”跳行 SBIS P,b 0≤P≤31,0≤b≤7 说明:该指令测试 I/O 寄存器第 b 位,如果该位被置位,则跳一行执行指令。该指令只在低 32 个I/O 寄存器内操作,地址为 I/O 寄存器空间的 0~31。 子程序调用和返回指令 1.相对调用 RCALL k -2048≤k≤2047 说明:将 PC+1 后的值(RCALL 指令后的下一条指令地址)压入堆栈,然后调用在当前PC 前或后 k+1 处地址的子程序。 2.间接调用 ICALL 说明:间接调用由 Z 寄存器中(16 位指针寄存器)指向的子程序。地址指针寄存器 Z为 16 位,允许调用在当前程序存储空间 64K 字(128K 字节)内的子程序。 3.直接调用 CALL k 0≤k≤65535 说明:将 PC+2 后的值(CALL 指令后的下一条指令地址)压入堆栈,然后直接调用 k处地址的子程序。 4.从子程序返回 RET 说明:从子程序返回,返回地址从堆栈中弹出。 5.从中断程序返回 REti 说明:从中断程序中返回,返回地址从堆栈中弹出,且全局中断标志被置位。 数据传送指令 1. 工作寄存器间传送数据 MOV Rd,Rr 0≤d≤31,0≤r≤31 说明:该指令将一个寄存器内容传送到另一个寄存器中,源寄存器 Rr的内容不改变,而目的寄存器 Rd 复制了Rr 的内容。 2.SRAM 数据直接送寄存器 LDS Rd,k 0≤d≤31, 0≤k≤65535 说明:把 SRAM 中一个存储单元的内容(字节)装入到寄存器,其中 k 为该存储单元的16 位地址。 3.寄存器数据直接送 SRAM STS k,Rr 0≤r≤31, 0≤k≤65535 说明:将寄存器的内容直接存储到 SRAM 中,其中 k 为存储单元的 16 位地址。 4.立即数送寄存器 LDI Rd,K 16≤d≤31, 0≤K≤255 说明:装入一个 8 位立即数到寄存器 R16~R31中。 间接寻址数据传送指令 1.使用X 指针寄存器间接寻址传送数据 (1)使用地址指针寄存器 X 间接寻址将 SRAM 内容装入到指定寄存器 ①LD Rd,X 0≤d≤31;将指针为 X的 SRAM 中的数送寄存器,指针不变。 ②LD Rd,X+ 0≤d≤31;先将指针为 X 的SRAM 中的数送寄存器,X 指针加 1。 ③LD Rd,-X 0≤d≤31;X 指针减1,将指针为 X的 SRAM 中的数送寄存器。 (2)使用地址指针寄存器 X 间接寻址将寄存器内容存储到 SRAM ①ST X,Rr 0≤d≤31;将寄存器内容送 X 为指针的 SRAM 中,X 指针不改变。 ②ST X,Rr 0≤d≤31;先将寄存器内容送 X 为指针的 SRAM中,后 X 指针加 1。 ③ST -X,Rr 0≤d≤31;先将 X 指针减 1,然后将寄存器内容送 X 为指针的 SRAM中。 2.使用Y 指针寄存器间接寻址传送数据 (1)使用地址指针寄存器 Y 间接寻址将 SRAM 中的内容装入寄存器 ①LD Rd,Y 0≤d≤31;将指针为 Y的 SRAM 中的数送寄存器,Y 指针不变。 ②LD Rd,Y+ 0≤d≤31; 先将指针为 Y的 SRAM 中的数送寄存器, 然后 Y 指针加 1。 ③LD Rd,-Y 0≤d≤31;先将 Y 指针减 1,将指针为 Y 的SRAM中的数送寄存器。 ④LDD Rd,Y+q 0≤d≤31,0≤q≤63;将指针为 Y+q的 SRAM 中的数送寄存器,而 Y 指针不改变。 (2)使用地址指针寄存器 Y 间接寻址将寄存器内容存储到 SRAM ①ST Y,Rr 0≤d≤31;将寄存器内容送 Y 为指针的 SRAM 中,Y 指针不改变。 ②ST Y+,Rr 0≤d≤31; 先将寄存器内容送 Y 为指针的 SRAM 中, 然后 Y 指针加 1。 ③ST –Y,Rr 0≤d≤31;先将 Y 指针减 1,然后将寄存器内容送 Y 为指针的SRAM 中。 ④STD Y+q,Rr 0≤d≤31,0≤q≤63;将寄存器内容送 Y+q 为指针的 SRAM 中。 3.使用Z 指针寄存器间接寻址传送数据 (1)使用地址指针寄存器 Z 间接寻址将 SRAM 中的内容装入到指定寄存器 ①LD Rd,Z 0≤d≤31;将指针为 Z的 SRAM 中的数送寄存器,Z 指针不变。 ②LD Rd,Z+ 0≤d≤31;先将指针为Z的SRAM中的数送寄存器,然后Z指针加1。 ③LD Rd,-Z 0≤d≤31;先将Z 指针减1,然后将指针为Z 的SRAM 中的数送寄存器。 ④LDD Rd,Z+q 0≤d≤31,0≤q≤63;将指针为 Z+q的 SRAM 中的数送寄存器,而 Z 指针不改变。 (2)使用地址指针寄存器 Z 间接寻址将寄存器内容存储到 SRAM ①ST Z,Rr 0≤d≤31;将寄存器内容送 Z 为指针的 SRAM 中,Z 指针不改变。 ②ST Z+,Rr 0≤d≤31;先将寄存器内容送Z为指针的SRAM中,然后Z指针加1。 ③ST -Z,Rr 0≤d≤31;先将 Z 指针减 1,然后将寄存器内容送 Z 为指针的SRAM 中。 ④STD Z+q,Rr 0≤d≤31,0≤q≤63;将寄存器内容送 Z+q 为指针的 SRAM 中。 以上 22 条指令操作之后,X、Y、Z 指针寄存器要么不改变,要么是加 1 或减 1。使用 X、Y、Z 指针寄存器的这些特性特别适用于访问矩阵表和堆栈指针等。 从程序存储器中取数装入寄存器指令 1. 从程序存储器中取数装入寄存器 R0 LPM 说明:将 Z指向的程序存储器空间的一个字节装入寄存器 R0。 2.从程序存储器中取数装入寄存器 LPM Rd,Z 0≤d≤31 说明:将 Z指向的程序存储器空间的一个字节装入寄存器 Rd。 3.带后增量的从程序存储器中取数装入寄存器 Rd LPM Rd,Z+ 说明:将 Z指向的程序存储器空间的一个字节装入 Rd,然后 Z 指针加1。 4.从程序存储器中取数装入寄存器 R0(扩展) ELPM 说明:将 RAMPZ:Z 指向的程序存储器空间的一个字节装入寄存器 R0。 5.从程序存储器中取数装入寄存器(扩展) ELPM Rd,Z 0≤d≤31 说明:将 RAMPZ:Z 指向的程序存储器空间的一个字节装入寄存器 Rd。 6.带后增量的从程序存储器中取数装入寄存器 Rd(扩展) LPM Rd,Z+ 说明:将 RAMPZ:Z 指向的程序存储器空间的一个字节装入 Rd,然后 RAMPZ:Z 指针加1。 写程序存储器指令 SPM 说明:将寄存器对 R1:R0 的内容(16 位字)写入 Z 指向的程序存储器空间。 I/O口数据传送 1.I/O 口数据装入寄存器 IN Rd,P 0≤d≤31, 0≤P≤63 说明:将 I/O 空间(口、定时器、配置寄存器等)的数据传送到寄存器区中的寄存器Rd 中。 2.寄存器数据送 I/O 口 OUT P,Rr 0≤r≤31, 0≤P≤63 说明:将寄存器区中 Rr的数据传送到 I/O 空间(口、定时器、配置寄存器等) 。 堆栈操作指令 1.进栈指令 PUSH Rr 0≤d≤31 说明:该指令存储寄存器 Rr 的内容到堆栈。 2. 出栈指令 POP Rd 0≤d≤31 说明:该指令将堆栈中的字节装入到寄存器 Rd中。 位操作和位测试指令 带进位逻辑操作指令 1.寄存器逻辑左移 LSL Rd 0≤d≤31 说明:寄存器 Rd 中所有位左移 1 位,第 0 位被清零,第 7 位移到 SREG 中的 C 标志。该指令完成一个无符号数乘 2 的操作。 操作:C←b b b b b b b b ←0 PC←PC+1 机器码:0000 11dd dddd dddd 2.寄存器逻辑右移 LSR Rd 0≤d≤31 说明:寄存器 Rd 中所有位右移 1 位,第 7 位被清零,第 0 位移到 SREG 中的 C 标志。该指令完成一个无符号数除 2 的操作,C 标志被用于结果舍入。 操作:0→b7b6b5b4b3b2b1b0→C PC←PC+1 机器码:1001 010d dddd 0110 3.带进位位的寄存器逻辑循环左移 ROL Rd 0≤d≤31 说明:寄存器 Rd 的所有位左移 1 位,C 标志被移到 Rd 的第 0 位,Rd 的第 7 位移到 C标志。 操作:C←b7b6b5b4b3b2b1b0←C PC←PC+1 (参见 ADC 指令) 4.带进位位的寄存器逻辑循环右移 ROR Rd 0≤d≤31 说明: 寄存器 Rd 的所有位右移 1 位, C 标志被移到 Rd 的第7位, Rd 的第0 位移到C 标志。 操作:C→b7b6b5b4b3b2b1b0→C PC←PC+1 机器码:1001 010d dddd 0111 5.寄存器算术右移 ASR Rd 0≤d≤31 说明:寄存器 Rd 中的所有位右移 1 位,而第 7 位保持原逻辑值,第 0 位被装入 SREG 的 C 标志位。这个操作实现 2 的补码值除 2,而不改变符号,进位标志用于结果的舍入。 6.寄存器半字节交换 SWAP Rd 0≤d≤31 说明:寄存器中的高半字节和低半字节交换。 位变量传送指令 1.寄存器中的位存储到 SREG 中的T 标志 BST Rr,b 0≤d≤31,0≤b≤7 说明:把寄存器 Rr 中的位 b 存储到SREG 状态寄存器中的 T 标志位中。 2.SREG 中的 T 标志位值装入寄存器 Rd 中的某一位 BLD Rd,d 0≤d≤31,0≤b≤7 说明:复制 SREG 状态寄存器的 T 标志到寄存器 Rd中的位 b。 位变量修改指令 1.状态寄存器 SREG 的指定位置“1” BSET s 0≤s≤7 说明:置“1”状态寄存器 SREG 的某一标志位。 2.状态寄存器 SREG 的指定位清“0” BCLR s 0≤s≤7 说明:清零 SREG 状态寄存器 SREG 中的一个标志位。 3.I/O 寄存器的指定位置“1” SBI P,b 0≤P≤31, 0≤b≤7 说明: 对 P 指定的 I/O 寄存器的指定位置 “1” 。 该指令只在低 32 个I/O 寄存器内操作,I/O 寄存器地址为 0~31。 4.I/O 寄存器的指定位置“0” CBI P,b 0≤P≤31,0≤b≤7 说明:清零指定 I/O 寄存器中的指定位。 该指令只用在低 32 个I/O 寄存器上操作, I/O寄存器地址为 0~31。 5.置进位位 SEC 置位 SREG 状态寄存器中的进位标志 C 6.清进位位 CLC 清零 SREG 状态寄存器中的进位标志 C 7.置位负标志位 SEN 置位 SREG 状态寄存器中的负数标志 N 8.清负标志位 CLN 清零 SREG 状态寄存器中的负数标志 N 9.置零标志位 SEZ 置位 SREG 状态寄存器中的零标志 Z 10.清零标志位 CLZ 清零 SREG 状态寄存器中的零标志 Z 11.触发全局中断位 SEI 置位 SREG 状态寄存器中的全局中断标志 I 12.禁止全局中断位 CLI 清除 SREG 状态寄存器中的全局中断标志 I 13.置S 标志位 SES 置位 SREG 状态寄存器中的符号标志 S 14.清S 标志位 CLS 清零 SREG 状态寄存器中的符号标志 S 15.置溢出标志位 SEV 置位 SREG 状态寄存器中的溢出标志 V 16.清溢出标志位 CLV 清零 SREG 状态寄存器中的溢出标志 V 17.置T 标志位 SET 置位 SREG 状态寄存器中的 T 标志 18.清T 标志位 CLT 清零 SREG 状态寄存器中的 T 标志 19.置半进位标志 SHE 置位 SREG 状态寄存器中的半进位标志 H 20.清半进位标志 CLH 清零 SREG 状态寄存器中的半进位标志 H MCU控制指令 1.空操作指令 NOP 2.进入休眠方式指令 SLEEP 说明:该指令使 MCU 进入休眠方式运行。休眠模式由 MCU 控制寄存器定义。当 MCU 在休眠状态下由一个中断被唤醒时,在中断程序执行后,紧跟在休眠指令后的指令将被执行。 3.清零看门狗计数器 WDR 说明:该指令清零看门狗定时器。在允许使用看门狗定时器情况下,系统程序在正常运行中必须在 WD 预定比例器给出限定时间内执行一次该指令,以防止看门狗定时器溢出,造成系统复位。参见看门狗定时器硬件部分。 表3-6 伪指令表 序 号 伪 指 令 说 明 序 号 伪 指 令 说 明 1 BYTE 在RAM中定义预留存储单元 10 EXIT 退出文件 2 CSEG 声明代码段 11 INCLUDE 包含指定的文件 3 DB 定义字节常数 12 MACRO 宏定义开始 4 DEF 定义寄存器符号名 13 ENDMACRO 宏定义结束 5 DEVICE 指定为何器件生成汇编代码 14 LISTMAC 列表宏表达式 6 DSEG 声明数据段 15 LIST 列表文件生成允许器 7 DW 定义字常数 16 NOLIST 关闭列表文件生成 8 EQU 定义标识符常量 17 ORG 设置程序起始位置 9 ESEG 声名E2 PROM段 18 SET 赋值给标识符 伪指令表 序号 伪 指 令 说 明 序 号 伪 指 令 说 明 1 BYTE 在RAM中定义预留存储单元 10 EXIT 退出文件 2 CSEG 声明代码段 11 INCLUDE 包含指定的文件 3 DB 定义字节常数 12 MACRO 宏定义开始 4 DEF 定义寄存器符号名 13 ENDMACRO 宏定义结束 5 DEVICE 指定为何器件生成汇编代码 14 LISTMAC 列表宏表达式 6 DSEG 声明数据段 15 LIST 列表文件生成允许器 7 DW 定义字常数 16 NOLIST 关闭列表文件生成 8 EQU 定义标识符常量 17 ORG 设置程序起始位置 9 ESEG 声名E2PROM段 18 SET 赋值给标识符 |
|
相关推荐 |
|
只有小组成员才能发言,加入小组>>
AVR Atmega16 Bootloader程序与上位机LabView程序
5126 浏览 6 评论
#include <ioavr.h>这个头文件我应该下什么编译器
7769 浏览 0 评论
3028 浏览 2 评论
3103 浏览 1 评论
10055 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 18:07 , Processed in 0.585922 second(s), Total 50, Slave 38 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号