<4D F736F F D20B5DA33D5C D A3A84CA3A9B5C4D6B8C1EECFB5CDB32E646F6378>

Size: px
Start display at page:

Download "<4D F736F F D20B5DA33D5C D A3A84CA3A9B5C4D6B8C1EECFB5CDB32E646F6378>"

Transcription

1 AVR 单片机 C 语言开发入门与典型实例 ( 修订版 ) 作者 : 华清远见 第 3 章 ATmega128(L) 的指令系统 本章目标 本章主要介绍 ATmega128(L) 的指令系统, 首先分析 ATmega128(L) 的 指令的特点 分类和寻址方式, 并详细介绍了指令系统的每条指令, 最后介绍了 ATmega128(L) 汇编语言的一些基本知识 本章的主要内容有以下几个方面 指令系统的特点 分类和寻址方式 分类介绍指令系统的每条指令 汇编语言的介绍

2 3.1 ATmega128(L) 的指令系统概述 对于 ATmega128(L) 来说, 它不仅具备比较完善和功能强大的硬件结构和组成, 如 SPI USART TWI ADC 和模拟比较器等, 而且它的指令系统采用先进的 RISC 体系结构, 从而使 ATmega128(L) 的整体表 现更加出色, 可以应用在很多场合 ATmega128(L) 的指令系统是 RISC 结构的精简指令集, 完全兼容 AVR 单片机的指令系统, 具有高性能 的数据处理能力, 可以对位 半字节 字节和双字节数据进行各种操作, 包括算术和逻辑运算 数据传输 布尔运算 控制转移和硬件乘法等操作 ATmega128(L) 的指令系统中共有 133 条指令, 按功能可以分为以下 5 大类 算术和逻辑运算指令 (28 条 ), 如表 3.1 所示 ; 比较和跳转指令 (36 条 ), 如表 3.2 所示 ; 数据传输指令 (38 条 ), 如表 3.3 所示 ; 位操作和位测试指令 (28 条 ), 如表 3.4 所示 ; MCU 控制指令 (3 条 ), 如表 3.5 所示 表 3.1 Tmega128(L) 指令系统中的算术和逻辑运算指令 (28 条 ) 助记符 操作数 说 明 操 作 ADD Rd,Rr 两个寄存器相加 Rd Rd+Rr Z C N V 和 H ADC Rd,Rr 两个寄存器带进位相加 Rd Rd+Rr+C Z C N V 和 H ADIW Rdl,K 立即数与字相加 Rdh:Rdl Rdh+Rdl+K Z C N V 和 S SUB Rd,Rr 两个寄存器相减 Rd Rd Rr Z C N V 和 H SUBI Rd,K 寄存器与常数相减 Rd Rd K Z C N V 和 H SBC Rd,Rr 两个寄存器带进位相减 Rd Rd Rr C Z C N V 和 H SBCI Rd,K 寄存器带常数及进位相减 Rd Rd K C Z C N V 和 H SBIW Rdl,K 字与立即数相减 Rdh:Rdl Rdh+Rdl K Z C N V 和 S AND Rd,Rr 两个寄存器逻辑与 Rd Rd Rr Z N V 和 S ANDI Rd,K 寄存器与常数逻辑与 Rd Rd K Z N V 和 S OR Rd,Rr 两个寄存器逻辑或 Rd Rd v Rr Z N V 和 S ORI Rd,K 寄存器与常数逻辑或 Rd Rd v K Z N V 和 S EOR Rd,Rr 两个寄存器异或 Rd Rd Rr Z N V 和 S COM Rd 取反 Rd $FF Rd Z C N V 和 S NEG Rd 取补 Rd $00 Rd I 和 T 外的所有位 SBR Rd,K 置位寄存器的某些位 Rd Rd v K Z N V 和 S CBR Rd,K 清零寄存器的某些位 Rd Rd ($FF K) Z N V 和 S INC Rd 加 1 Rd Rd+1 Z N V 和 S DEC Rd 减 1 Rd Rd 1 Z N V 和 S TST Rd 测试寄存器值为 0 或负 Rd Rd Rd Z N V 和 S CLR Rd 清零寄存器 Rd Rd Rd Z N V 和 S SER Rd 置位寄存器 Rd $FF MUL Rd,Rr 符号数相乘 R1:R0 Rd x Rr Z 和 C MULS Rd,Rr 有符号数相乘 R1:R0 Rd x Rr Z 和 C MULSU Rd,Rr 有符号数与符号数相乘 R1:R0 Rd x Rr Z 和 C FMUL Rd,Rr 符号小数相乘 R1:R0 (Rd x Rr)<<1 Z 和 C 2

3 FMULS Rd,Rr 有符号小数相乘 R1:R0 (Rd x Rr)<<1 Z 和 C FMULSU Rd,Rr 有符号与符号小数相乘 R1:R0 (Rd x Rr)<<1 Z 和 C 表 3.2 ATmega128(L) 指令系统中的比较和跳转指令 (36 条 ) 助记符 操作数 说 明 操 作 RJMP k 相对跳转 PC PC+k+1 IJMP 间接跳转到 (Z) PC Z JMP k 直接跳转 PC k RCALL k 相对子程序调用 PC PC+k+1 ICALL 相对调用到 (Z) PC Z CALL k 直接子程序调用 PC k RET 子程序返回 PC STACK RETI 中断返回 PC STACK I CPSE Rd,Rr 比较, 相等则跳过下一条指令 if(rd=rr) PC PC+2or3 CP Rd,Rr 比较 Rd Rr Z N V C 和 H CPC Rd,Rr 带进位位比较 Rd Rr C Z N V C 和 H CPI Rd,K 比较寄存器与立即数 Rd K Z N V C 和 H SBRC Rr,b 寄存器的某位清 0 即跳转 if(rr(b)=0) PC PC+2 or 3 SBRS Rr,b 寄存器的某位置位即跳转 if(rr(b)=1) PC PC+2 or 3 SBIC P,b I/O 寄存器的某位清 0 即跳转 if(p(b)=0) PC PC+2 or 3 SBIS P,b I/O 寄存器的某位置位即跳转 if(p(b)=1) PC PC+2 or 3 BRBS s,k 状态标志置位即跳转 if(sreg(s)=1) then PC PC+k+1 BRBC s,k 状态标志清 0 即跳转 if(sreg(s)=0) then PC PC+k+1 BREQ k 相等即跳转 if(z=1) then PC PC+k+1 BRNE k 不相等即跳转 if(z=0) then PC PC+k+1 BRCS k 进位标志置位即跳转 if(c=1) then PC PC+k +1 BRCC k 进位标志清 0 即跳转 if(c=0) then PC PC+k+1 BRSH k 相同或更大即跳转 if(c=0) then PC PC+k+1 BRLO k 小于即跳转 if(c=1) then PC PC+k+1 BRMI k 负数即跳转 if(n=1) then PC PC+k+1 BRPL k 正数即跳转 if(n=0) then PC PC+k+1 BRGE k 有符号数大于 / 等于即跳转 if(n V=0) then PC PC+k+1 BRLT k 有符号数小于 0 即跳转 if(n V=1) then PC PC+k+1 BRHS k 半进位标志置位即跳转 if(h=1) then PC PC+k+1 BRHC k 半进位标志清 0 即跳转 if(h=0) then PC PC+k+1 BRTS k T 标志置位即跳转 if(t=1) then PC PC+k+1 BRTC k T 标志清 0 即跳转 if(t=0) then PC PC+k+1 BRVS k 溢出标志置位即跳转 if(v=1) then PC PC+k+1 BRVC k 溢出标志清 0 即跳转 if(v=0) then PC PC+k+1 BRIE k 中断使能即跳转 if(i=1) then PC PC+k+1 BRID k 中断禁止即跳转 if(i=0) then PC PC+k+1 表 3.3 ATmega128(L) 指令系统中的数据传输指令 (38 条 ) 助记符 操作数 说 明 操 作 MOV Rd,Rr 寄存器之间数据转移 Rd Rr 3

4 MOVW Rd,Rr 寄存器字传输 Rd+1:Rd Rr+1:Rr LDI Rd,K 加载立即数 Rd K LD Rd,X 间接加载 Rd (X) LD Rd,X+ 间接加载并执行后加操作 Rd (X),X X+1 LD Rd, X 间接加载并执行预减操作 X X 1,Rd (X) LD Rd,Y 间接加载 Rd (Y) LD Rd,Y+ 间接加载并执行后加操作 Rd (Y),Y Y+1 LD Rd, Y 间接加载并执行预减操作 Y Y 1,Rd (Y) LDD Rd,Y+q 带偏移量的间接加载 Rd (Y+q) LD Rd,Z 间接加载 Rd (Z) LD Rd,Z+ 间接加载并执行后加操作 Rd (Z),Z Z+1 LD Rd, Z 间接加载并执行预减操作 Z Z 1,Rd (Z) LDD Rd,Z+q 带偏移量的间接加载 Rd (Z+q) LDS Rd,k 从 SRAM 中直接加载 Rd (k) ST X,Rr 间接存储 (X) Rr ST X+,Rr 间接存储并执行后加操作 (X) Rr,X X+1 ST X,Rr 间接存储并执行预减操作 X X 1,(X) Rr ST Y,Rr 间接存储 (Y) Rr ST Y+,Rr 间接存储并执行后加操作 (Y) Rr,Y Y+1 ST Y,Rr 间接存储并执行预减操作 Y Y 1,(Y) Rr STD Y+q,Rr 带偏移量的间接存储 (Y+q) Rr ST Z,Rr 间接存储 (Z) Rr ST Z+,Rr 间接存储并执行后加操作 (Z) Rr,Z Z+1 ST Z,Rr 间接存储并执行预减操作 Z Z 1,(Z) Rr STD Z+q,Rr 带偏移量的间接存储 (Z+q) Rr STS k,rr 直接存储到 SRAM (k) Rr LPM 加载程序存储器 R0 (Z) LPM Rd,Z 加载程序存储器 Rd (Z) LPM Rd,Z+ 加载程序存储器并执行后加操作 Rd (Z),Z Z+1 ELPM 扩展的加载程序存储器操作 R0 (RAMPZ:Z) ELPM Rd,Z 扩展的加载程序存储器操作 Rd (RAMPZ:Z) ELPM Rd,Z+ 扩展的加载程序存储器操作并执行后加操作 Rd (RAMPZ:Z), RAMPZ:Z RAMPZ:Z+1 SPM 存储程序存储器 (Z) R1:R0 IN Rd,P 读入端口数据 Rd P OUT P,Rr 将数据输出到端口 P Rr PUSH Rr 将寄存器的数值推入堆栈 STACK Rr POP Rd 将寄存器的数值弹出堆栈 Rd STACK 表 3.4 ATmega128(L) 指令系统中的位操作和位测试指令 (28 条 ) 助记符操作数说明操作 SBI P,b 置位 I/O 寄存器的某一位 I/O(P,b) 1 CBI P,b 清零 I/O 寄存器的某一位 I/O(P,b) 0 LSL Rd 逻辑左移 Rd(n+1) Rd(n),Rd(0) 0 Z C N 和 V LSR Rd 逻辑右移 Rd(n) Rd(n+1),Rd(7) 0 Z C N 和 V ROL Rd 通过进位位向左循环 Rd(0) C,Rd(n+1) Rd(n), Z C N 和 V 4

5 ROR Rd 通过进位位向右循环 C Rd(7) Rd(7) C,Rd(n) Rd(n+1), C Rd(0) Z C N 和 V ASR Rd 算术右移 Rd(n) Rd(n+1),n=0~6 Z C N 和 V SWAP Rd 高 4 位与低 4 位交换 Rd(3~0) Rd(7~4),Rd(7~4) Rd(3~0) BSET s 置位标志位 SREG(s) 1 SREG(s) BCLR s 清 0 标志位 SREG(s) 0 SREG(s) BST Rr,b 将寄存器的某一位保存到 T T Rr(b) T BLD Rd,b 将 T 加载到寄存器的某一位 Rd(b) T SEC 置位进位位 C 1 C CLC 清 0 进位位 C 0 C SEN 置位负数标志位 N 1 N CLN 清 0 负数标志位 N 0 N SEZ 置位 0 标志位 Z 1 Z CLZ 清 0 零标志位 Z 0 Z SEI 全局中断标志位置位 I 1 I CLI 全局中断标志位清 0 I 0 I SES 置位符号测试标志位 S 1 S CLS 清 0 符号测试标志位 S 0 S SEV 置位 2 的补码溢出标志 V 1 V CLV 清除 2 的补码溢出标志 V 0 V SET 置位 SREG 的 T 标志 T 1 T CLT 清除 SREG 的 T 标志 T 0 T SEH 置位 SREG 的半进位标志 H 1 H CLH 清除 SREG 的半进位标志 H 0 H 表 3.5 ATmega128(L) 指令系统中的 MCU 控制指令 (3 条 ) 助记符操作数说明操作 NOP 操作 SLEEP 休眠参见有关休眠的说明 WDR 看门狗复位参见有关看门狗定时器的说明 BREAK Break 只用于片上调试 表 3.1~3.5 中给出了 ATmega128(L) 指令系统的所有指令助记符 操作数及相应的操作, 下面对其中所使用的符号的意义进行简单地说明 (1) 状态寄存器及其中的标志位说明如下 SREG: 状态寄存器 ; C: 进位标志位, 表示一个算术或逻辑操作之后有产生进位 ; Z: 零标志位, 表示一个算术或逻辑操作之后的结果是否为 0; N: 负数标志位, 表示一个算术或逻辑操作之后的结果是否为负数 ; V: 二进制的补码溢出标志位, 用来支持二进制的补码运算 ; S: 符号标志位, 由式子 S=N V 决定, 即负数标志位 N 和二进制的补码溢出标志位 V 两者的异或值 ; H: 半进位标志位, 指示了一些 ALU 操作过程中有半进位的出现 ; T: 位拷贝存储位, 通常出现在位拷贝指令 BLD 和 BST 中作为目的或源地址 ; I: 全局中断使能位 (2) 寄存器和操作码的说明如下 5

6 Rd: 目的 ( 或源 ) 寄存器, 取值为 R0~R31 或 R16~R31( 取决于具体的指令 ); Rdl: 寄存器 R24 R26 R28 或 R30, 通常用于指令 ADIW 和 SBIW 中 ; Rr: 源寄存器, 取值为 R0-R31; b: 寄存器中的指定位, 取值为常数 0~7; s: 状态寄存器 SREG 中的指定位, 取值为常数 0~7; P:I/O 寄存器, 取值为 0~31 或 0~63( 取决于具体的指令 ); K: 立即数, 取值为 0~255; k: 地址常数, 取值取决于具体的指令 ; q: 地址偏移量常数, 取值为 0~63; X Y 和 Z: 地址指针寄存器 (X=R27:26;Y=R29:28;Z=R31:R30) (3) 堆栈的说明如下 STACK: 堆栈 ; SP: 堆栈 STACK 的指针 3.2 ATmega128(L) 的数的寻址方式 寻址方式指的是指令给出参与运算的数据 ( 即操作数 ) 的方式 在 ATmega128(L) 中, 数的寻址方式有 : 寄存器直接寻址 数据存储器空间直接寻址 数据存储器空间间接寻址 程序存储器空间取常量寻址 程序存储器空间直接寻址 程序存储器空间间接寻址和程序存储器空间相对寻址 具体介绍如下 单寄存器直接寻址方式指的是由指令指定的一个寄存器的内容作为操作数, 并在指令中给出该寄存器的直接地址 这种寻址方式的寻址范围为通用工作寄存器组中的 32 个寄存器 R0~R31 或后 16 个寄存器 R16~ R31 例如: TST Rd 双寄存器直接寻址方式指的是由指令指定的两个寄存器 Rd 和 Rr 的内容作为操作数, 并在指令中给出这两个寄存器的直接地址, 最后指令执行的结果存放在寄存器 Rd 中这种寻址方式的寻址范围为通用工作寄存器组中的 32 个寄存器 R0~R31 或后 16 个寄存器 R16~R31 或寄存器 R16~R23 例如: ADD Rd, Rr I/O 寄存器直接寻址方式指的是由指令指定的一个寄存器的内容作为操作数, 并在指令中给出该寄存器的直接地址 这种寻址方式的寻址范围为 0~63 或 0~31, 即 I/O 寄存器空间的地址 $00~$3F 例如: IN Rd,P 数据存储器空间直接寻址指的是直接给出 SRAM 中操作数的地址 这种寻址方式的指令为双字节指令, 在指令的低字节中给出 16 位的 SRAM 地址 该寻址方式的寻址范围由指令中 16 位 SRAM 地址决定, 即 64KB 例如: LDS Rd,K 数据存储器空间的寄存器间接寻址方式指的是由指令指定的某一个 16 位寄存器的内容作为 SRAM 中操作数的地址 在 ATmega128(L) 中, 常使用 16 位寄存器 X Y 和 Z 保存该寻址方式下操作数的地址 例如 : LD Rd,Y 带后增量的数据存储器空间的寄存器间接寻址方式与数据存储器空间的寄存器间接寻址方式类似, SRAM 中的操作数的地址仍放在寄存器 X Y 和 Z 中 不同的是指令在间接寻址操作后, 会自动的将寄存器 X Y 和 Z 中的地址加 1, 再把加 1 后的地址作为操作数的地址 该寻址方式特别适用于访问矩阵和查表等场合 例如 : LD Rd,Y+ 带预减量的数据存储器空间的寄存器间接寻址方式与数据存储器空间的寄存器间接寻址方式类似, SRAM 中的操作数的地址仍放在寄存器 X Y 和 Z 中 不同的是指令在间接寻址操作之前, 会自动的将寄存器 X Y 和 Z 中的地址减 1, 再把减 1 后的地址作为操作数的地址 该寻址方式特别适用于访问矩阵和查表等场合 例如 : LD Rd, Y 带位移的数据存储器空间的寄存器间接寻址方式指的是 SRAM 中操作数的地址由寄存器 Y 或 Z 及指令中给出的地址偏移量共同决定 其中, 偏移量的范围为 0~63 例如: LDD Rd,Y+q 6

7 程序存储器空间常量寻址方式指的是直接给出 Flash 程序存储器中操作数 ( 即常量 ) 的地址 该地址存放在寄存器 Z 中, 并且由寄存器 Z 的高 15 位决定 (16 位地址的最高位为 0), 而寄存器 Z 的最低位用于确定常量是程序存储器单元 ( 程序存储器的存储单元为字 ) 的高字节还是低字节 若最低位为 0, 则选择低字节 ; 若最低位为 1, 则选择高字节 例如 : LPM R15,Z 带后增量的程序存储器空间常量寻址方式与程序存储器空间常量寻址方式类似 不同的是寻址操作后, 寄存器 Z 中的地址加 1 该寻址方式只适用于指令 LPM Rd,Z+ 例如: LPM R15,Z+ 注意 由于 ATmega128(L) 的程序存储器空间大小为 64KB, 而指令 LPM 只能对低 32KB 的程序存储器空间寻址, 因此 ATmega128(L) 使用 3 条扩展指令 ELPM 来辅助对高 32KB 的程序存储器空间进行寻址 (RAMPZ=0: 低 32KB;RAMPZ=1: 高 32KB) 程序存储器空间写数据寻址方式主要适用于指令 SPM 该指令将寄存器 R1 和 R0 中的内容组成一个字 R1:R0, 然后写入由寄存器 Z 的内容作为地址的程序存储器单元中 例如 : SPM 程序存储器空间直接寻址方式指的是指令将一个 16 位的操作数送入程序计数器 PC 中, 作为下一条指令在程序存储器的哪一存储单元中 该寻址方式适用于指令 JMP 和 CALL 例如: JMP $0E4F 程序存储器空间 Z 寄存器间接寻址方式把下一步要执行的指令在程序存储器中的地址放在寄存器 Z 中, 即用寄存器 Z 的值代替 PC 的值 该寻址方式适用于指令 IJMP 和 ICALL 例如: IJMP 程序存储器空间相对寻址方式指的是指令中包含一个相对偏移量 k, 在指令执行时, 先把当前 PC 的值加 1 后再与 k 相加, 作为新的 PC 值 该寻址方式只适用于指令 RJMP 和 RCALL 例如: RJMP $6789 数据存储器空间堆栈指针 SP 间接寻址指的是将 16 位的堆栈指针 SP 的值作为 SRAM 空间的操作数的地址 该寻址方式适用于指令 PUSH 和 POP 例如: PUSH R3 3.3 算术和逻辑运算指令 ATmega128(L) 的算术运算指令有加 减 乘 取反 取补 加 1 和减 1 指令 ; 逻辑运算指令有与 或和异或指令 注意在本章的介绍中, 指令周期指的是指令执行占用的系统时钟周期 加法指令 ATmega128(L) 的加法指令有 : 不带进位位加法指令 带进位位加法指令 字加立即数指令和加 1 指令, 具体如表 3.6 所示 表 3.6 加法指令 不带进位位加法指令 带进位位加法指 ADD Rd,Rr 0 d,r 31 两个寄存器 Rd 和 Rr 中的值相加, 结果送目的寄存器 Rd Rd Rd+Rr,PC PC rd dddd rrrr H S V N Z 和 C ADC Rd,Rr 0 d,r 31 两个寄存器 Rd 和 Rr 中的值及进位标志位 C 的值相加, 结果送目的寄存器 Rd Rd Rd+Rr+C,PC PC rd dddd rrrr H S V N Z 和 C 7

8 令 ADIW Rdl+1:Rdl, K dl 为 或 30,0 K 63 字加立即数指令 寄存器对 Rdl+1:Rdl 中的值 (1 个字 ) 与立即数 K(0~63) 相加, 结果放到寄存器对 此指令只用于最后 4 个寄存器对和指针寄存器 Rdl+1:Rdl Rdl+1:Rdl+K,PC PC KKdd KKKK H V N Z 和 C INC Rd 0 d 31 加 1 指令 寄存器 Rd 中的值加 1, 结果还送入寄存器 Rd 中 该操作不改变 SREG 中的进位标志位 C, 所以指令 INC 可以在多倍字长计算中用作循环计数 注意 : 当对符号数操作时, 仅有 BREQ( 相等跳转 ) 和 BRNE( 不相等跳转 ) 指令有效 ; 当对 2 进制补码值进行操作时, 所有的带符号跳转指令都有效 Rd Rd+1,PC PC d dddd 0011 S V N 和 Z 减法指令 ATmega128(L) 的减法指令有 : 不带进位位减法指令 减立即数指令 带进位位减法指令 带进位位减立即数指令 减立即数指令和减 1 指令, 具体如表 3.7 所示 表 3.7 减法指令 不带进位位减法指令 减立即数指令 减立即数指令 SUB Rd,Rr 0 d,r 31 将两个寄存器 Rd 和 Rr 中的值相减, 结果放在目的寄存器 Rd 中 被减数放在寄存器 Rd 中, 减数放在寄存器 Rr 中 Rd Rd Rr,PC PC rd dddd rrrr H S V N Z 和 C SUBI Rd,K 0 d 31,0 K 255 寄存器 Rd 中的值和立即数 K 相减, 结果送入目的寄存器 Rd 该指令工作于寄存器 R16~R31 之间, 非常适合 X Y 和 Z 指针的操作 Rd Rd K,PC PC KKKK dddd KKKK H S V N Z 和 C 8

9 带进位位减法指令 带进位位减立即数指令 带进位位减立即数指令 减 1 指令 SBC Rd,Rr 0 d,r 31 两个寄存器 Rd 和 Rr 及进位标志位 C 相减, 结果放在目的寄存器 Rd 中 Rd Rd Rr C,PC PC rd dddd rrrr H S V N Z 和 C SBCI Rd,K 0 d 31,0 K 255 寄存器和立即数带着进位标志位 C 相减, 结果放在目的寄存器 Rd 中 被减数放在寄存器 Rd 中, 两个减数分别放在寄存器 Rr 和进位标志位 C 中 Rd Rd K C,PC PC KKKK dddd KKKK H S V N Z 和 C SBIW Rdl+1:Rdl,K dl= 或 30,0 K 63 寄存器对 Rdl+1:Rdl 中的值 (1 个字 ) 减去一个立即数 K(0~63), 并把结果存放在这个寄存器对里 Rdl+1:Rdl Rdl+1:Rdl-K,PC PC KKdd KKKK S V N Z 和 C DEC Rd 0 d 31 寄存器 Rd 中的值减 1, 并将结果送回寄存器 Rd 中 该操作不改变 SREG 中的 C 标志, 所以 INC 指令可以在多倍字长计算中用作循环计数 注意 : 当对符号数操作时, 仅有 BREQ( 相等跳转 ) 和 BRNE( 不相等跳转 ) 指令有效 ; 当对 2 进制补码值进行操作时, 所有的带符号跳转指令都有效 Rd Rd 1,PC PC d dddd 1010 S V N 和 Z 取反码和补码指令 ATmega128(L) 的取反码和补码指令如表 3.8 所示 表 3.8 取反码和补码指令 COM Rd 0 d 31 取反码指令 该指令完成对寄存器 Rd 中的值的二进制反码操作 Rd $FF Rd,PC PC d dddd 0000 S V(0) N Z 和 C(1) 9

10 NEG Rd 0 d 31 取补码指令 将寄存器 Rd 中的值用它的二进制补码取代 Rd $00 Rd,PC PC d dddd 0001 H S V N Z 和 C 乘法指令 ATmega128(L) 的乘法指令有 : 符号数乘法指令 有符号数乘法指令 有符号数与符号数乘法指令 符号小数乘法指令 有符号小数乘法指令及有符号小数和符号小数乘法指令, 具体如表 3.9 所示 表 3.9 乘法指令 MUL Rd,Rr 0 d,r 31 符号数乘法指令 这条指令实现了 8 位符号数 8 位符号数 16 位的符号数乘法 寄存器 Rd 中的被乘数和寄存器 Rr 中的乘数是两个符号数 ;16 位的积被放在 R1 ( 高字节 ) 和 R0( 低字节 ) 中 注意, 如果选定 R0 或 R1 中的值作为被乘数或乘数, 运算后的结果将会覆盖掉它们原来的值 即 : Rd Rr R1:R0 8 位被乘数 Rd 8 位乘数 Rr 积的高字节 R1: 积的低字节 R0(16 位 ) R1:R0 Rd Rr,PC PC rd dddd rrrr Z 和 C MULS Rd,Rr 16 d,r 31 有符号数乘法指令 这条指令实现了 8 位有符号数 8 位有符号数 16 位的有符号数乘法 寄存器 Rd 中的被乘数和寄存器 Rr 中的乘数是两个有符号数 ;16 位的积被放在 R1 ( 高字节 ) 和 R0( 低字节 ) 中 即 : Rd Rr R1:R0 8 位被乘数 Rd 8 位乘数 Rr 积的高字节 R1: 积的低字节 R0(16 位 ) R1:R0 Rd Rr,PC PC dddd rrrr Z 和 C 有符号数与符 MULSU Rd,Rr 16 d,r 23 这条指令实现了 8 位有符号数 8 位符号数 16 位的有符号数和符号数相乘 寄存器 Rd 中的被乘数是有符号数, 寄存器 Rr 中的乘数是符号数 16 位的结果保存在 R1( 高字节 ) 和 R0( 低字节 ) 中 即 : Rd Rr R1:R0 8 位被乘数 Rd 8 位乘数 Rr 积的高字节 R1: 积的低字节 R0(16 位 ) 10

11 号数乘法指令 R1:R0 Rd Rr,PC PC ddd 0rrr Z 和 C FMUL Rd,Rr 16 d,r 23 符号小数乘法指令 该指令完成寄存器 Rd 中的值 (8 位符号数 ) 和寄存器 Rr 中的值 (8 位符号数 ) 的内容相乘操作, 结果为 16 位的带符号数, 并将结果左移一位后保存在 R1:R0 中 R1 为高 8 位,R0 为低 8 位 被乘数 Rd 和乘数 Rr 是两个包含符号定点小数的寄存器, 小数点定位在第 7 位和第 6 位之间 结果为 16 位符号定点小数, 置于 R1( 高位 ) 和 R0( 低位 ) 之间, 其小数点固定在第 14 位和第 15 位之间 即, Rd Rr R1:R0 8 位被乘数 Rd 8 位乘数 Rr 积的高字节 R1: 积的低字节 R0(16 位 ) R1:R0 Rd Rr,PC PC ddd 1rrr Z 和 C FMUL Rd,Rr 16 d,r 23 有符号小数乘法指令 该指令完成寄存器 Rd 中的值 (8 位有符号数 ) 和寄存器 Rr 中的值 (8 位有符号数 ) 的内容相乘操作, 结果为 16 位的有符号数, 并将结果左移一位后保存在 R1:R0 中 R1 为高 8 位,R0 为低 8 位 被乘数 Rd 和乘数 Rr 是两个包含符号定点小数的寄存器, 小数点定位在第 7 位和第 6 位之间 结果为 16 位符号定点小数, 置于 R1( 高位 ) 和 R0( 低位 ) 之间, 其小数点固定在第 14 位和第 15 位之间 即, Rd Rr R1:R0 8 位被乘数 Rd 8 位乘数 Rr 积的高字节 R1: 积的低字节 R0(16 位 ) R1:R0 Rd Rr,PC PC ddd 0rrr Z 和 C 有符号小数和符号小数乘法指令 FMULSU Rd,Rr 16 d,r 23 该指令完成寄存器 Rd 中的值 (8 位带符号数 ) 和寄存器 Rr 中的值 (8 位符号数 ) 的内容相乘操作, 结果为 16 位的带符号数, 并将结果左移一位后保存在 R1:R0 中 R1 为高 8 位,R0 为低 8 位 被乘数 Rd 是一个带符号的定点小数, 乘数 Rr 是一个符号的定点小数, 而且小数点都定位在第 7 位和第 6 位之间 结果为 16 位符号定点小数, 置于 R1( 高位 ) 和 R0( 低位 ) 之间, 其小数点固定在第 14 位和第 15 位之间 即, Rd Rr R1:R0 8 位被乘数 Rd 8 位乘数 Rr 积的高字节 R1: 积的低字节 R0(16 位 ) R1:R0 Rd Rr,PC PC ddd 1rrr Z 和 C 11

12 (N.Q) 表示一个小数点左边有 N 个二进制数位 右边有 Q 个二进制数位的小数 以 (N1.Q1) 注意 和 (N2.Q2) 为格式的两个小数相乘, 产生格式为 ((N1+N2).(Q1+Q2)) 的结果 对于要有效保留小数位的处理应用, 输入的数据通常采用 (1.7) 的格式, 产生的结果为 (2.14) 的格式 因此将结果左移一位, 以使高字节的格式与输入的一致 FMUL 指令的执行周期与 MUL 指令相同, 但比 MUL 增加了左移操作 逻辑与指令 ATmega128(L) 的逻辑与指令有 : 寄存器逻辑与指令 与立即数指令 寄存器位清零指令和测试寄存器为 0 或负指令, 具体如表 3.10 所示 表 3.10 逻辑与指令 寄存器逻辑与指令 AND Rd,Rr 0 d,r 31 寄存器 Rd 和寄存器 Rr 中的值进行逻辑与运算, 结果送入目的寄存器 Rd Rd Rd Rr,PC PC rd dddd rrrr S V(0) N 和 Z ANDI Rd,K 16 d 31,0 K 255 与立即数指令 寄存器 Rd 中的值与常数 K 进行逻辑与运算, 结果送入目的寄存器 Rd Rd Rd K,PC PC KKKK dddd KKKK S V(0) N 和 Z CBR Rd,K 16 d 31,0 K 255 寄存器位清零指令 清除寄存器 Rd 中的指定位, 利用寄存器 Rd 的内容与常数表征码 K 的补码相与, 其结果送入寄存器 Rd 中 Rd Rd ($FF K),PC PC MMMM dddd MMMM S V(0) N 和 Z 测试寄存器为 0 或负 TST Rd 0 d 31 检测寄存器是否为零或负数, 执行了寄存器 Rd 中的值和它本身的逻辑与 该指令只影响标志位而寄存器的内容将保持不变 Rd Rd Rd,PC PC dd dddd dddd S V(0) N 和 Z 12

13 指令 注意 MMMM 为 KKKK 的补码 下面内容如未加说明,MMMM 均表示为 KKKK 的补码 逻辑或指令 ATmega128(L) 的逻辑或指令有 : 寄存器逻辑或指令 或立即数指令 寄存器位置位指令和置位寄存器中的所有位指令, 具体如表 3.11 所示 表 3.11 逻辑或指令 寄存器逻辑或指令 或立即数指令 寄存器位置位指令 置位寄存器中的所有位指令 OR Rd,Rr 0 d,r 31 寄存器 Rd 和寄存器 Rr 中的值进行逻辑或运算, 结果送入目的寄存器 Rd 中 Rd Rd v Rr,PC PC rd dddd rrrr S V(0) N 和 Z ORI Rd,K 16 d 31,0 K 255 寄存器 Rd 中的值与立即数 K 进行逻辑或运算, 结果送入目的寄存器 Rd 中 Rd Rd v K,PC PC KKKK dddd KKKK S V(0) N 和 Z SBR Rd,K 16 d 31,0 K 255 通过寄存器 Rd 中的值与常数表征码 K 相或来置位寄存器 Rd 中的指定位 Rd Rd v K,PC PC KKKK dddd KKKK S V(0) N 和 Z SER Rd 16 d 31 通过寄存器 Rd 中的值与常数 $FF 相或来置位寄存器 Rd 中的所有位 Rd Rd v $FF,PC PC dddd 逻辑异或指令 ATmega128(L) 的逻辑异或指令有 : 寄存器异或指令和寄存器清零指令, 具体如表 3.12 所示 表 3.12 逻辑异或指令 寄存 EOR Rd,Rr 0 d,r 31 寄存器 Rd 和 Rr 中的值进行逻辑异或 (EOR) 运算, 并将结果送入目的寄存器 Rd 中 13

14 器异或指令 寄存器清零指令 Rd Rd Rr,PC PC rd dddd rrrr S V(0) N 和 Z CLR Rd 0 d 31 寄存器 Rd 中的值与自己相异或, 从而清零寄存器 Rd 中的所有位 Rd Rd Rd,PC PC dd dddd dddd S(0) V(0) N(0) 和 Z(1) 3.4 比较和转移指令 比较指令 ATmega128(L) 的比较指令有 : 寄存器比较指令 带进位位比较指令和与立即数比较指令, 具体如表 3.13 所示 寄存器比较指令 带进位位比较指令 与立即数比较指令 表 3.13 比较指令 CP Rd,Rr 0 d,r 31 两个寄存器 Rd 和 Rr 中的值作比较, 而寄存器的内容不改变 该指令后能使用所有条件跳转指令 Rd Rr,PC PC rd dddd rrrr H S V N Z 和 C CPC Rd,Rr 0 d,r 31 寄存器 Rd 中的值与寄存器 Rr 中的值和进位标志位 C 的值的和作比较, 而寄存器的内容不改变 该指令后能使用所有条件跳转指令 Rd Rr C,PC PC rd dddd rrrr H S V N Z 和 C CPI Rd,K 16 d 31,0 K 255 寄存器 Rd 中的值与立即数 K 作比较, 而寄存器的内容不改变 该指令后能使用所有条件跳转指令 Rd K,PC PC KKKK dddd KKKK H S V N Z 和 C 条件转移指令 14

15 ATmega128(L) 的条件转移指令有 : 相对跳转指令 间接跳转指令和直接跳转指令, 具体如表 3.14 所示 表 3.14 条件转移指令 RJMP k 2048 k 2048 相对跳转指令 间接跳转指令 直接跳转指令 相对跳转到 PC 2K+1~PC+2K( 字 ) 范围内的地址 在汇编语言程序中, 标号常被用来代替 k 作为该指令的操作数 PC PC+k kkkk kkkk kkkk IJMP 间接跳转到由指针寄存器 Z 中的值作为 16 位地址的地址单元 该数 PC Z(15:0) JMP k 0 k 指令周期 3 直接跳转到指定的地址 ( 可达整个的 4M 字的程序存储器 ) 处 在汇编语言程序中, 标号常被用来代替 k 作为该指令的操作数 PC k k kkkk 110k kkkk kkkk kkkk kkkk 4 个字节 条件转移指令 ATmega128(L) 的条件转移指令, 如表 3.15 所示, 指的是根据某个特定条件, 程序决定是否转移到别处执行的一类指令 当此特殊条件满足时, 程序转移 ; 否则程序顺序执行下一条指令 表 3.15 SREG(s) 为 1 转移指令 SREG(s) 为 1 转移指令 SREG(s) 为 0 转移指令 条件转移指令 BRBS s,k 0 s 7, 64 k 63 执行该指令时,PC 先加 1, 再测试 SREG 中的第 s 位, 当该位被置位时, 则转移 k 个字 (k 为 7 位带符号数 ), 最多可向前转移 63 个字, 向后转移 64 个字 ; 否则顺序执行 在汇编语言程序中, 标号常被用来代替 k 作为该指令的操作数 If SREG(s)=1 then PC PC+k+1, else PC PC kk kkkk ksss ( 条件为假 );2( 条件为真 ) BRBC s,k 0 s 7, 64 k 63 执行该指令时,PC 先加 1, 再测试 SREG 中的第 s 位, 当该位被清零时, 则转移 k 个字 (k 为 7 位带符号数 ), 最多可向前转移 63 个字, 向后转移 64 个字 ; 否则顺序执行 在汇编语言程序中, 标号常被用来代替 k 作为该指令的操作数 15

16 相等转移指令 不相等转移指令 进位标志位 C 为 1 转移指令 进位标志位 C 为 1 转移指令 进位标志位 C 为 0 转移指令 符号数大于或等于转移指令 If SREG(s)=0 then PC PC+k+1, else PC PC kk kkkk ksss ( 条件为假 );2( 条件为真 ) BREQ k 64 k 63 如果在执行指令 CP CPI SUB 或 SUBI 后, 立即执行该指令将检查零标志位 Z, 如果 Z 位被置位 ( 即寄存器 Rd 中数与寄存器 Rr 中的值相等 ), 则程序相对当前 PC 值转移 k+1 个字 (k 为 7 位带符号数 ), 最多可向前转移 63 个字, 向后转移 64 个字 ; 否则程序将顺序执行 该指令相当于 BRBS 1,k If Rd=Rr (Z=1) then PC PC+k+1, else PC PC kk kkkk k001 ( 条件为假 );2( 条件为真 ) BRNE k 64 k 63 如果在执行指令 CP CPI SUB 或 SUBI 后, 立即执行该指令将检查零标志位 Z, 如果 Z 位被清零 ( 即寄存器 Rd 中数与寄存器 Rr 中的值不相等 ), 则程序相对当前 PC 值转移 k+1 个字 (k 为 7 位带符号数 ), 最多可向前转移 63 个字, 向后转移 64 个字 ; 否则程序将顺序执行 该指令相当于 BRBC 1,k If Rd Rr (Z=0) then PC PC+k+1, else PC PC kk kkkk k001 ( 条件为假 );2( 条件为真 ) BRCS k 64 k 63 检查进位标志位 C, 如果 C 位被置位, 则程序相对当前 PC 值转移 k+1 个字 (k 为 7 位带符号数 ), 最多可向前转移 63 个字, 向后转移 64 个字 该指令相当于 BRBS 0,k If C=1 then PC PC+k+1, else PC PC kk kkkk k000 ( 条件为假 );2( 条件为真 ) BRCC k 64 k 63 检查进位标志位 C, 如果 C 位被清零, 则程序相对当前 PC 值转移 k+1 个字 (k 为 7 位带符号数 ), 最多可向前转移 63 个字, 向后转移 64 个字 该指令相当于 BRBC 0,k If C=0 then PC PC+k+1, else PC PC kk kkkk k000 ( 条件为假 );2( 条件为真 ) BRSH k 64 k 63 如果在执行指令 CP CPI SUB 或 SUBI 后, 立即执行该指令将检查进位标志位 C, 如果 C 位被清零 ( 即寄存器 Rd 中的符号数大于或等于寄存器 Rr 中的符号数 ), 则程序相对当前 PC 值转移 k+1 个字 (k 为 7 位带符号数 ), 最多可向前转移 63 个字, 向后转移 64 个字 ; 否则程序将顺序执行 该指令相当于指令 BRBC 0,k If Rd Rr(C=0) then PC PC+k+1, else PC PC+1 16

17 符号数小于转移指令 结果为负跳转指令 结果为负跳转指令 结果为正跳转指令 有符号数大于或等于转移指令 有符号数小于转移指令 kk kkkk k000 ( 条件为假 );2( 条件为真 ) BRLO k 64 k 63 如果在执行指令 CP CPI SUB 或 SUBI 后, 立即执行该指令将检查进位标志位 C, 如果 C 位被置位 ( 即寄存器 Rd 中的符号数小于寄存器 Rr 中的符号数 ), 则程序相对当前 PC 值转移 k+1 个字 (k 为 7 位带符号数 ), 最多可向前转移 63 个字, 向后转移 64 个字 ; 否则程序将顺序执行 该指令相当于指令 BRBS 0,k If Rd<Rr(C=1) then PC PC+k+1, else PC PC kk kkkk k000 ( 条件为假 );2( 条件为真 ) BRMI k 64 k 63 检查负号标志位 N, 如果 N 位被置位, 则程序相对当前 PC 值转移 k+1 个字 (k 为 7 位带符号数 ), 最多可向前转移 63 个字, 向后转移 64 个字 ; 否则程序将顺序执行 该指令相当于指令 BRBS 2,k If N=1 then PC PC+k+1, else PC PC kk kkkk k010 ( 条件为假 );2( 条件为真 ) BRPL k 64 k 63 检查负号标志位 N, 如果 N 位被清零, 则程序相对当前 PC 值转移 k+1 个字 (k 为 7 位带符号数 ), 最多可向前转移 63 个字, 向后转移 64 个字 ; 否则程序将顺序执行 该指令相当于指令 BRBC 2,k If N=0 then PC PC+k+1, else PC PC kk kkkk k010 ( 条件为假 );2( 条件为真 ) BRGE k 64 k 63 如果在执行指令 CP CPI SUB 或 SUBI 后, 立即执行该指令将检查进位标志位 S, 如果 S 位被清零 ( 即寄存器 Rd 中的有符号数大于或等于寄存器 Rr 中的有符号数 ), 则程序相对当前 PC 值转移 k+1 个字 (k 为 7 位带符号数 ), 最多可向前转移 63 个字, 向后转移 64 个字 ; 否则程序将顺序执行 该指令相当于指令 BRBC 4,k If Rd Rr(S=0) then PC PC+k+1, else PC PC kk kkkk k100 ( 条件为假 );2( 条件为真 ) BRLT k 64 k 63 如果在执行指令 CP CPI SUB 或 SUBI 后, 立即执行该指令将检查进位标志位 S, 如果 S 位被置位 ( 即寄存器 Rd 中的有符号数小于寄存器 Rr 中的有符号数 ), 则程序相对当前 PC 值转移 k+1 个字 (k 为 7 位带符号数 ), 最多可向前转移 63 个字, 向后转移 64 个字 ; 否则程序将顺序执行 该指令相当于指令 BRBS 4,k If Rd<Rr(S=1) then PC PC+k+1, else PC PC+1 17

18 半进位标志位 H 为 1 转移指令 半进位标志位 H 为 0 转移指令 标志位 T 为 1 转移指令 标志位 T 为 0 转移指令 标志位 V 为 1 转移指令 kk kkkk k100 ( 条件为假 );2( 条件为真 ) BRHS k 64 k 63 检查半进位标志位 H, 如果 H 位被置位, 则程序相对当前 PC 值转移 k+1 个字 (k 为 7 位带符号数 ), 最多可向前转移 63 个字, 向后转移 64 个字 该指令相当于 BRBS 5,k If H=1 then PC PC+k+1, else PC PC kk kkkk k101 ( 条件为假 );2( 条件为真 ) BRHC k 64 k 63 检查半进位标志位 H, 如果 H 位被清零, 则程序相对当前 PC 值转移 k+1 个字 (k 为 7 位带符号数 ), 最多可向前转移 63 个字, 向后转移 64 个字 该指令相当于 BRBC 5,k If H=0 then PC PC+k+1, else PC PC kk kkkk k101 ( 条件为假 );2( 条件为真 ) BRTS k 64 k 63 检查标志位 T, 如果 T 位被置位, 则程序相对当前 PC 值转移 k+1 个字 (k 为 7 位带符号数 ), 最多可向前转移 63 个字, 向后转移 64 个字 该指令相当于 BRBS 6,k If T=1 then PC PC+k+1, else PC PC kk kkkk k110 ( 条件为假 );2( 条件为真 ) BRTC k 64 k 63 检查标志位 T, 如果 T 位被清零, 则程序相对当前 PC 值转移 k+1 个字 (k 为 7 位带符号数 ), 最多可向前转移 63 个字, 向后转移 64 个字 该指令相当于 BRBC 6,k If T=0 then PC PC+k+1, else PC PC kk kkkk k110 ( 条件为假 );2( 条件为真 ) BRVS k 64 k 63 检查标志位 V, 如果 V 位被置位, 则程序相对当前 PC 值转移 k+1 个字 (k 为 7 位带符号数 ), 最多可向前转移 63 个字, 向后转移 64 个字 该指令相当于 BRBS 3,k If V=1 then PC PC+k+1, else PC PC kk kkkk k011 ( 条件为假 );2( 条件为真 ) 18

19 标志位 V 为 0 转移指令 标志位 V 为 0 转移指令 标志位 I 为 1 转移指令 标志位 I 为 0 转移指令 相等跳行指令 寄存器位为 0 跳行指令 寄存器位为 1 跳行指令 BRVC k 64 k 63 检查标志位 V, 如果 V 位被清零, 则程序相对当前 PC 值转移 k+1 个字 (k 为 7 位带符号数 ), 最多可向前转移 63 个字, 向后转移 64 个字 该指令相当于 BRBC 3,k If V=0 then PC PC+k+1, else PC PC kk kkkk k011 ( 条件为假 );2( 条件为真 ) BRIE k 64 k 63 检查标志位 I, 如果 I 位被置位, 则程序相对当前 PC 值转移 k+1 个字 (k 为 7 位带符号数 ), 最多可向前转移 63 个字, 向后转移 64 个字 该指令相当于 BRBS 7,k If I=1 then PC PC+k+1, else PC PC kk kkkk k111 ( 条件为假 );2( 条件为真 ) BRID k 64 k 63 检查标志位 I, 如果 I 位被清零, 则程序相对当前 PC 值转移 k+1 个字 (k 为 7 位带符号数 ), 最多可向前转移 63 个字, 向后转移 64 个字 该指令相当于 BRBC 7,k If I=0 then PC PC+k+1, else PC PC kk kkkk k111 ( 条件为假 );2( 条件为真 ) CPSE Rd,Rr 0 d,r 31 指令周期 该指令完成两个寄存器 Rd 和 Rr 中的值的比较 若两个值相等, 则程序跳过下一条指令执行指令 If Rd=Rr then PC PC+2 (or 3) else PC PC rd dddd rrrr 1( 条件为假 );2( 条件为真, 跳过 1 个字的指令执行 );3( 条件为真, 跳过 2 个字的指令执行 ) SBRC Rr,b 0 r 31,0 b 7 指令周期 测试寄存器的某一位, 如果这一位为 0 则跳过下一条指令 If Rr(b)=0 then PC PC+2 (or 3) else PC PC r rrrr 0bbb 1( 条件为假 );2( 条件为真, 跳过 1 个字的指令执行 );3( 条件为真, 跳过 2 个字的指令执行 ) SBRS Rr,b 0 r 31,0 b 7 测试寄存器的某一位, 如果这一位为 1 则跳过下一条指令 If Rr(b)=1 then PC PC+2 (or 3) else PC PC r rrrr 0bbb 19

20 I/O 寄存器位为 0 跳行指令 I/O 寄存器位为 1 跳行指令 指令周期 1( 条件为假 );2( 条件为真, 跳过 1 个字的指令执行 );3( 条件为真, 跳过 2 个字的指令执行 ) SBIC P,b 0 P 31,0 b 7 指令周期 测试 I/O 寄存器的某一位, 如果这一位为 0 则跳过下一条指令 该指令只适合低 32 个 I/O 寄存器 ( 即 I/O 寄存器地址为 0~31), 其地址为地址空间的 0~31 If P(b)=0 then PC PC+2 (or 3) else PC PC PPPP Pbbb 1( 条件为假 );2( 条件为真, 跳过 1 个字的指令执行 );3( 条件为真, 跳过 2 个字的指令执行 ) SBIS P,b 0 P 31,0 b 7 指令周期 测试 I/O 寄存器的某一位, 如果这一位为 1 则跳过下一条指令 该指令只适合低 32 个 I/O 寄存器 ( 即 I/O 寄存器地址为 0~31), 其地址为地址空间的 0~31 If P(b)=1 then PC PC+2 (or 3) else PC PC PPPP Pbbb 1( 条件为假 );2( 条件为真, 跳过 1 个字的指令执行 );3( 条件为真, 跳过 2 个字的指令执行 ) 子程序调用与返回指令 ATmega128(L) 的子程序调用与返回指令有 : 相对调用指令 间接调用指令 直接调用指令 子程序返回指令和中断服务程序返回指令, 具体如表 3.16 所示 表 3.16 子程序调用与返回指令 RCALL k 2048 k 2047 相对调用指令 相对调用指令 间接调用指令 调用位于地址 PC 2047 到 PC+2048( 字 ) 处的子程序 子程序调用之前, 返回地址 ( 即 RCALL 后面那条指令的地址 ) 保存到堆栈当中 在汇编语言程序中, 标号常被用来代替 k 作为该指令的操作数 STACK PC+1,SP SP 2,PC PC+1+k 1101 kkkk kkkk kkkk 指令周期 3 ICALL 间接调用由 Z 寄存器中的值作为地址的子程序 由于地址指针寄存器 Z 为 16 位, 允许调用在当前程序存储空间 64K 字 (128KB) 内的子程序 子程序调用之前, 返回地址 ( 即 RCALL 后面那条指令的地址 ) 保存到堆栈当中 STACK PC+1,SP SP 2,PC Z 指令周期 3 20

21 CALL k 0 k 直接调用指令 子程序返回指令 中断服务程序返回指令 指令周期 4 先将 PC+2 后的值 ( 即指令 CALL 后的下一条指令地址 ) 压入堆栈, 然后直接调用地址 k 处的子程序 STACK PC+2,SP SP 2,PC k k kkkk 111k kkkk kkkk kkkk kkkk 4 个字节 RET 从子程序返回, 返回地址从堆栈中弹出 SP SP+2,PC STACK 指令周期 4 RETI 从中断服务程序中返回, 返回地址从堆栈中弹出, 且全局中断使能 SP SP+2,PC STACK 指令周期 数据传输指令 ATmega128(L) 的数据传输指令主要有三大类 : 直接数据传输指令 间接数据传输指令和与程序存储器有关的数据传输指令 它们是在使用汇编语言编程时使用最频繁的一类指令 注意 : 所有的数据传输指令对标志位都没有影响 直接数据传输指令 ATmega128(L) 的直接数据传输指令有 : 工作寄存器间传输数据指令 SRAM 数据直接送寄存器指令 寄存器数据直接送 SRAM 指令和立即数送寄存器指令, 具体如表 3.17 所示 表 3.17 直接数据传输指令 MOV Rd,Rr 0 d,r 31 工作寄存器间传输数据指令 SRAM 数据直接送寄存器指令 将寄存器 Rr 中的值送入寄存器 Rd 中, 并且寄存器 Rr 中的值不变 Rd Rr,PC PC rd dddd rrrr LDS Rd,k 0 d 31,0 k 把 SRAM 中一个存储单元 ( 地址由 16 位数 k 决定 ) 中的值 (1 个字节 ) 送入寄存器 Rd 中 21

22 寄存器数据直接送 SRAM 指令 立即数送寄存器指令 Rd (k),pc PC d dddd 0000 kkkk kkkk kkkk kkkk 4 个字节 STS k,rr 0 r 31,0 k 把寄存器 Rr 中的值 (1 个字节 ) 送入 SRAM 中一个存储单元 ( 地址由 16 位数 k 决定 ) 中 (k) Rr,PC PC d dddd 0000 kkkk kkkk kkkk kkkk 4 个字节 LDI Rd,K 16 d 31,0 K 255 把一个 8 位立即数 K 送入寄存器 Rd 中 Rd K,PC PC KKKK dddd KKKK 间接数据传输指令 ATmega128(L) 的间接数据传输指令有 : 使用地址指针寄存器 X 间接寻址传输数据指令 使用地址指针寄存器 Y 间接寻址传输数据指令和使用地址指针寄存器 Z 间接寻址传输数据指令 其中, 使用地址指针寄存器 X 间接寻址将 SRAM 数据送入到寄存器的指令如表 3.18 所示 ; 使用地址指针寄存器 X 间接寻址将寄存器中的数据送入 SRAM 中的指令如表 3.19 所示 表 3.18 使用地址指针寄存器 X 间接寻址将 SRAM 数据送入到寄存器的指令 LD Rd,X 0 d 31 将 SRAM 中的存储单元 ( 地址由地址指针寄存器 X 中的值决定 ) 的数据 (1 个字节 ) 送入寄存器 Rd 中, 地址指针寄存器 X 中的值不变 1 Rd (X),PC PC d dddd 1100 LD Rd,X+ 0 d 31 先将 SRAM 中的存储单元 ( 地址由地址指针寄存器 X 中的值决定 ) 的数据 (1 个字节 ) 送入寄存器 Rd 中, 再将地址指针寄存器 X 中的值加 1 2 Rd (X),X X+1,PC PC d dddd

23 LD Rd, X 0 d 31 先将地址指针寄存器 X 中的值减 1, 再将 SRAM 中的存储单元 ( 地址由地址指针寄存器 X 中的值决定 ) 的数据 (1 个字节 ) 送入寄存器 Rd 中 3 X X 1,Rd (X),PC PC r rrrr 1110 表 3.19 使用地址指针寄存器 X 间接寻址将寄存器中的数据送入 SRAM 中的指令 ST X,Rr 0 r 31 1 将寄存器 Rr 中的数据 (1 个字节 ) 送入 SRAM 中的存储单元 ( 地址由地址指针寄存器 X 中的值决定 ), 地址指针寄存器 X 中的值不变 (X) Rr,PC PC r rrrr ST X+,Rr 0 r 31 先将寄存器 Rr 中的数据 (1 个字节 ) 送入 SRAM 中的存储单元 ( 地址由地址指针寄存器 X 中的值决定 ), 再将地址指针寄存器 X 中的值加 1 (X) Rr,X X+1,PC PC r rrrr 1101 ST X,Rr 0 r 31 先将地址指针寄存器 X 中的值减 1, 再将寄存器 Rr 中的数据 (1 个字节 ) 送入 SRAM 中的存储单元 ( 地址由地址指针寄存器 X 中的值决定 ) X X 1,(X) Rr,PC PC r rrrr 1110 对于使用地址指针寄存器 Y 间接寻址传输数据指令和使用地址指针寄存器 Z 间接寻址传输数据指令, 有一部分指令与使用地址指针寄存器 X 时的情形基本相同, 只需将上述六条指令中的 X 换为 Y 或 Z 即可, 所不同的是相关指令对应的机器码不同, 如表 3.20 所示 表 3.20 使用地址指针寄存器 Y 或 Z 间接寻址传输数据指令对应的机器码 指 令 指令对应的机器码 指 令 指令对应的机器码 LD Rd,Y d dddd 1000 LD Rd,Z d dddd 0000 LD Rd,Y d dddd 1001 LD Rd,Z d dddd 0001 LD Rd, Y d dddd 1010 LD Rd, Z d dddd 0010 ST Y,Rr r rrrr 1000 ST Z,Rr r rrrr 0000 ST Y+,Rr r rrrr 1001 ST Z +,Rr r rrrr 0001 ST Y,Rr r rrrr 1010 ST Z,Rr r rrrr

24 使用地址指针寄存器 Y 间接寻址传输数据指令和使用地址指针寄存器 Z 间接寻址传输数据指令中与使用地址指针寄存器 X 时的指令不同的指令如表 3.21 所示 表 3.21 使用地址指针寄存器 Y( 或 Z) 间接寻址的部分指令 ( 与使用 X 时不同 ) LDD Rd,Y(or Z)+q 0 d 31,0 q 63 将 SRAM 中的存储单元的数据 (1 个字节 ) 送入寄存器 Rd 中, 存储单元的地址由地址指针寄存器 Y 或 Z 中的值和 q 共同决定, 地址指针寄存器 Y 或 Z 中的值不变 Rd (Y or Z+q),PC PC+1 10q0 qq0d dddd 1qqq( 使用 Y 时 ) 或 10q0 qq0d dddd 0qqq( 使用 Z 时 ) STD Y(or Z)+q,Rr 0 r 31,0 q 63 将寄存器 Rr 中的数据 (1 个字节 ) 送入 SRAM 中的存储单元, 存储单元的地址由地址指针寄存器 Y 或 Z 中的值和 q 共同决定, 地址指针寄存器 Y 或 Z 中的值不变 (Y or Z+q) Rd,PC PC+1 10q0 qq1r rrrr 1qqqq( 使用 Y 时 ) 或 10q0 qq1r rrrr 0qqq( 使用 Z 时 ) 注意 在访问矩阵表或堆栈指针时要经常用到上述 22 条指令 与程序存储器有关的数据传输指令 ATmega128(L) 中与程序存储器有关的数据传输指令有 : 程序存储器数据送入寄存器 R0 指令 程序存储器数据送入寄存器指令 带后增量的程序存储器数据送入寄存器指令 扩展的程序存储器数据送入寄存器 R0 指令 扩展的程序存储器数据送入寄存器指令 扩展的带后增量的程序存储器数据送入寄存器指令和写程序存储器指令, 具体如表 3.22 所示 程序存储器数据送入寄存器 R0 指令 程序存储器数据送入寄存器指令 LPM 将程序存储器空间的一个存储单元中的数据 ( 一个字节 ) 送入寄存器 R0 中 存储单元的地址由 16 位地址指针寄存器 Z 中的值决定, 寄存器 Z 的高 15 位为程序存储器的字地址 ( 第 16 位地址第 16 位为 0) 寄存器 Z 中的最低位 LSB 为 0 时, 存储单元数据的低字节送 R0 中 ; 为 1 时, 存储单元数据的高字节送 R0 中 该指令能寻址程序存储器空间为一个 64KB 的页 (32K 字 ) R0 (Z),PC PC 指令周期 3 LPM Rd,Z 0 d 31 将程序存储器空间的一个存储单元中的数据 ( 一个字节 ) 送入寄存器 Rd 中 存储单元的地址由 16 位地址指针寄存器 Z 中的值决定, 寄存器 Z 的高 15 位为程序存储器的字地址 ( 第 16 位地址第 16 位为 0) 寄存器 Z 中的最低位 LSB 为 0 时, 存储单元数据的低字节送 Rd 中 ; 为 1 时, 存储单元数据的高字节送 Rd 中 该指令能寻址程序存储器空间为一个 64KB 的页 (32K 字 ) 24

25 程序存储器数据送入寄存器指令 滞后增量的程序存储器数据送入寄存器指令 扩展的程序存储器数据送入寄存器 R0 指令 扩展的程序存储器数据送入寄存器指令 扩展的滞后增量的程序存储器数据送入寄存器指令 Rd (Z),PC PC d dddd 0100 指令周期 3 LPM Rd,Z+ 0 d 31 先将程序存储器空间的一个存储单元 ( 地址由寄存器 Z 中的值决定 ) 中的数据 ( 一个字节 ) 送入寄存器 Rd 中, 然后寄存器 Z 中的值加 1 存储单元的地址由 16 位地址指针寄存器 Z 中的值决定, 寄存器 Z 的高 15 位为程序存储器的字地址 ( 第 16 位地址第 16 位为 0) 寄存器 Z 中的最低位 LSB 为 0 时, 存储单元数据的低字节送 Rd 中 ; 为 1 时, 存储单元数据的高字节送 Rd 中 该指令能寻址程序存储器空间为一个 64KB 的页 (32K 字 ) Rd (Z),Z Z+1,PC PC d dddd 0101 指令周期 3 ELPM 将程序存储器空间的一个存储单元中的数据 ( 一个字节 ) 送入寄存器 R0 中 存储单元的地址由 16 位地址指针寄存器 Z 和寄存器 RAMPZ 共同决定, 寄存器 Z 的高 15 位为程序存储器的字地址的低 15 位, 第 16 位地址为寄存器 RAMPZ 中最低位 寄存器 Z 的最低位 LSB 为 0 时, 存储单元数据的低字节送 R0 中 ; 为 1 时, 存储单元数据的高字节送 R0 中 该指令能寻址整个 128KB(64K 字 ) 的程序存储器空间 R0 (RAMPZ:Z),PC PC 指令周期 3 ELPM Rd,Z 0 d 31 将程序存储器空间的一个存储单元中的数据 ( 一个字节 ) 送入寄存器 Rd 中 存储单元的地址由 16 位地址指针寄存器 Z 和寄存器 RAMPZ 共同决定, 寄存器 Z 的高 15 位为程序存储器的字地址的低 15 位, 第 16 位地址为寄存器 RAMPZ 中最低位 寄存器 Z 的最低位 LSB 为 0 时, 存储单元数据的低字节送 Rd 中 ; 为 1 时, 存储单元数据的高字节送 Rd 中 该指令能寻址整个 128KB(64K 字 ) 的程序存储器空间 Rd (RAMPZ:Z),PC PC d dddd 0110 指令周期 3 LPM Rd,Z+ 0 d 31 先将程序存储器空间的一个存储单元中的数据 ( 一个字节 ) 送入寄存器 Rd 中, 然后寄存器 Z 中的值加 1 存储单元的地址由 16 位地址指针寄存器 Z 和寄存器 RAMPZ 共同决定, 寄存器 Z 的高 15 位为程序存储器的字地址的低 15 位, 第 16 位地址为寄存器 RAMPZ 中最低位 寄存器 Z 的最低位 LSB 为 0 时, 存储单元数据的低字节送 Rd 中 ; 为 1 时, 存储单元数据的高字节送 Rd 中 该指令能寻址整个 128KB(64K 字 ) 的程序存储器空间 d dddd 0111 Rd (RAMPZ:Z),RAMPZ:Z RAMPZ:Z+1,PC PC+1 25

26 写程序存储器指令 指令周期 3 SPM 将寄存器对 R1:R0 的数据 (16 位字 ) 写入程序存储器空间的存储单元中 ( 地址由寄存器 Z 中的值决定 ) 寄存器 R1 中保存写入数据的高字节 ; 寄存器 R0 中保存写入数据的低字节 该指令能寻址程序存储器空间为一个 64KB 的页 (32K 字 ) (Z) R1:R0,PC PC 指令周期 取决于具体操作 I/O 口数据传输指令 ATmega128(L) 的 I/O 口数据传输指令有 :I/O 口数据送入寄存器指令和寄存器数据送 I/O 口指令, 具体如表 3.23 所示 表 3.23 I/O 口数据传输指令 I/O 口数据送入寄存器指令 寄存器数据送 I/O 口指令 IN Rd,P 0 d 31,0 P 63 将 I/O 空间 ( 包括端口 定时器 相关的配置寄存器等 ) 的数据传送入寄存器 Rd 中 Rd P,PC PC PPd dddd PPPP OUT P,Rr 0 r 31,0 P 63 将寄存器 Rr 中的数据送到 I/O 空间 ( 包括端口 定时器 相关的配置寄存器等 ) 中 P Rr,PC PC PPr rrrr PPPP 堆栈操作指令 ATmega128(L) 的堆栈操作指令有 : 进栈指令和出栈指令, 具体如表 3.24 所示 表 3.24 堆栈操作指令 PUSH Rd 0 d 31 进栈指令 出栈 将寄存器 Rd 中的值送入堆栈中 STACK Rr,SP SP 1,PC PC d dddd 1111 P POP Rd 0 d 31 将堆栈中的值送入寄存器 Rd 中 26

27 指令 SP SP+1,Rd STACK,PC PC d dddd 位操作指令 在 ATmega128(L) 中, 有 1/4 的指令都是与位操作有关的 这些位操作指令主要有三大类 : 带进位的位操作指令 位变量传输指令和位变量修改指令 带进位的位操作指令 ATmega128(L) 的带进位的位操作指令有 : 寄存器逻辑左移指令 寄存器逻辑右移指令 带进位位的寄存器逻辑循环左移指令 带进位位的寄存器逻辑循环右移指令 寄存器算术右移指令和寄存器半字节交换指令, 具体如表 3.25 所示 表 3.25 带进位的位操作指令 LSL Rd 0 d 31 寄存器逻辑左移指令 寄存器逻辑右移指令 带进位位的寄存器逻辑循环左移指令 带进位位的寄存器逻辑循环 寄存器 Rd 中的所有位左移 1 位, 第 0 位补 0, 第 7 位移入 SREG 中的标志位 C 中 该指令完成一个符号数乘 2 的操作 C b 7 b 6 b 5 b 4 b 3 b 2 b 1 b 0 0,PC PC dd dddd dddd H S V N Z 和 C LSR Rd 0 d 31 寄存器 Rd 中的所有位右移 1 位, 第 7 位补 0, 第 0 位移入 SREG 中的标志位 C 中 该指令完成一个符号数除以 2 的操作, 标志位 C 被用于结果舍入 0 b 7 b 6 b 5 b 4 b 3 b 2 b 1 b 0 C,PC PC d dddd 0110 S V N(0) Z 和 C ROL Rd 0 d 31 寄存器 Rd 的所有位左移 1 位, 标志位 C 移入寄存器 Rd 中的第 0 位, 寄存器 Rd 中的第 7 位移入标志位 C C b 7 b 6 b 5 b 4 b 3 b 2 b 1 b 0 C,PC PC dd dddd dddd H S V N Z 和 C ROR Rd 0 d 31 寄存器 Rd 的所有位右移 1 位, 标志位 C 移入寄存器 Rd 中的第 7 位, 寄存器 Rd 中的第 0 位移入标志位 C C b 7 b 6 b 5 b 4 b 3 b 2 b 1 b 0 C,PC PC d dddd

28 右移指令 寄存器算术右移指令 寄存器半字节交换指令 S V N Z 和 C ASR Rd 0 d 31 寄存器 Rd 中的所有位右移 1 位, 第 7 位保持原逻辑值不变, 第 0 位移入标志位 C 中 这个操作实现数的二进制补码值除 2, 而不改变符号, 标志位 C 用于结果的舍入 b 7 b 7 b 6 b 5 b 4 b 3 b 2 b 1 b 0 C,PC PC d dddd 0101 S V N Z 和 C SWAP Rd 0 d 31 寄存器 Rd 中的值的高半字节 ( 高 4 位 ) 和低半字节 ( 低 4 位 ) 交换 b 7 b 6 b 5 b 4 b 3 b 2 b 1 b 0,PC PC d dddd 位变量传输指令 ATmega128(L) 的位变量传输指令有 : 寄存器位的值送入标志位 T 指令和标志位 T 的值送入寄存器指定位指令, 具体如表 3.26 所示 表 3.26 位变量传输指令 BST Rd,b 0 d 31,0 b 7 寄存器位的值送入标志位 T 指令 标志位 T 的值送入寄存器中指定位指令 把寄存器 Rd 中的位 b 的值送入标志位 T 中 T Rr(b),PC PC d dddd 0bbb T BLD Rd,d 0 d 31,0 b 7 把标志位 T 的值送入寄存器 Rd 中的位 b 中 Rd(b) T,PC PC d dddd 0bbb 位修改指令 ATmega128(L) 的位修改指令指的是对状态寄存器 SREG 的位或 I/O 寄存器中的指定位进行置位或清 0 操作, 具体如表 3.27 所示 表 3.27 位修改指令 28

29 状态寄存器 SREG 的指定位置位指令 状态寄存器 SREG 的指定位清零指令 I/O 寄存器的指定位置位指令 I/O 寄存器的指定位清零指令 进位位置位指令 进位位清零指令 BSET s 0 s 7 状态寄存器 SREG 的位 s 置位 SREG(s) 1,PC PC sss 1000 I T H S V N Z 和 C BCLR s 0 s 7 状态寄存器 SREG 的位 s 清 0 SREG(s) 0,PC PC sss 1000 I T H S V N Z 和 C SBI P,b 0 P 31,0 b 7 将由 P 指定的 I/O 寄存器中的位 b 置位 该指令只在低 32 个 I/O 寄存器 ( 即 I/O 寄存器地址为 0~31) 内操作 I/O(P,b) 1,PC PC PPPP Pbbb I T H S V N Z 和 C CBI P,b 0 P 31,0 b 7 将由 P 指定的 I/O 寄存器中的位 b 清 0 该指令只在低 32 个 I/O 寄存器 ( 即 I/O 寄存器地址为 0~31) 内操作 I/O(P,b) 0,PC PC PPPP Pbbb SEC 将进位标志位 C 置位 C 1,PC PC C(1) CLC 进位标志位 C 清 0 C 0,PC PC C(0) 负数标志 SEN 29

30 位置位指令 负数标志位清零指令 零标志位置位指令 零标志位清零指令 全局中断使能标志位置位指令 全局中断使能标志位清零指令 符号标志位置位指令 负数标志位 N 置位 N 1,PC PC N(1) CLN 负数标志位 N 清 0 N 0,PC PC N(0) SEZ 零标志位 Z 置位 Z 1,PC PC Z(1) CLZ 零标志位 Z 清 0 Z 0,PC PC Z(0) SEI 全局中断使能标志位 I 置位 I 1,PC PC I(1) CLI 全局中断使能标志位 I 清 0 I 0,PC PC I(0) SES 符号标志位 S 置位 S 1,PC PC+1 符号标志 续表 30

31 位置位指令 符号标志位置位清零指令 溢出标志位置位指令 溢出标志位清零指令 标志位 T 置位指令 标志位 T 清零指令 半进位标志位置位指令 半进位标志位清零指令 S(1) CLS 符号标志位 S 清 0 S 0,PC PC S(0) SEV 溢出标志位 V 置位 V 1,PC PC V(1) CLV 溢出标志位 V 清 0 V 0,PC PC V(0) SET 标志位 T 置位 T 1,PC PC T(1) CLT 标志位 T 清 0 T 0,PC PC T(0) SEH 标半进位标志位 H 置位 H 1,PC PC H(1) CLH 半进位标志位 H 清 0 H 0,PC PC+1 31

32 H(0) 3.7 MCU 控制指令 ATmega128(L) 的 MCU 控制指令有 : 空操作指令 休眠指令和看门狗定时器清零指令 这些指令主要用于控制 MCU 的运行方式以及清零看门狗定时器, 具体如表 3.28 所示 表 3.28 MCU 控制指令 NOP 空操作指令 完成一个单周期空操作 PC PC SLEEP 休眠指令 该指令使 MCU 根据设置的休眠模式进入休眠状态 当 MCU 从休眠状态被一个中断唤醒时, 在中断服务程序执行后, 紧跟执行休眠指令后的下一条指令将 PC PC+1,MCU 进入由 MCU 控制寄存器设置的休眠模式运行 看门狗定时器清零指令 WDR 该指令清零看门狗定时器 在使能看门狗定时器情况下, 系统程序在正常运行中必须在 WD 预分频器 (WD Prescaler) 给出的限定时间内执行一次该指令, 以防止看门狗定时器溢出, 从而造成系统复位 清零看门狗定时器,PC PC ATmega128(L) 的汇编语言 所谓的汇编语言就是使用助记符来代替实际二进制机器指令的符号化语言 用汇编语言编写的程序称为汇编语言程序或源程序 注意下面介绍的内容适用于 ATMEL 公司的 AVR 单片机开发环境 AVRStudio 4.12 及相应的汇编器 汇编语言语句格式及伪指令 32

33 ATmega128(L) 的汇编语言源程序是由一系列汇编语句组成的, 其汇编语句的标准格式有以下两种 ( [ ] 内的内容为可选项 ) [ 标号 :] 伪指令 [ 操作数 ] [; 注释 ] [ 标号 :] 指令 [ 操作数 ] [; 注释 ] 具体说明如下 (1) 标号 : 汇编语句地址的标记符号, 用于帮助对该汇编语句的访问和定位 使用标号时要注意以下几点 : 标号一般由 ASCII 字符组成, 第一个字符为字母 ; 同一标号在一个独立的程序中只能定义一次 ; 不能使用汇编语言中的保留字, 如指令助记符 寄存器名 伪指令字等 (2) 伪指令 : 不属于系统指令集, 而且编译时不产生实际的目标机器代码, 只是用在汇编程序中对地址 寄存器 数据或常量等进行定义说明, 以及对编译过程进行某种控制等 注意 : 伪指令通常由汇编编译系统给出 (3) 指令 : 汇编程序源程序的核心部分, 即本章所介绍的指令 (4) 操作数 : 是时所需要的数据或地址 在编译器的支持下, 可以使用多种形式的操作数, 如数字 标识符或表达式等, 而不是仅局限于指令系统中所定义的操作数格式 (5) 注释 : 用于对源程序和相关汇编语句进行说明, 帮助程序设计人员阅读 理解和修改程序 在汇编语言源程序中, 符号 ; 后面的内容即为注释, 注释内容长度不限 注释内容换行时, 开头部分还要使用符号 ; 注意 : 编译器对注释的内容不予理会, 而且注释不产生任何代码 (6) 在汇编语句中, 冒号 : 用于标号之后 ; 空格用于分隔指令字和操作数 ; 指令有两个操作数时用逗号, 分隔两个操作数 注意 : 所有的标点符号必须在英文状态下输入 在 AVRstudio 的汇编器中提供了一些汇编伪指令, 如表 3.29 所示 这些伪指令不能直接转换生成目标代码, 而是用于调整程序存储器中程序的位置 定义宏和初始化程序存储器等 表 3.29 汇编器支持的伪指令 伪指令 说 明 伪指令 说 明 BYTE 在 SRAM 中预留存储单元 NOLIST 禁止列表文件生成 CSEG 声明代码段 ORG 设置程序起始位置 DB 定义字节常数 SET 赋值给标识符 DEF 定义寄存器符号名 ELSE 条件汇编 DEVICE 指定为何器件生成汇编代码 ELIF 条件汇编 DSEG 声明数据段 ENDIF 条件汇编 DW 定义字常数 ERROR 输出出错消息 EQU 定义标识符常量 IF 条件汇编 ESEG 声名 E 2 PROM 段 IFDEF 条件汇编 EXIT 退出文件 IFNDEF 条件汇编 INCLUDE 包含指定的文件 MESSAGE 输出消息字符串 MACRO 宏定义开始 DD 定义双字常量 ENDMACRO 宏定义结束 DQ 定义四字常量 LISTMAC 列表宏表达式 UNDEF 取消寄存器符号的定义 LIST 使能列表文件生成 WARNING 输出警告消息 表达式 33

34 在 AVR 编译器的支持下, 在编写汇编语言源程序时, 指令的操作数可以使用表达式, 而不再需要严格遵守指令定义的操作数的格式 AVR 编译器支持的表达式是由操作数 函数和运算符组成, 并且所有的表达式内部都是 32 位的 注意表达式是可以嵌套使用的 下面来分别介绍表达式中可以使用的操作数 函数和运算符种类 (1)AVR 汇编器的表达式中使用的操作数有以下几种 : 自定义的标号, 该标号给出了放置标号处的程序计数器的值 ; 用伪指令 SET 定义的变量 ; 用伪指令 EQU 定义的常数 ; 整数常数, 常见的有十进制数 十六进制数和二进制数 ; PC: 程序计数器的当前值 (2)AVR 汇编器的表达式中使用的函数有以下几种 : LOW( 表达式 ): 返回一个表达式值的最低字节 ; HIGH( 表达式 ): 返回一个表达式值的第二个字节 ; BYTE2( 表达式 ): 与 HIGH 函数相同 ; BYTE3( 表达式 ): 返回一个表达式值的第三个字节 ; BYTE4( 表达式 ): 返回一个表达式值的第四个字节 ; LWRD( 表达式 ): 返回一个表达式值的 0~15 位 ; HWRD( 表达式 ): 返回一个表达式值的 16~31 位 ; PAGE( 表达式 ): 返回一个表达式值的 16~21 位 ; EXP2( 表达式 ): 返回 ( 表达式值 )2 次幂的值 ; LOG2( 表达式 ): 返回 Log 2 ( 表达式值 ) 的整数部分 (3)AVR 汇编器的表达式中使用的运算符如表 3.30 所示 注意运算符的优先级数越高, 其优先级也就越高 表 3.30 汇编器支持的运算符 运算符 名称 优先级 说 明! 逻辑非 14 一元运算符, 表达式值是 0 返回 1; 表达式值是 1 返回 0 ~ 逐位非 14 一元运算符, 将表达式的值按位取反 负号 14 一元运算符, 使表达式值为算术负 * 乘法 13 二元运算符, 两个表达式相乘 / 除法 13 二元运算符, 左边表达式除以右边表达式, 结果取整 + 加法 12 二元运算符, 两个表达式相加 减法 12 二元运算符, 左边表达式减去右边表达式 << 左移 11 二元运算符, 左边表达式值按右边表达式给出的次数左移 >> 右移 11 二元运算符, 左边表达式值按右边表达式给出的次数右移 < 小于 10 二元运算符, 左边表达式值小于右边表达式值, 则为 1; 否则为 0 <= 小于等于 10 二元运算符, 左边表达式值不大于右边表达式值, 则为 1; 否则为 0 > 大于 10 二元运算符, 左边表达式值大于右边表达式值, 则为 1; 否则为 0 >= 大于等于 10 二元运算符, 左边表达式值不小于右边表达式值, 则为 1; 否则为 0 == 等于 9 二元运算符, 左边表达式值等于右边表达式值, 则为 1; 否则为 0!= 不等于 9 二元运算符, 左边表达式值不等于右边表达式值, 则为 1; 否则为 0 & 逐位与 8 二元运算符, 两个表达式值之间按位与 ^ 逐位异或 7 二元运算符, 两个表达式值之间按位异或 逐位或 6 二元运算符, 两个表达式值之间按位或 && 逻辑与 5 二元运算符, 两个表达式值之间逻辑与, 全非 0 则为 1; 否则为 0 34

35 逻辑或 4 二元运算符, 两个表达式值之间逻辑或, 有 1 个非 0 则为 1, 全 0 为 本章小结 在本章中, 我们对 ATmega128(L) 的指令系统做了全面的介绍, 重点介绍并分析了指令系统的每一条指令的具体功能 最后介绍了 ATmega128(L) 汇编语言编程的一些基本知识 联系方式 集团官网 : 嵌入式学院 : 移动互联网学院 : 企业学院 : 物联网学院 : 研发中心 :dev.hqyj.com 集团总部地址 : 北京市海淀区西三旗悦秀路北京明园大学校内华清远见教育集团 北京地址 : 北京市海淀区西三旗悦秀路北京明园大学校区, 电话 : /5 上海地址 : 上海市徐汇区漕溪路 250 号银海大厦 11 层 B 区, 电话 : 深圳地址 : 深圳市龙华新区人民北路美丽 AAA 大厦 15 层, 电话 : 成都地址 : 成都市武侯区科华北路 99 号科华大厦 6 层, 电话 : 南京地址 : 南京市白下区汉中路 185 号鸿运大厦 10 层, 电话 : 武汉地址 : 武汉市工程大学卓刀泉校区科技孵化器大楼 8 层, 电话 : 西安地址 : 西安市高新区高新一路 12 号创业大厦 D3 楼 5 层, 电话 : 广州地址 : 广州市天河区中山大道 268 号天河广场 3 层, 电话 :

AVR单片机指令系统.PDF

AVR单片机指令系统.PDF AVR 4 1 (1) 89 :AT90S1200, ; (2) 90 ( ):Attiny11/12/15/22; 90 = +89 (3) 118 ( ):AT90S2313/2323/2343/2333,/4414/4433/4434/8515/90S8534/8535 ;118 = + 90 ; (4) 121 ( )ATmega603/103; 121 = + 118 ; (5) 130

More information

at90s1200.PDF

at90s1200.PDF AT90S1200 1. AVR RISC 2. AVR RISC 89 32 3. 1K FLASH 1000 64 EEPROM 100000 4. Peripheral Prescale 8 / SPI 5. MCU RC 6. Specification CMOS 7. 4MHz 3V 25 2.0 0.4 1 8. 15 20 9. 2.7V-6.0V AT90S1200-4 4.0V-6.0V

More information

CH559指令周期.doc

CH559指令周期.doc CH55X 汇编指令周期表 CH55X 汇编指令概述 : 型号包含 : a. 指令单周期型号 :CH557 CH558 CH559; b. 指令 4 周期型号 :CH551 CH552 CH553 CH554; c. 非跳转指令的指令周期数与指令字节数相同 ; d. 跳转指令含 MOVC/RET/CALL 通常比字节数多若干个周期 ; e.movc 指令多 4 或 5 个周期 ( 下条指令地址为奇数时多

More information

M8Rxxx 指令集说明 Version 年 11 月 上海磐芯电子有限公司 SHANGHAI MASSES ELECTRONIC Co., Ltd. 本公司保留对产品在可靠性, 功能和设计方面的改进作进一步说明的权利 说明文档的更改, 恕不另行通知

M8Rxxx 指令集说明 Version 年 11 月 上海磐芯电子有限公司 SHANGHAI MASSES ELECTRONIC Co., Ltd. 本公司保留对产品在可靠性, 功能和设计方面的改进作进一步说明的权利 说明文档的更改, 恕不另行通知 M8Rxxx 指令集说明 Version 1.04 2014 年 11 月 上海磐芯电子有限公司 SHANGHAI MASSES ELECTRONIC Co., Ltd. 本公司保留对产品在可靠性, 功能和设计方面的改进作进一步说明的权利 说明文档的更改, 恕不另行通知 修正记录 版本 日期 描述 Ver1.02 2014-5-15 补全指令说明 Ver1.03 2014-10-8 勘误 Ver1.04

More information

Microsoft Word - Ö¸Á.doc

Microsoft Word - Ö¸Á.doc 指令集说明 注 由于资源大小问题 其中以下几款 MCU 只有 62 条指令 其余均为 63 条指令 HT48CA0/HT48RA0A 无 RETI 指令 HT48R05A-1 无 TABRDL 指令 指令寻址方式有下面 5 种 立即寻址 此一寻址法是将立即的常数值紧跟在运算码 (opcode) 后 例如 MOV A, 33H ADD A, 33H 直接寻址 直接寻址的情況只允许在存储器之间作数据传送

More information

C语言的应用.PDF

C语言的应用.PDF AVR C 9 1 AVR C IAR C, *.HEX, C,,! C, > 9.1 AVR C MCU,, AVR?! IAR AVR / IAR 32 ALU 1KBytes - 8MBytes (SPM ) 16 MBytes C C *var1, *var2; *var1++ = *--var2; AVR C 9 2 LD R16,-X ST Z+,R16 Auto (local

More information

1. 介绍 义隆 8 位单片机指令介绍 Application Notes 义隆 8 位单片机指令介绍 EM78/EM88 系列是基于 RISC 的精简指令微控制器, 每条指令是 13 位 15 位, 除 LCALL LJMP MOV R2,A ADD R2,A 改变 PC 指针的指令是 2 个指令

1. 介绍 义隆 8 位单片机指令介绍 Application Notes 义隆 8 位单片机指令介绍 EM78/EM88 系列是基于 RISC 的精简指令微控制器, 每条指令是 13 位 15 位, 除 LCALL LJMP MOV R2,A ADD R2,A 改变 PC 指针的指令是 2 个指令 1. 介绍 Application Notes EM78/EM88 系列是基于 RISC 的精简指令微控制器, 每条指令是 13 位 15 位, 除 LCALL LJMP MOV R2,A ADD R2,A 改变 PC 指针的指令是 2 个指令 * 周期, 其余为单指令周期 ( 部分第一代芯片 JMP CALL RET RETL RETI JBS JBC JZ JZA DJZ DJZA 指令为 2

More information

Microsoft Word - em78 sub program.doc

Microsoft Word - em78 sub program.doc 一 二进制数转换为 ASCⅡ 码 将一个字节的二进制数转换为两位 16 进制数的 ASCⅡ 码 main: mov a,@0x9f ; 二进制数为 0x9f mov 0x30,a ; 二进制数存入 0x30 mov a,@0x02 mov 0x10,a ;0x10 中存放转换次数 mov a,@0x31 mov 0x04,a ;0x04 中为转换后数据存放地址 mov a,0x30 B1: ; 取

More information

MSP430ϵÁе¥Æ¬»úµÄÖ¸Áîϵͳ.pps [¼æÈÝģʽ]

MSP430ϵÁе¥Æ¬»úµÄÖ¸Áîϵͳ.pps [¼æÈÝģʽ] 作者 : 利尔达 MSP430 系列单片机的指令系统 1 CPU 内核组成 : 16 位的 (ALU) 算术运算单元 16 个寄存器 (PC SP SR R4~R15) 指令控制单元 2 存储器组织结构 3 外围模块寄存器地址 它们被分配在相应的字模块或字节模块当中 分配在 00-FFH 中为字节, 分配在 100-1FFH 中为字 4 寻址模式 : 5 指令格式 : 1) 书写格式标号指令助记符源操作数,

More information

AVR单片机的应用.PDF

AVR单片机的应用.PDF AVR 7 1 AVR AVR 7 2 ;******************************************************************** ;* * ;* * ;* if fos=8mhz time (3.5us------1s) * ;* dt time * ;* 22 1ms * ;* 29 2ms * AVR 7 3 ;* 40 5ms * ;* 51

More information

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63>

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63> 第三章 Q3 1 1. 省略了 I/O 操作的复杂逻辑, 易实现, 耗费低 ; 2. 可以利用丰富的内存寻址模式实现灵活的 I/O 操作 Q3 2 假设存储单元 ds1 处寄存器地址为 0x2000, 代码如下 #define ds1 0x2000 while ( *ds1 == 0 ) ; Q3 3 假设设备 (dev1) 中有两个寄存器 ds1 和 dd1,dev1 的地址为 0x1000,ds1

More information

学习MSP430单片机推荐参考书

学习MSP430单片机推荐参考书 MSP430 16 MSP430 C MSP430 C MSP430 FLASH 16 1 CPU 16 ALU 16 PC SP SR R4~R15 2 3 00-FFH 100-1FFH 4 5 1 2 51 24 27 6 1 2 3 4 5 6 4 12 SR SP SR CPU SR CPU C Z N GIE CPUOff CPU OscOff SCG0 SCG1 CPU EXIT SP

More information

33023A.book(31005A_cn.fm)

33023A.book(31005A_cn.fm) 第 5 章 CPU 和 ALU 目录 本章包括下面一些主要内容 : 5. 简介...5-2 5.2 指令的一般格式... 5-4 5.3 中央处理单元 (CPU)... 5-4 5.4 指令时钟... 5-4 5.5 算术逻辑单元 (ALU)... 5-5 5.6 状态寄存器... 5-6 5.7 OPTION_REG 寄存器... 5-8 5.8 电源控制寄存器... 5-9 5.9 设计技巧...

More information

数据库系统概论

数据库系统概论 2. 减法指令 8086/8088 共有 5 条减法指令 1 不带 CF 的减法指令 (SUB) 格式 :SUB DST, SRC 功能 :(1)DST (DST)-(SRC) (2) 根据差设置 6 个状态标志 2 带 CF 的减法指令 (SBB) 格式 :SBB DST, SRC 功能 : (1)DST (DST)-(SRC)-CF (2) 根据差设置 6 个状态标志 3 减 1 指令 (DEC)

More information

第5章:汇编语言程序设计

第5章:汇编语言程序设计 第 5 章 : 汇编语言程序设计 程 汇编语言指令格式 系统伪指令 存储器选择方式 常用子程序 1 汇编语言程序设计 PIC 指令系统 语言系统 指 CPU 编 器语言 器语言 器语言 设计 用 语言 设计 语言 汇编语言 2 汇编语言指令格式 汇编语言指令格式 ( 指令 ) label opcode operand comment 指令 用 存 指令 指令语 3 汇编语言指令格式 1 指令 用 指令

More information

Microsoft PowerPoint - 05-第五讲-寻址方式.pptx

Microsoft PowerPoint - 05-第五讲-寻址方式.pptx 第五讲 授课教师 : 陆俊林王箫音 2012 年春季学期 主要内容 一 寻址方式概述 二 数据的寻址方式 三 转移地址的寻址方式 教材相关章节 : 微型计算机基本原理与应用 ( 第二版 ) 第 4 章寻址方式与指令系统 1 主要内容 一 寻址方式概述 二 数据的寻址方式 三 转移地址的寻址方式 2 指令的组成 指令由操作码和操作数两部分组成 操作码操作数 MOV AX, 8726H ADD AX,

More information

数据库系统概论

数据库系统概论 指令系统 是指 CPU 能完成的所有 指令的集合, 它是在 CPU 设计时就确定了的 所以, 对不同的 CPU, 其指令系统中所包含的具体指令将是各不相同的 但 8088/8086 CPU 的指令系统是完全一样的 8088/8086 CPU 的指令系统可分成下面 9 类 : (1) 数据传送指令 ; (2) 算术运算指令 ; (3) 逻辑运算指令 ; (4) 移位指令 ; (5) 标志处理指令和 CPU

More information

微机原理(计算机原理与接口技术)

微机原理(计算机原理与接口技术) 微机原理 ( 计算机原理 ) 第 10 讲 MIPS 体系结构与编程 1 第 10 讲 MIPS 体系结构与编程 MIPS 体系结构概述 MIPS 指令集简介 MIPS 汇编语言程序设计 2 MIPS 体系结构概述 MIPS 诞生于 1980 年代, 是最早的 RISC 处理器之一, 也是目前销量最好的 RISC 处理器之一, 从游戏机到路由器, 再到 SGI 的超级计算机, 都可以看到 MIPS

More information

主要内容 指令系统的一般概念 指令操作方式操作码的含义指令对操作数的要求指令执行的结果 寻址方式 指令说明 2015 年 3 月 16 日星期一 8 时 2 分 37 秒 2

主要内容 指令系统的一般概念 指令操作方式操作码的含义指令对操作数的要求指令执行的结果 寻址方式 指令说明 2015 年 3 月 16 日星期一 8 时 2 分 37 秒 2 第 3 章 8086 的寻址方式和指令系统 (1) 2015 年 3 月 16 日星期一 8 时 2 分 37 秒 1 主要内容 指令系统的一般概念 指令操作方式操作码的含义指令对操作数的要求指令执行的结果 寻址方式 指令说明 2015 年 3 月 16 日星期一 8 时 2 分 37 秒 2 3.1 8086 的寻址方式 两种不同的类型 : 一类是程序地址 ( 在代码段中 ) 的寻址方式 ; 另一类是操作数地址的寻址方式

More information

<4D F736F F D20C7B0CBC4D5C2D7F7D2B5CCE22E646F6378>

<4D F736F F D20C7B0CBC4D5C2D7F7D2B5CCE22E646F6378> 第一章第二章 Q2 1: 高序 : 最低位字节存储在字的最低位 ; 低序 : 最低位字节存储在字的最高位 ; Q2 2: 冯. 诺依曼结构 : 数据和指令都存储在同一存储器中 ; 哈佛结构 : 数据和程序存储在各自独立的存储器中 Q2 3: a) ARM 有 16 个通用寄存器,r0 r15, 其中 r15 还被用作程序计数器 b) CPSR 是程序状态寄存器, 包含了条件码标识 中断禁止位 当前处理器模式和其他状态

More information

Microsoft PowerPoint - 微原-第3章3.ppt [兼容模式]

Microsoft PowerPoint - 微原-第3章3.ppt [兼容模式] 本教案内容 第 3 章 8086CPU 指令系统 1. 汇编语言指令 9. 转移指令 10. 2. 8086 指令分类循环控制指令 11. 子程序调用返回 3. 数据与转移地址的指令寻址方式 12. 中断调用返回指 4. 数据传送类指令令 5. 算术运算类指令 13. 字符串操作指令 6. 逻辑运算类指令 14. I/O 输入输出指令 7. 移位类指令 15. 其它指令 8. 标志位操作指令 16.

More information

从MCS51向AVR的快速转换.PDF

从MCS51向AVR的快速转换.PDF MCS51 AVR MCS51 AVR ATMEL AVR RISC MCS51 AVR 1 MHZ 1MIPS 8MHZ AVR 224MHZ MCS51 FLASH EEPROM ISP WatchDog AVR MCS51 AT90S1200/2313 AT89C1051/2051 AT90S4414/8515 AT89C51/52 PCB / AVR C ICCAVR60 AVR C IAR

More information

Microsoft PowerPoint sun-arm isa2.ppt [Compatibility Mode]

Microsoft PowerPoint sun-arm isa2.ppt [Compatibility Mode] 嵌入式系统设计与应用 第二章 ARM 指令系统 (2) 西安交通大学电信学院 孙宏滨 汇编伪指令 汇编伪指令 : 在 ARM 汇编语言里, 有一些特殊指令助记符, 没有相对应的操作码 ( 或直接对应指令 ) 通常称这些特殊指令助记符为伪指令, 它们所完成的操作叫做伪操作 伪指令在源程序中的作用是为完成汇编程序作各种准备工作 这些伪指令仅在汇编过程中起作用, 一旦汇编结束, 伪指令的使命完成 ADR:

More information

Introduction to Computer Systems /18-243, spring st Lecture, Jan. 12th

Introduction to Computer Systems /18-243, spring st Lecture, Jan. 12th 计算机组成原理习题课 1 授课老师 : 王浩宇 haoyuwang@bupt.edu.cn 1 练习 : 机器数的表示和相互转化 练习 1: 当十六进制数 9B 和 FF 分别表示为原码 补码 反码 移码和无符号数时, 所对应的十进制数各为多少 ( 设机器数采用一位符号位 )? 16 进制 真值 无符号数 原码 ( 真值 ) 反码 ( 真值 ) 补码 ( 真值 ) 移码 ( 真值 ) 9BH 二进制十进制

More information

PIC8位单片机汇编语言常用指令的识读(上)

PIC8位单片机汇编语言常用指令的识读(上) PIC8 位单片机汇编语言常用指令的识读 ( 上 ) 各大类单片机的指令系统是没有通用性的, 它是由单片机生产厂家规定的, 所以用户必须遵循厂家规定的标准, 才能达到应用单片机的目的 PIC 8 位单片机共有三个级别, 有相对应的指令集 基本级 PIC 系列芯片共有指令 33 条, 每条指令是 12 位字长 ; 中级 PIC 系列芯片共有指令 35 条, 每条指令是 14 位字长 ; 高级 PIC

More information

数据库系统概论

数据库系统概论 所谓寻址方式, 就是指令中用于说明操 作数所在地或者所在地地址的方法 8088/8086 的寻址方式分为两类 : 关于寻找数据的寻址方式 关于寻找转移地址的寻址方式 下面讲关于数据的寻址方式时, 均以数 据传送指令 MOV 为例讲解 MOV 指令格式如下 : MOV DST, SRC 助记符 目的操作数 指令完成的功能 : (DST) 源操作数 (SRC) 一. 关于寻找数据的寻址方式 ( 共 8

More information

<4D F736F F D20B5DA32D5C220416E64726F6964BFAAB7A2BBB7BEB3B4EEBDA82E646F6378>

<4D F736F F D20B5DA32D5C220416E64726F6964BFAAB7A2BBB7BEB3B4EEBDA82E646F6378> Android 应用程序开发与典型案例 作者 : 华清远见 第 2 章 Android 开发环境搭建 本章简介 本章主要介绍在 Windows 环境下,Android 开发环境的搭建步骤及注意事项, 包括 JDK 和 Java 开发环境的安装和配置 Eclipse 的安装 Android SDK 和 ADT 的安装和配置等 ; 同时介绍了 Android 开发的基本步骤 2.1 Android 开发环境的安装与配置

More information

Agilent N5700 N5741A-49A, N5750A-52A, N5761A-69A, N5770A-72A W 1500 W 600 V 180 A 1 U Vac AC LAN,USB GPIB Agilent N5700 1U 750W 1500W 24

Agilent N5700 N5741A-49A, N5750A-52A, N5761A-69A, N5770A-72A W 1500 W 600 V 180 A 1 U Vac AC LAN,USB GPIB Agilent N5700 1U 750W 1500W 24 Agilent N700 N71A-9A, N70A-2A, N761A-69A, N770A-72A 2 70 W 100 W 600 V 180 A 1 U 8-26 Vac AC LAN,USB GPIB Agilent N700 1U 70W 100W 2 6V 600V 1.A 180A N700 1U 19 100W LED N700 OVP UVL UVL OVP N700 GPIB

More information

Microsoft PowerPoint - Ch3-8086CPUæ„⁄令系ç»�(3)-æŁ°æ“®ä¼€é•†æ„⁄令

Microsoft PowerPoint - Ch3-8086CPUæ„⁄令系ç»�(3)-æŁ°æ“®ä¼€é•†æ„⁄令 2017 版 微机原理与系统设计 第 3 章 8086CPU 指令系统 董明皓, 博士 西安电子科技大学 dminghao@xidian.edu.cn 目录 (12 课时 ) 1 2 3 4 5 汇编语言基本概念 8086 指令分类数据与转移地址的寻址方式 8086 的六类指令总结 微机原理与系统设计 8086CPU 的指令系统董明皓 dminghao@xidian.edu.cn 2 基础知识引入

More information

指令系统 可分成如下 6 类 : 数据传送指令 算术运算指令 逻辑运算和移位指令 串操作指令 程序控制指令 处理器控制指令 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 2

指令系统 可分成如下 6 类 : 数据传送指令 算术运算指令 逻辑运算和移位指令 串操作指令 程序控制指令 处理器控制指令 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 2 第 3 章 8086 的寻址方式和指令系统 (2) 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 1 3.3 8086 指令系统 可分成如下 6 类 : 数据传送指令 算术运算指令 逻辑运算和移位指令 串操作指令 程序控制指令 处理器控制指令 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 2 3.3.1 数据传送指令 可实现 存储器 立即数 段寄存器 CS DS

More information

数据库系统概论

数据库系统概论 2. 减法指令 8086/8088 共有 5 条减法指令 1 不带 CF 的减法指令 (SUB) 格式 :SUB DST, SRC 功能 :(1)DST (DST)-(SRC) (2) 根据差设置 6 个状态标志 2 带 CF 的减法指令 (SBB) 格式 :SBB DST, SRC 功能 : (1)DST (DST)-(SRC)-CF (2) 根据差设置 6 个状态标志 3 减 1 指令 (DEC)

More information

3.3.2 算术运算指令 数据类型 : 无符号和有符号整数 无符号数又分成 : 无符号二进制数 ; 无符号压缩十进制 :1 字节表示 2 个十进制数 ; 无符号非压缩十进制 :1 字节表示 1 个十进制数 有符号数 : 有符号二进制数 用补码表示 2015 年 3 月 26 日星期四 11 时 3

3.3.2 算术运算指令 数据类型 : 无符号和有符号整数 无符号数又分成 : 无符号二进制数 ; 无符号压缩十进制 :1 字节表示 2 个十进制数 ; 无符号非压缩十进制 :1 字节表示 1 个十进制数 有符号数 : 有符号二进制数 用补码表示 2015 年 3 月 26 日星期四 11 时 3 第 3 章 8086 的寻址方式和指令系统 (3) 2015 年 3 月 26 日星期四 11 时 3 分 17 秒 1 3.3.2 算术运算指令 数据类型 : 无符号和有符号整数 无符号数又分成 : 无符号二进制数 ; 无符号压缩十进制 :1 字节表示 2 个十进制数 ; 无符号非压缩十进制 :1 字节表示 1 个十进制数 有符号数 : 有符号二进制数 用补码表示 2015 年 3 月 26 日星期四

More information

Microsoft PowerPoint - 微原-第3章2.ppt [兼容模式]

Microsoft PowerPoint - 微原-第3章2.ppt [兼容模式] 本教案内容 第 3 章 8086CPU 指令系统 1. 汇编语言指令 9. 转移指令 10. 2. 8086 指令分类循环控制指令 11. 子程序调用返回 3. 数据与转移地址的指令寻址方式 12. 中断调用返回指 4. 数据传送类指令令 5. 算术运算类指令 13. 字符串操作指令 6. 逻辑运算类指令 14. I/O 输入输出指令 7. 移位类指令 15. 其它指令 8. 标志位操作指令 16.

More information

EMC单片机学习笔记.doc

EMC单片机学习笔记.doc EMC 单片机学习笔记 (0) 引子因为工作的缘故, 必须学习 EMC 单片机了 我会把我的学习历程写下来, 算是对坛子的一点贡献, 也算是自己的一个总结吧 因为以前学过 51 的和 PIC HOLTEK 的单片机, 并且也大致了解过 EMC 的指令集, 所以学起来并不是太难 为了学习, 而又没有仿真器, 于是去 emc 的网站下载了一个 simulator 来软件仿真 第一感觉还不错, 把里面的例子程序跑了一下,

More information

第4章

第4章 微机原理及应用 主讲 : 谢维成 http://xweicheng.ys168.com scxweicheng@yahoo.com.cn 西华大学电气信息学院 1 第 03 章 80X86 的寻址方式和指令 3.1 指令的格式 3.2 8086/8088 的寻址方式 3.3 指令系统 3.3.1 数据传送指令 3.3.2 算术运算指令 3.3.3 逻辑运算与移位指令 3.3.4 串操作指令 3.3.5

More information

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例 帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例 这篇文章主要介绍了帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例, 本文还详细介绍了帝国 CMS 数据库类中的一些常用方法, 需要的朋友可以参考下 例 1: 连接 MYSQL 数据库例子 (a.php)

More information

微机第02章1(指令寻址)

微机第02章1(指令寻址) 微机原理及应用 主讲 : 谢维成 http://xweicheng.ys168.com scxweicheng@yahoo.com.cn 西华大学电气信息学院 1 第 03 章 80X86 的寻址方式和指令 ( 本章内容 ) 3.1 指令的格式 3.2 8086/8088 的寻址方式 3.3 指令系统 3.3.1 数据传送指令 3.3.2 算术运算指令 3.3.3 逻辑运算与移位指令 3.3.4 串操作指令

More information

第十四章 STC单片机比较器原理及实现

第十四章 STC单片机比较器原理及实现 第 14 章 STC 单片机比较器 原理及实现 何宾 2015.02 1 本章主要内容 STC 单片机比较器结构 STC 单片机比较器寄存器组 STC 单片机比较器应用 2 STC 单片机比较器结构 STC15W 系列单片机内置了模拟比较器 对于 STC15W201S STC15W404S, 以及 STC15W1K16S 系 列单片机的比较器内部结构 3 STC 单片机比较器结构 S T C 15W

More information

Microsoft Word - 新1-3.doc

Microsoft Word - 新1-3.doc 模块三 80C51 的指令系统和程序设计 (1) 了解 80C51 指令系统的构成 (2) 掌握 80C51 单片机的寻址方式 (3) 掌握 80C51 单片机的各种指令及其应用 (4) 掌握汇编语言程序设计方法, 为以后实际控制系统的程序设计奠定基础 3.1 80C51 指令系统概述 对于任何一台计算机, 如果只有硬件 ( 称为裸机 ), 而没有软件 ( 即程序 ) 的支持是不能工作的 单片机也不例外,

More information

Ps22Pdf

Ps22Pdf ( ) ( 150 ) 25 15 20 40 ( 25, 1, 25 ), 1. A. B. C. D. 2. A. B. C. D. 3., J = 1 H = 1 ( A B, J', J, H ) A. A = B = 1, J' =0 B. A = B = J' =1 C. A = J' =1, B =0 D. B = J' = 1, A = 0 4. AB + AB A. AB B. AB

More information

tiny15.PDF

tiny15.PDF ATtiny15/L 1. 8 AVR 2. RISC 90 32 8 3. 1K FLASH 1000 64 EEPROM 100000 4. Peripheral Prescale 8 / 100kHz PWM 4 10 ADC 20 5. MCU SPI ISP BOD 1.6MHz T/C1 25.6MHz 6. I/O 8 PDIP/SOIC 6 I/O 7. 2.7V-5.5V ATtiny15/L1L

More information

Microsoft PowerPoint - 第01章 基础知识.pptx

Microsoft PowerPoint - 第01章 基础知识.pptx 微处理器与微计算机系统 教材 : 单片机原理与应用及 C51 程序设计 ( 第 3 版 ) 清华大学出版社 主讲 : 谢维成 http://xweicheng.ys168.com scxweicheng@mail.xhu.edu.cn 西华大学电气与电子信息学院 第 1 章计算机基础知识 主要内容 : 1 有符号数的表示 2 微型计算机工作原理 3 单片机的概念及特点 A Historical Background

More information

DSP2000.ppt

DSP2000.ppt The success's road TI 2000 系列 DSP 开发应用 www.farsight.com.cn TI 2000 系列 DSP 开发应用 v1.tms320c2000 系列 DSP 介绍 v2.tms320c2000 系列 DSP 体系结构 v3.tms320c2000 系列 DSP 开发环境 v4.tms320c2000 系列 DSP 开发案例 1. TMS320C2000 系列

More information

L15 MIPS Assembly

L15 MIPS Assembly Lecture 19: MIPS Assembly Language 程序的机器级表示主要内容 MIPS 指令格式 R- 类型 / I- 类型 / J- 类型 MIPS 寄存器 长度 / 个数 / 功能分配 MIPS 操作数 寄存器操作数 / 存储器操作数 / 立即数 / 文本 / 位 MIPS 指令寻址方式 立即数寻址 / 寄存器寻址 / 相对寻址 / 伪直接寻址 / 偏移寻址 MIPS 指令类型

More information

MSP430X1XX 系列微控制器具有以下特征 结构框图 超低功耗结构体系 A 额定工作电流在 1MHz V 工作电压 C11X P11X 和 E11X 为 V 从备用模式唤醒为 6 S 丰富的中断能力减少了查询的需要灵活强大的处理能力源操作数有七种寻址模

MSP430X1XX 系列微控制器具有以下特征 结构框图 超低功耗结构体系 A 额定工作电流在 1MHz V 工作电压 C11X P11X 和 E11X 为 V 从备用模式唤醒为 6 S 丰富的中断能力减少了查询的需要灵活强大的处理能力源操作数有七种寻址模 新一代超低功耗 16 位单片机 TI MSP430 系列 美国 TI 公司的 MSP430 系列单片机可以分为以下几个系列 X1XX X3XX X4XX 等等 而且 在不断发展 从存储器角度 又可分为 ROM C 型 OTP P 型 EPROM E 型 Flash Memory F 型 系列的全部成员均为软件兼容 可以方便地在系列各型号间移植 MSP430 系列单片机 的 MCU 设计成适合各种应用的

More information

<4D F736F F D D433635CFB5C1D0B5A5C6ACBBFAD4ADC0EDBCB0BFAAB7A25F56312E322E646F63>

<4D F736F F D D433635CFB5C1D0B5A5C6ACBBFAD4ADC0EDBCB0BFAAB7A25F56312E322E646F63> 凌阳 8 位通用单片机 SPMC65 系列单片机原理及开发 VERSION1.2 2006-1-12 凌阳单片机推广中心 http://www.sunplusmcu.com 前 言 通用单片机, 其实泛指微控器, 对于芯片提供厂商, 又指应用于通用领域的单片机产品 ; 广泛应用于家电产品 工业控制产品 仪器仪表设备 智能控制器等当中, 渗透在人们的日常生活 生产活动当中 按照通用单片机的数据总线位数划分,

More information

Static Enforcement of Security with Types

Static Enforcement of Security with Types 例题 1 一个 C 语言程序及其在 X86/Linux 操作系统上的编译结 果如下 根据所生成的汇编程序来解释程序中四个变 量的存储分配 生存期 作用域和置初值方式等方面 的区别 static long aa = 10; short bb = 20; func( ) { } static long cc = 30; short dd = 40; static long aa = 10; func(

More information

第四章 8086汇编语言程序设计

第四章 8086汇编语言程序设计 第四章汇编语言程序设计 几个概念 8086 汇编语言的语句 8086 汇编中的伪指令 8086 汇编中的运算符 汇编语言程序设计 系统调用 几个概念 1. 汇编语言 2. 汇编语言源程序 3. 汇编 4. 汇编程序 5. 什么是汇编语言 (Assembly Language)? 6. 使用指令的助记符 符号地址和标号等编写的程序设计语言 7. 每条指令都有对应的机器码, 不同的 CPU 使用不同的汇编语言

More information

RISC-V 相关技术文档 1 RV32I 基本整数指令集 1.1 基本整数子集的程序员模型有 31 个通用寄存器 x1~x31, 它们保存了整数数值 寄存器 x0 是硬件连线的常数 0 没有硬件连线的子程序返回地址连接寄存器, 但是在一个过程调用中, 标准软件调用约定使用寄存器 x1 来保存返回地

RISC-V 相关技术文档 1 RV32I 基本整数指令集 1.1 基本整数子集的程序员模型有 31 个通用寄存器 x1~x31, 它们保存了整数数值 寄存器 x0 是硬件连线的常数 0 没有硬件连线的子程序返回地址连接寄存器, 但是在一个过程调用中, 标准软件调用约定使用寄存器 x1 来保存返回地 Risc-v 开发 Risc-v 基础知识 北京飞利信科技股份有限公司 2018 年 5 月 RISC-V 相关技术文档 1 RV32I 基本整数指令集 1.1 基本整数子集的程序员模型有 31 个通用寄存器 x1~x31, 它们保存了整数数值 寄存器 x0 是硬件连线的常数 0 没有硬件连线的子程序返回地址连接寄存器, 但是在一个过程调用中, 标准软件调用约定使用寄存器 x1 来保存返回地址 对于

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 STC 单片机比较器原理及实现 主讲 : 何宾 Email:hebin@mail.buct.edu.cn 2016.03 STC 单片机比较器结构 STC15W 系列单片机内置了模拟比较器 对于 STC15W201S STC15W404S, 以及 STC15W1K16S 系列单片机的比较器内部结 构 STC 单片机比较器结构 从图中可以看出, 比较器正端输入 CMP+ 的输入电压来自单片机的 P5.5

More information

<4D F736F F D20B5DA31D5C B5A5C6ACBBFAB8C5CAF62E646F6378>

<4D F736F F D20B5DA31D5C B5A5C6ACBBFAB8C5CAF62E646F6378> AVR 单片机 C 语言开发入门与典型实例 ( 修订版 ) 作者 : 华清远见 第 1 章 AVR 单片机概述 本章目标 本章主要介绍 AVR 单片机的发展历史及其主要应用, 并重点介绍了 ATmega128(L) 单片机, 分析其结构 主要特点 性能封装和引脚定义 本章主 要内容包括以下两个方面 AVR 单片机及其发展 ATmega128(L) 单片机简介 1.1 AVR 单片机及其发展 1983

More information

Microsoft Word - 8-Bit通用IO型单片机20P02B_V03.docx

Microsoft Word - 8-Bit通用IO型单片机20P02B_V03.docx 8-Bit 通用 IO 型单片机 20P02B 版本 :V03 日期 :2012/04/23 www.greenmcu.com 目录 目 录 第 1 章简述... 1 1.1 产品简介... 1 1.1.1 产品特性... 1 1.1.2 系统框图... 2 1.1.3 引脚排列... 3 1.1.4 引脚说明... 3 1.1.5 引脚结构示意图... 4 第 2 章系统... 6 2.1 中央处理器...

More information

共同构成 16 位数据存储单元的地址 当 CPL=1 时, 将堆栈指针 SP 的 16 位地址 与指令中的 7 位地址相加, 形成 16 位的数据存储器地址 (2) 当 SP=0100h, 偏移地址为 50h 时, 寻址 0150h 单元 ; 当 DP=2, 偏移地址为 50h 时, 寻址 0150

共同构成 16 位数据存储单元的地址 当 CPL=1 时, 将堆栈指针 SP 的 16 位地址 与指令中的 7 位地址相加, 形成 16 位的数据存储器地址 (2) 当 SP=0100h, 偏移地址为 50h 时, 寻址 0150h 单元 ; 当 DP=2, 偏移地址为 50h 时, 寻址 0150 DSP 原理与应用教程 ( 张卫宁著 ) 课后习题答案第 3 章 (2014 年 10 月整理 刘忠国 ) 第三章习题答案 : 作业 :3.2, 3.6, 3.7,3.8, 3.11, 3.17, 3.19,3.21 3.1. TMS320C54x 的数据空间寻址方式各有什么特点? 应该应用在什么场合? ( 教材涉及特点较少 ) 答 :TMS320C54x 有 7 种基本的数据寻址方式 : 立即寻址,

More information

<4D F736F F D20CAB5D1E BACDBBE3B1E0D3EFD1D4B5C4BBECBACFB1E0B3CCCAB5D1E92E646F63>

<4D F736F F D20CAB5D1E BACDBBE3B1E0D3EFD1D4B5C4BBECBACFB1E0B3CCCAB5D1E92E646F63> 1 实验目的 实验 2 C 和汇编语言的混合编程实验 学习在 C 程序中使用嵌入式汇编编写程序 了解嵌入式汇编的格式 语言特点 2 实验设备 S3C2410 开发板 ADS1.2 集成开发环境,JTAG 调试器 串口连接线 3 实验原理 在 ARM 的应用开发中,C 语言功能强大且容易编写程序, 但是汇编程序在底层的操作仍然具有 C 程序无法替代的功能, 有时候我们需要在 C 程序中嵌入汇编程序来完成一些直接对底层的诸如寄存器的操作

More information

计算概论A B03 C++语言的基本成分 - 运算成分(2)

计算概论A B03 C++语言的基本成分 - 运算成分(2) 计算概论 A 程序设计部分 C 语言的构成成分 运算成分 李戈 北京大学信息科学技术学院软件研究所 lige@sei.pku.edu.cn C 语言中的运算符 C 语言的运算符范围很宽 求字节数运算符 : sizeof 下标运算符 [ ] 赋值运算符 = 算术运算符 + - * / % 关系运算符 < > == >= > ~

More information

微机第02章1(指令寻址)

微机第02章1(指令寻址) 微机原理及应用 主讲 : 谢维成 http://xweicheng.ys168.com scxweicheng@yahoo.com.cn 西华大学电气信息学院 1 2 第 2 章微机的组成及微处理器的功能结构 2.1 微型计算机的组成 2.2 80X86 系列微处理器的功能结构 3 教学重点 80X86 系列微处理器的功能结构 80X86 的存储器分段管理方式 4 2.1 微型计算机的组成 AB 运算器

More information

Microsoft PowerPoint - Ch3-8086CPU指令系统(2)-寻址.pptx

Microsoft PowerPoint - Ch3-8086CPU指令系统(2)-寻址.pptx 2018 版 微机原理与系统设计 第 3 章 8086CPU 指令系统 董明皓, 博士 西安电子科技大学 dminghao@xidian.edu.cn 目录 1 2 3 4 5 汇编语言基本概念 8086 指令分类数据与转移地址的寻址方式 8086 的六类指令总结 2 目录 1 2 3 4 5 汇编语言基本概念 8086 指令分类数据与转移地址的寻址方式 8086 的六类指令总结 3 8086 指令分类

More information

Application Note Format

Application Note Format USB 說 2 - AD PWM Office: 6F, No. 12, Innovation 1st. RD., Science-Based Industrial Park, Hsin-Chu City, Taiwan, R.O.C Tel: +886-3-6661766 ext.1672 Fax: +886-3-6661765 Etoms Electronics Corp. Publication

More information

微處理機期末專題

微處理機期末專題 微 處 理 機 期 末 專 題 自 動 鋼 琴 組 員 :b92611004 羅 鈞 瑋 b92611008 吳 妍 儂 b92611038 吳 韋 靜 b92611042 林 佳 穎 一 簡 介 本 組 的 主 題 是 自 動 鋼 琴 在 播 放 音 樂 的 同 時, 鋼 琴 會 自 動 按 下 琴 鍵, 被 按 下 的 琴 鍵 所 對 應 到 的 音 階, 就 是 正 在 撥 放 的 樂 曲 的

More information

本科生毕业设计(论文)打印格式的要求

本科生毕业设计(论文)打印格式的要求 汇编语言程序设计实验报告 实验名称上机过程及顺序结构与分支结构程序设计实验 班级软信 -1503 学号 20155362 姓 名薛旗 日期 2016.10.24 成绩评阅人 软件学院 一 实验目的与意义实验一 : 熟悉上机练习过程和伪指令实验 1. 掌握汇编语言程序汇编 连接的方法 ; 2. 熟悉 DEBUG 的基本命令及其功能 (U D T P G A E R); 3. 熟悉并掌握伪指令的用法,

More information

<4D F736F F F696E74202D DB5DAB0CBBDB22DBBE3B1E0D3EFD1D4B3CCD0F22E >

<4D F736F F F696E74202D DB5DAB0CBBDB22DBBE3B1E0D3EFD1D4B3CCD0F22E > 第八讲 授课教师 : 陆俊林王箫音 2012 年春季学期 主要内容 一 汇编语言的主要特点 二 汇编语言程序的结构 三 汇编语言的基本语法 四 汇编语言程序的开发调试 教材相关章节 : 微型计算机基本原理与应用 ( 第二版 ) 第 5 章汇编语言的基本语法第 6 章汇编语言程序设计及应用 1 主要内容 一 汇编语言的主要特点 二 汇编语言程序的结构 三 汇编语言的基本语法 四 汇编语言程序的开发调试

More information

浙江省2004年1月高等教育自学考试

浙江省2004年1月高等教育自学考试 汇编语言试题 A 一 单项选择题 ( 本大题共 20 小题, 每小题 1 分, 共 20 分 ) 在每小题列出的四个备选项中只有一个是符合题目要求的, 请将其代码填写在题后的括号 内 错选 多选或未选均无分 1. 当执行 ADD AX,BX 指令后, 若 AX 的内容为 4E52H 时, 设置的奇偶标志位 PF=0, 下 面的叙述正确的是 ( ) A. 表示结果中含 1 的个数是奇数 B. 表示结果中含

More information

Microsoft Word - sim48x050608_1v151.doc

Microsoft Word - sim48x050608_1v151.doc 经济型输入 / 输出八位单片机 盛群知识产权政策 专利权 盛群半导体公司在全球各地区已核准和申请中之专利权至少有 16 件以上, 享有绝对之合法权益 与盛群公司 MCU 或其它产品有关的专利权并未被同意授权使用, 任何经由不当手段侵害盛群公司专利权之公司 组织或个人, 盛群将采取一切可能的法律行动, 遏止侵权者不当的侵权行为, 并追讨盛群公司因侵权行为所受之损失 或侵权者所得之不法利益 商标权 盛群之名称和标识

More information

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 月 3 日 1 1 INPUTOUTPUT 1 InputOutput 题目描述 用 cin 输入你的姓名 ( 没有空格 ) 和年龄 ( 整数 ), 并用 cout 输出 输入输出符合以下范例 输入 master 999 输出 I am master, 999 years old. 注意 "," 后面有一个空格,"." 结束,

More information

ARM中C和汇编混合编程及示例.doc

ARM中C和汇编混合编程及示例.doc ARM 中 C 和汇编混合编程及示例 在嵌入式系统开发中, 目前使用的主要编程语言是 C 和汇编,C++ 已经有相应的编译器, 但是现在使用还是比较少的 在稍大规模的嵌入式软件中, 例如含有 OS, 大部分的代码都是用 C 编写的, 主要是因为 C 语言的结构比较好, 便于人的理解, 而且有大量的支持库 尽管如此, 很多地方还是要用到汇编语言, 例如开机时硬件系统的初始化, 包括 CPU 状态的设定,

More information

33023A.book(31006A_cn.fm)

33023A.book(31006A_cn.fm) 6 第 6 章存储器构成 存储器构成 目录 本章包括下面一些主要内容 : 6.1 简介...6-2 6.2 程序存储器构成... 6-2 6.3 数据存储器构成... 6-8 6.4 初始化... 6-14 6.5 设计技巧... 6-16 6.6 相关应用笔记... 6-17 6.7 版本历史... 6-18 2004 Microchip Technology Inc. DS31006A_CN 第

More information

<4D F736F F F696E74202D D D6B8C1EECFB5CDB DC6E4CBFBD6B8C1EE2E BBCE6C8DDC4A3CABD5D>

<4D F736F F F696E74202D D D6B8C1EECFB5CDB DC6E4CBFBD6B8C1EE2E BBCE6C8DDC4A3CABD5D> 2018 版 微机原理与接口技术 第三章 8086CPU 指令系统 董明皓 dminghao@xidian.edu.cn 1 2 3 4 5 汇编语言基本概念汇编语言指令分类数据与转移地址的寻址方式 8086 的六类指令总结 1 2 3 4 5 汇编语言基本概念汇编语言指令分类数据与转移地址的寻址方式 8086 的六类指令总结 4. 8086 的指令系统 b b b b b 数据传送指令算术运算指令逻辑运算指令移位

More information

概述 基于 Cortex-M3 内核的 STM32F103 系列单片机, 并没有浮点运算协处理器 在 STM32F103 上进行的浮点运算都是软件模拟实现 考虑到加入浮点运算库需要大约 10K 左右的 FLASH 空间 ( 即 <math.h> 对应的数学库 ), 而且浮点运算速度较慢,EC30-E

概述 基于 Cortex-M3 内核的 STM32F103 系列单片机, 并没有浮点运算协处理器 在 STM32F103 上进行的浮点运算都是软件模拟实现 考虑到加入浮点运算库需要大约 10K 左右的 FLASH 空间 ( 即 <math.h> 对应的数学库 ), 而且浮点运算速度较慢,EC30-E 基于 EC30-EKSTM32 扩展浮点运算 CREATE: 2010/08/05 UPDATE: 2010/08/05 GUTTA Ladder Editor Version 1.1 Version 1.1 http://www.plcol.com http://www.visiblec.com 概述... 2 指令描述... 2 +R... 2 -R... 2 *R... 3 /R... 3 SQRT...

More information

产品特性 高性能, 低功耗的 8 位 MVR8X 微处理内核 先进的 RISC 构架 - 3 级流水线设计 条指令, 大多数指令执行时间为单个时钟周期 - 32 个 8 位通用工作寄存器 - 工作于 16MHz 时性能高达 16MIPS - 单周期的硬件乘法器 (8x8) 非易失性程序和

产品特性 高性能, 低功耗的 8 位 MVR8X 微处理内核 先进的 RISC 构架 - 3 级流水线设计 条指令, 大多数指令执行时间为单个时钟周期 - 32 个 8 位通用工作寄存器 - 工作于 16MHz 时性能高达 16MIPS - 单周期的硬件乘法器 (8x8) 非易失性程序和 LGT8F08A/4A/2A/1A 高性能低功耗 8 位 FLASH 微控制器 数据手册 LOGICGreen Technologies Shenzhen, CHINA 2012-1-11 MBX: biz@logicgreen.com www.logicgreen.com 产品特性 高性能, 低功耗的 8 位 MVR8X 微处理内核 先进的 RISC 构架 - 3 级流水线设计 - 131 条指令,

More information

主要内容 : 汇编语言源程序的结构汇编语言语句格式伪指令语句功能调用汇编语言程序设计方法宏汇编和条件汇编 2015 年 3 月 30 日星期一 7 时 58 分 57 秒 2

主要内容 : 汇编语言源程序的结构汇编语言语句格式伪指令语句功能调用汇编语言程序设计方法宏汇编和条件汇编 2015 年 3 月 30 日星期一 7 时 58 分 57 秒 2 第 4 章 汇编语言程序设计 (1) 2015 年 3 月 30 日星期一 7 时 58 分 56 秒 1 主要内容 : 汇编语言源程序的结构汇编语言语句格式伪指令语句功能调用汇编语言程序设计方法宏汇编和条件汇编 2015 年 3 月 30 日星期一 7 时 58 分 57 秒 2 机器语言 二进制数形式的指令和数据 B0 64 是什么意思? 这就是机器语言 既不直观, 又不易理解和记忆. MOV

More information

Microsoft Word - 8-Bit通用IO型单片机20P01_V01

Microsoft Word - 8-Bit通用IO型单片机20P01_V01 8-Bit 通用 IO 型单片机 20P01 版本 :V01 日期 :2012/04/18 www.greenmcu.com 目录 目录 第 1 章简述... 1 1.1 产品简介... 1 1.1.1 产品特性... 1 1.1.2 系统框图... 2 1.1.3 引脚排列... 3 1.1.4 引脚说明... 3 1.1.5 引脚结构示意图... 4 第 2 章系统... 6 2.1 中央处理器...

More information

幻灯片 1

幻灯片 1 字符串处理是指对一系列的字母或数字的代码进行相同功能的处理 计算机中字符代码一般都采用 ASCII 码, 每个字符的代码占一个字节, 一组字符串存放在一个连续的存储区中 存放在连续的存储区中的这组字符串, 可看为一个数据块 为了提高对字符串 ( 或数据块 ) 的处理效率,8086/8088 指令系统中专门提供了一组对字符串处理的指令, 这些指令包括 : 字符串传送指令 (MOVS) 字符串比较指令

More information

MSP430µ¥Æ¬»úCÓïÑԺͻã±àÓïÑÔ»ìºÏ±à³Ì.doc

MSP430µ¥Æ¬»úCÓïÑԺͻã±àÓïÑÔ»ìºÏ±à³Ì.doc MSP430 单片机 C 语言和汇编语言混合编程 Mixing C and Assembler With the MSP430 刘玉宏 Liu,Yuhong 摘要 : 为了发挥 C 语言和汇编语言各自的优点, 二者需要相互调用函数 本文首先介绍了 MSP430 单片机的 C 语言函数的参数传递规则, 然后对 C 语言和汇编语言的混合编程进行了详细描述, 最后给出应用实例 关键字 :MSP430 单片机

More information

JTAG ICE PC JTAG ICE JTAG ISP... 5 IDE AVR STUDIO JTAGICE JTAGICE... 12

JTAG ICE PC JTAG ICE JTAG ISP... 5 IDE AVR STUDIO JTAGICE JTAGICE... 12 ... 3... 3... 3... 3... 4 1JTAG ICE PC... 4 2JTAG ICE... 4 3... 4 4... 4 5JTAG... 5 6ISP... 5 IDE... 6 1 AVR STUDIO... 6 2 JTAGICE... 6 3JTAGICE... 12 4.... 16 5.... 17 6. JTAG ICE... 19 ISP... 20 1PonyProg2000...

More information

3 程序的机器级表示 2017 年 3 月 11 日 11: 计算机执行机器代码, 用字节序列编码低级的操作, 包括处理数据 管理存储器 读写存储在设备上的数据, 以及利用网络通信 通常情况下, 现代的优化编译器产生的代码至少与一个熟练的汇编语言程序员手工编写的代码一样有

3 程序的机器级表示 2017 年 3 月 11 日 11: 计算机执行机器代码, 用字节序列编码低级的操作, 包括处理数据 管理存储器 读写存储在设备上的数据, 以及利用网络通信 通常情况下, 现代的优化编译器产生的代码至少与一个熟练的汇编语言程序员手工编写的代码一样有 3 程序的机器级表示 2017 年 3 月 11 日 11:29 2. 3. 4. 计算机执行机器代码, 用字节序列编码低级的操作, 包括处理数据 管理存储器 读写存储在设备上的数据, 以及利用网络通信 通常情况下, 现代的优化编译器产生的代码至少与一个熟练的汇编语言程序员手工编写的代码一样有效 用高级语言编写的程序可以在很多不同的机器上编译和执行, 而汇编代码则是与特定机器密切相关的 学习机器代码的意义在于,

More information

第4章

第4章 微机原理及应用 主讲 : 谢维成 http://xweicheng.ys168.com scxweicheng@yahoo.com.cn 西华大学电气信息学院 1 第 4 章汇编语言程序设计 汇编语言的格式 语句行的构成 指示性语句 指令语句 汇编语言程序设计及举例 2 8086 汇编语言程序举例 MY_DATA SEGMENT INFO DB Hello XIHUA University! MY_DATA

More information

66 微型计算机原理与接口技术 ( 第二版 ) 2. 指令格式计算机中的汇编指令由操作码字段和操作数字段两部分组成 (1) 操作码字段 操作码表示计算机要执行的某种指令功能, 由它来规定指令的操作类型, 说明计算机要执行的具体操作, 例如传送 运算 移位 跳转等操作 同时还指出操作数的类型 操作数的

66 微型计算机原理与接口技术 ( 第二版 ) 2. 指令格式计算机中的汇编指令由操作码字段和操作数字段两部分组成 (1) 操作码字段 操作码表示计算机要执行的某种指令功能, 由它来规定指令的操作类型, 说明计算机要执行的具体操作, 例如传送 运算 移位 跳转等操作 同时还指出操作数的类型 操作数的 第 3 章指令系统 本章学习目标 每种 CPU 芯片都配置有相应的指令系统, 供用户编程使用 本章从指令格式 寻址的概念着手, 具体讨论 8086 系统中采用的寻址方式, 分析 8086 指令系统中各类指令的功能 特点及应用, 并引申到 Pentium 微处理器新增指令和寻址方式的特点 通过本章的学习, 重点理解和掌握以下内容 : 指令格式及寻址的有关概念 8086 指令系统的寻址方式及其应用 8086

More information

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP:  ******************* * 关于 Java 测试试题 ****** ******************* * 关于 Java 测试试题 ******************* 問 1 运行下面的程序, 选出一个正确的运行结果 public class Sample { public static void main(string[] args) { int[] test = { 1, 2, 3, 4, 5 ; for(int i = 1 ; i System.out.print(test[i]);

More information

Microsoft Word - S153B.doc

Microsoft Word - S153B.doc SAM8 P153B SAM8P153B 数据手册 14 引脚 8 位 I/O 型 OTP 单片机 盛明公司保留对以下所有产品在可靠性 功能和设计方面的改进作进一步说明的权利 盛明不承担由本手册所涉及的产品或电路的运用和使用所引起的任何责任, 盛明的产品不是专门设计来应用于外科植入 生命维持和任何盛明产品产生的故障会对个体造成伤害甚至死亡的领域 如果将盛明的产品用于上述领域, 即使这些是由盛明在产品设计和制造上的疏忽引起的,

More information

Microsoft Word - 第1章 MCS-51单片机基础.docx

Microsoft Word - 第1章 MCS-51单片机基础.docx 51 单片机应用开发实战手册 作者 : 华清远见 第 1 章 MCS-51 单片机基础 本章目标 单片机作为嵌入式微控制器在工业测控系统 智能仪器和家用电器中得到广泛 应用 虽然单片机的品种很多, 但 MCS-51 系列单片机仍不失为单片机中的主流机 型 本章主要介绍 MCS-51 单片机的基础知识和学习要点, 以目前应用最为广泛的 AT89SXX 系列单片机为例, 介绍单片机的历史发展 应用领域

More information

33023A.book(31026A_cn.fm)

33023A.book(31026A_cn.fm) 26 第 26 章看门狗定时器与休眠模式 目录 看门狗定时器与休眠模式 本章包括下面一些主要内容 : 26.1 简介... 26-2 26.2 控制寄存器... 26-3 26.3 看门狗定时器 (WDT) 的操作... 26-4 26.4 休眠省电模式... 26-7 26.5 初始化... 26-9 26.6 设计技巧... 26-10 26.7 相关应用笔记... 26-11 26.8 版本历史...

More information

Microsoft PowerPoint - chap5.ppt

Microsoft PowerPoint - chap5.ppt 邏輯運算指令的動作 0 1 0 1 0 0 1 1 OR 1 0 1 1 1 0 0 1 1 1 1 1 1 0 1 1 (a) OR 運算 0 1 0 1 0 0 1 1 XOR 1 0 1 1 1 0 0 1 1 1 1 0 1 0 1 0 (c) XOR 運算 希望設定為 1 的位元 罩網標的位元組 新標的位元組 不改變的位元 希望取補數的位元 罩網標的位元組 新標的位元組 不改變的位元 1

More information

目 录

目 录 1 Quick51...1 1.1 SmartSOPC Quick51...1 1.2 Quick51...1 1.3 Quick51...2 2 Keil C51 Quick51...4 2.1 Keil C51...4 2.2 Keil C51...4 2.3 1 Keil C51...4 2.4 Flash Magic...9 2.5 ISP...9 2.6...10 2.7 Keil C51...12

More information

Microsoft PowerPoint ren-advanced topics [兼容模式]

Microsoft PowerPoint ren-advanced topics [兼容模式] 嵌入式系统设计与应用 第五章 ARM 与 Thumb 指令集 西安交通大学电信学院 任鹏举 1 深入 ARM 指令集 在以字节为单位寻址的存储器中, 有两种方式来存储字, 这根据最低有效字节与相邻较高有效字节相比是存在较低的还是较高的地址来划分 On holy wars and a plea for peace 小端 大端 条件执行 ARM 指令集不同寻常的特征是, 条件执行不仅应用于转移指令, 也可以应用于所有的

More information

Microsoft Word - ARM开发详解.doc

Microsoft Word - ARM开发详解.doc ARM 应用系统开发详解 基于 S3C4510B 的系统设计 1 目录 第 1 章 ARM 微处理器概述 5 1.1 ARM-Advanced RISC Machines 5 1.2 ARM 微处理器的应用领域及特点 5 1.2.1 ARM 微处理器的应用领域 5 1.2.2 ARM 微处理器的特点 6 1.3 ARM 微处理器系列 6 1.3.1 ARM7 微处理器系列 6 1.3.2 ARM9

More information

飞利信 MCU 芯片遵循的开源指令集 Rv32IMC 标准特点中文介绍 1 开源指令集 Rv32IMC 概述标准 ISA 扩展是由单个字母构成的名字 例如, 基本整数核心的最前面 4 个标准扩展是 : M 表示整数乘法和除法, A 表示原子性存储器指令, F 表示单精度浮点指令, D 表示双精度浮点

飞利信 MCU 芯片遵循的开源指令集 Rv32IMC 标准特点中文介绍 1 开源指令集 Rv32IMC 概述标准 ISA 扩展是由单个字母构成的名字 例如, 基本整数核心的最前面 4 个标准扩展是 : M 表示整数乘法和除法, A 表示原子性存储器指令, F 表示单精度浮点指令, D 表示双精度浮点 Risc-v 开发 Risc-v 基础知识 北京飞利信科技股份有限公司 2018 年 5 月 飞利信 MCU 芯片遵循的开源指令集 Rv32IMC 标准特点中文介绍 1 开源指令集 Rv32IMC 概述标准 ISA 扩展是由单个字母构成的名字 例如, 基本整数核心的最前面 4 个标准扩展是 : M 表示整数乘法和除法, A 表示原子性存储器指令, F 表示单精度浮点指令, D 表示双精度浮点指令 任何

More information

7 Q&A 11 2

7 Q&A 11 2 PPCA2018: 带五级流 的 MIPS 模拟器 PPCA 助教组 2018.7 目录 1 概述 3 2 时间和要求 3 3 正确性 3 3.1 初始化..................................... 3 3.2 寄存器..................................... 3 3.2.1 通 寄存器..............................

More information

OOP with Java 通知 : Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢

OOP with Java 通知 : Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 : Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 Email: 51141201063@ecnu.cn 复习 : Java 类型 基本类型 boolean, char, 封装 (wrappers) 类 (class) 定义 class MyType { int i;

More information

DPJJX1.DOC

DPJJX1.DOC 8051 111 2K 1 2 3 ' ' 1 CPU RAM ROM / A/D D/A PC CPU 40 68 10 20 8 51 PIII 8051 2 MCS51 8051 8031 89C51 8051 8031 89C51? MCS51 INTEL INTEL 8031 8051 8751 8032 8052 8752 8051 8051 8051 MCS51 8031 8031

More information

OOP with Java 通知 : Project 2 提交时间 : 3 月 15 日晚 9 点

OOP with Java 通知 : Project 2 提交时间 : 3 月 15 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 : Project 2 提交时间 : 3 月 15 日晚 9 点 复习 : Java 类型 基本类型 boolean, char, 封装 (wrappers) 类 (class) 定义 class MyType { int i; double d; 数据 (Fields) char c; void set(double

More information

Microsoft Word - sim46x53_54av110.doc

Microsoft Word - sim46x53_54av110.doc A/D 型八位 OTP 单片机 盛群知识产权政策 专利权盛群半导体公司在全球各地区已核准和申请中之专利权至少有 6 件以上, 享有绝对之合法权益 与盛群公司 MCU 或其它产品有关的专利权并未被同意授权使用, 任何经由不当手段侵害盛群公司专利权之公司 组织或个人, 盛群将采取一切可能的法律行动, 遏止侵权者不当的侵权行为, 并追讨盛群公司因侵权行为所受之损失 或侵权者所得之不法利益 商标权盛群之名称和标识

More information

Microsoft Word - 《C语言开发入门》课程教学大纲-2.doc

Microsoft Word - 《C语言开发入门》课程教学大纲-2.doc C 语言开发入门 课程教学大纲 ( 课程英文名称 ) 课程编号 :201409210011 学分 :5 学分学时 :60 学时 ( 其中 : 讲课学时 :37 学时上机学时 :23 学时 ) 先修课程 : 计算机导论后续课程 :C++ 程序设计适用专业 : 信息及其计算机相关专业开课部门 : 计算机系 一 课程的性质与目标 C 语言开发入门 是计算机各专业必修的基础课程, 是数据结构 C++ Java

More information

untitled

untitled EDM16080-01 Model No.: Editor: 1. ----------------------------------------------------3 2. ----------------------------------------------------3 3. ----------------------------------------------------3

More information

,768 32,767 32K JMP Jnnn (386+) LOOP CALL [Label:] JMP short/near/far address L10: jmp jmp L20: L10 L20

,768 32,767 32K JMP Jnnn (386+) LOOP CALL [Label:] JMP short/near/far address L10: jmp jmp L20: L10 L20 (Jump) (Loop) (Conditional jump) CMP CALL AND SAR/SHR TEST JMP NOT SAL/SHL Jnnn* OR RCR/ROR LOOP XOR RCL/ROL RETn * nnn, JNE JL -128 127-32,768 32,767 32K JMP Jnnn (386+) LOOP CALL [Label:] JMP short/near/far

More information

<4D F736F F D20B5DAC1F9D5C2CFB0CCE2B4F0B0B8A3A8CDF8D5BEA3A92E646F63>

<4D F736F F D20B5DAC1F9D5C2CFB0CCE2B4F0B0B8A3A8CDF8D5BEA3A92E646F63> 第六章中央处理器 2. 简单回答下列问题 ( 参考答案略 ) ( 1) CPU 的基本组成和基本功能各是什么? ( 2) 取指令部件的功能是什么? ( 3) 控制器的功能是什么? ( 4) 为什么对存储器按异步方式进行读写时需要 WMFC 信号? 按同步方式访问存储器时, CPU 如何实现存储器读写? ( 5) 单周期处理器的 CPI 是多少? 时钟周期如何确定? 为什么单周期处理器的性能差? 元件在一个指令周期内能否被重复使用?

More information

Microsoft PowerPoint - chx09_org04_isa.ppt

Microsoft PowerPoint - chx09_org04_isa.ppt 计算机组织与系统结构 指令系统设计 Instruction Set Design ( 第四讲 ) 程旭 2009.3.5 指令系统设计 软件 指令系统 硬件 指令系统体系结构 (Instruction Set Architecture) ADD SUBTRACT AND OR COMPARE... 从程序员来观察 01010 01110 10011 10001 11010... 从计算机来观察 CPU

More information

Microsoft PowerPoint - 01_Introduction.ppt

Microsoft PowerPoint - 01_Introduction.ppt Hello, World C 程序设计语言 第 1 章章观其大略 孙志岗 sun@hit.edu.cn http://sunner.cn prf("hello,, world\n"); 超级无敌考考你 : 如何把 hello 和 world 分别打印在两行? 2004-12-19 A Tutorial Introduction 2 hello.c 打印华氏温度与摄氏温度对照表 计算公式 : C=(5/9)(

More information

static unsigned int n250ms=o; n250ms++; if(n250ms==2){ // 延时 250ms 2=500ms n250ms=0; // 清零计数器 DelayTime&=~Delay500ms;// 复位标志位 WDTCTL=WDTHOLD+WDTPW; 1E

static unsigned int n250ms=o; n250ms++; if(n250ms==2){ // 延时 250ms 2=500ms n250ms=0; // 清零计数器 DelayTime&=~Delay500ms;// 复位标志位 WDTCTL=WDTHOLD+WDTPW; 1E MSP430C 延时程序设计 ( 为了阅读方便, 贴在下面 ) MSP430 是超低功耗 16 位单片机, 越来越受到电子工程师亲睐并得到广泛应用 C 程序直观, 可读性好, 易于移植和维护, 已被很多单片机编程人员所采用 MSP430 集成开发环境 ( 如 IAR Embedded Workbench 和 AQ430) 都集成了 C 编译器和 C 语言级调试器 C SPY 但是 C 语言难以实现精确延时,

More information

2005.book

2005.book ...4... 4... 7...10... 10... 10... 10... 10... 11... 11 PCC... 11 TB170... 12 /... 12...13... 13 BP150 / BP151 / BP152 / BP155... 14...15... 15... 15... 15... 15... 15... 15... 16 PS465 / PS477... 17 PS692

More information