第五章指令系统
AVR单片机指令系统

第五章AVR单片机指令系统计算机的指令系统是一套控制计算机操作的代码,称之为机器语言。
计算机只能识别和执行机器语言的指令。
为了便于人们理解、记忆和使用,通常用汇编语言指令来描述计算机的指令系统。
汇编语言指令可通过汇编器翻译成计算机能识别的机器语言。
AVR单片机指令系统是RISC 结构的精简指令集,是一种简明易掌握﹑效率高的指令系统。
SL-DIY02-3 开发实验器使用AT90S8535 单片机,有118 条指令, 而我们所做的11 个实验程序仅用了34 条指令, 我们重点讲这34 条指令, 其余指令就可自学了。
AVR 器件( 指令速查表) 118 条指令器件AT90S2313/2323/2343/2333 ,AT90S4414/4433/4434/8515,AT90S8534/8535 算术和逻辑指令BRCC k C 清零转位指令和位测试指令ADD Rd,Rr 加法BRSH k ≥转SBI P ,b 置位I/O 位ADC Rd,Rr 带进位加BRLO k 小于转(无符号) CBI P ,b 清零I/O 位◇ADIW Rdl,K 加立即数BRMI k 负数转移LSL Rd 左移SUB Rd,Rr 减法BRPL k 正数转移LSR Rd 右移SUBI Rd,Rr 减立即数BRGE k ≥转(带符号) ROL Rd 带进位左循环SBC Rd,Rr 带进位减BRLT k 小于转(带符号) ROR Rd 带进位右循环SBCI Rd,K 带C 减立即数BRHS k H 置位转移ASR Rd 算术右移◇SBIW Rdl,K 减立即数BRHC k H 清零转移SWAP Rd 半字节交换AND Rd,Rr 与BRTS k T 置位转移BSET s 置位SREG ANDI Rd,K 与立即数BRTC k T 清零转移BCLR s 清零SREG OR Rd,Rr 或BRVS k V 置位转移BST Rr,b Rr 的b 位送T ORI Rd,K 或立即数BRVC k V 清零转移BLD Rd T 送Rr 的b 位EOR Rd,Rr 异或BRIE k 中断位置位转移SEC 置位CCOM Rd 取反BRID k 中断位清零转移CLC 清零CNEG Rd 取补数据传送指令SEN 置位NSBR Rd,K 寄存器位置位MOV Rd,Rr 寄存器传送CLN 清零NCBR Rd,K 寄存器位清零◇LDI Rd,K 装入立即数SEZ 置位ZINC Rd 加1 ◇LD Rd, X X 间接取数CLZ 清零ZDEC Rd 减1 ◇LD Rd, X+ X 间接取数后+SEI 置位ITST Rd 测试零或负◇LD Rd,-X X 间接取数先-CLI 清零ICLR Rd 寄存器清零◇LD Rd,Y Y 间接取数SES 置位SSER Rd 寄存器置FF ◇LD Rd,Y+ Y 间接取数后+CLS 清零S 条件转移指令◇LD Rd, –Y Y 间接取数先-SEV 置位V RJMP k 相对转移◇LDD Rd,Y+q Y 间接取数+q CLV 清零V◇IJMP 间接转移(Z) ◇LD Rd, Z Z 间接取数SET 置位T RCALL k 相对调用◇LD Rd, Z+ Z 间接取数后+CLT 清零T◇ICALL 间接调用(Z) ◇LD Rd, –Z Z 间接取数先-SEH 置位H RET 子程序返回◇LDD Rd, Z+q Z 间接取数+q CLH 清零HRETI 中断返回◇LDS Rd,K 从SRAM 装入NOP 空操作CPSE Rd,Rr 比较相等跳行◇ST X ,Rr X 间接存数SLEEP 休眠指令CP Rd,Rr 比较◇ST X+ ,Rr X 间接存数后+WDR 看门狗复位CPC Rd,Rr 带进位比较◇ST –X,Rr X 间接存数先-90 条指令为CPI Rd,K 与立即数比较◇ST Y ,Rr Y 间接存数Attiny11/12/15/22=SBRC Rr,b 位清零跳行◇ST Y+ ,Rr Y 间接存数后+□+89 条基本指令是SBRS Rr,b 位置位跳行◇ST –Y,Rr Y 间接存数先-AT90S1200SBIC P ,b I/O 位清零跳行◇STD Y+q ,Rr Y 间接存数+qSBIS P ,b I/O 位置位跳行ST Z ,Rr Z 间接存数BRBS s,k SREG 位置位转◇ST Z+ ,Rr Z 间接存数后+ 118 条指令器件= BRBC s,k SREG 位清零转◇ST –Z,Rr Z 间接存数先- ◇+ 90 条指令器件BREQ k 相等转移◇STD Z+q ,Rr Z 间接存数+qBRNE k 不相等转移◇STS k,,Rr 数据送SRAM说明: SL-DIY02-3 开发实验器的 11 个实验程序例子 , 仅用 34 条指令( 以红色表示 )1. 不带进位加法ADD 一不带进位加说明:两个寄存器不带进位 C 标志加,结果送目的寄存器 Rd 。
第5章 指令系统

1.立即寻址方式
寻找的操作数紧跟在指令操作码之后,也就是说 地址码字段存放的不是操作数的地址,而是操作 数本身。 立即寻址方式的特点是:指令执行的时间很短, 因为不需要访问存储器获取操作数,从而节省了 访问存储器的时间;立即寻址方式的使用范围很 有限,主要用于给寄存器赋初值。 【例5-1】 MOV AX,67 指令执行后,(AX)=67。
操作的示意图如下图所示,这条指令的执行结果为 (AX)=3412H。
存储器 操作码 操作码 AX 00H 代码段 位 移 DISP 量
01H 20000H
201A0H 12H 34H
数据段
6.基址变址寻址
操作数的偏移地址是一个基址寄存器(BX、BP) 和一个变址寄存器(SI、DI)的内容之和。基址 变址寻址方式的格式表示为:[基址寄存器名][变 址寄存器名]或[基址寄存器名+变址寄存器名]。操 作数默认位于那个段中,是由指令中使用的基址 寄存器决定的,如果指令中指定的基址寄存器是 BX,则操作数默认在数据段中,取DS寄存器的 值作为操作数的段地址值;如果指令中指定的基 址寄存器是BP,则操作数默认在堆栈段中,取SS 寄存器的值作为操作数的段地址值,从而计算得 操作数的20位物理地址,继而访问到操作数。
每条指令由两部分组成:操作码字段和地
址码字段。格式如图5-1所示:操作码操作 数(地址码)
操作码 操作数(地址码)
图5-1 指令格式
操作码字段:用来说明该指令所要完成的操作。 地址码字段:用来描述该指令的操作对象。一般是直接给 出操作数,或者给出操作数存放的寄存器编号,或者给出操作 数存放的存储单元的地址或有关地址的信息。 根据地址码字段所给出地址的个数,指令格式可分为零地 址、一地址、二地址、三地址、多地址指令。大多数指令需要 双操作数,分别称两个操作数为源操作数和目的操作数,指令 运算结果存入目的操作数的地址中去。这样,目的操作数的原 有数据将被取代。
第5章指令系统习题

解:在三地址指令中三个地址字段占3×3 = 9位。 剩下12-9=3位作为操作码,四条指令的操作码分 别为000、001、010、011。 在单地址指令中,操作码可以扩展到12-3=9 位,其中前3位的代码是上述四个操作码以外的4 个编码,即首位为1。编码范围是1xxxxxxxx。共 有28=256个编码,取其前254个,100000000~ 111111101。剩下2个作为扩展用。 对于零地址指令,全部12位指令代码都是操 作码,其中前9位剩下2个编码与后3位的8个编码 正好构成16个操作码。
指令字长为16位,每个地址码为6位,设计 14条二地址指令,100条一地址指令,100 条零地址指令.
0000 1101 1110 1111 1111 1111
ห้องสมุดไป่ตู้
****** ****** ****** ******(14条二指令) 000000 ****** 100011 ******(100条一地址指令) 100100 000000 100101 100011(100条零地址指令)
某微机的指令格式如下: 15…..10 9..8 7…..0
操作码 X D
其中D为偏移量,X为寻址特征,具体定义如下: X=00 直接寻址 X=01 用变址寄存器X1变址寻址 X=10用变址寄存器X2变址寻址 X=11相对寻址 (PC)=1234H,(X1)=0037H,(X2)=1122h,指出下 列指令的有效地址. A)4420H B)2244H C)1322H D)3521H E)6723H
在计算机系统中, 地址为20H的单元中存放内容为30H; 地址为30H的单元中存放内容为40H; 地址为40H的单元中存放内容为50H; 地址为50H的单元中存放内容为60H; 下列操作后,AX存放内容是什么? Mov ax,20H MOV AX,(20H); MOV AX,((20h)); MOV AX,30H; MOV AX,(30H); MOV AX,((30H))
第5章 指令系统

第五章指令系统操作系统:DOS,WINDOWS,UNIX,......程序设计语言服务程序:KV300,PCTOOLS,...机器语言:汇编语言:高级语言解释执行编译执行PASCAL易教好学FORTRAN 计算C 长于计算控制BASIC易学好记COBOL事务管理应用软件:WORD,EXCEL,ACCESS,DBASE,......二进制,CPU直接执行的指令系统把源程序汇编成机器语言目标程序计算机系统软件5.1 指令系统概述计算机系统中运行的软件有系统软件和应用软件两种。
系统软件对整个计算机系统进行调度、管理、监视、服务,为用户提供使用方便,扩大机器功能,提高机器使用效率。
应用软件是用户针对某种领域实际应用需求而开发的软件。
许多通用商品化的应用软件现已成为系统软件,如Word 等。
前述所有各种软件的设计基础就是计算机的指令系统。
名词解释:指令:命令计算机直接进行某种基本操作的二进制代码串,也叫机器语言代码。
每条指令可以完成一个独立的算术运算或逻辑运算操作。
从计算机组成的层次结构来说,计算机的指令有微指令、机器指令和宏指令。
微指令是微程序级的命令,它属于硬件;宏指令是由若干条机器指令组成的软件指令,它属于软件;而机器指令则介于微指令与宏指令之间。
指令系统:一台计算机能直接理解与执行的全部指令的集合称为该机的指令系统,也叫机器语言。
指令系统是进行计算机逻辑设计和编制程序的基本依据。
它直接说明了这台计算机的功能.不同类型CPU的指令系统是不能混用与兼容的,但同一系列的CPU一般升级后指令都有扩充,并可兼容。
复杂指令系统计算机(CISC)和精简指令系统计算机(RISC)5.2指令格式5.2.1 指令的结构指令字:代表指令的一组二进制代码信息;指令长度:指令字中二进制代码的位数;1、典型的指令格式OP A操作码OP——指明操作性质的命令码,提供指令的操作控制信息。
操作对象A——说明操作数存放的地址,有时则就是操作数本身。
第五章 指令系统习题

第五章指令系统一、选择题1、采用直接寻址,操作数在中。
A、主存B、寄存器C、硬盘D、光盘2、为了缩短指令中某个地址段的位数,有效的方法是采取。
A、立即寻址B、变址寻址C、间接寻址D、寄存器寻址3、指令系统采用不同寻址方式的目的是。
A、实现存储程序和程序控制B、缩短指令长度,扩大寻址空间,提高编程灵活性C、可以直接访问外存D、提供扩展操作码的可能,并降低指令译码难度4、假设寄存器R中的数值为200,主存地址为200和300的地址单元中存放的内容分别是300和400,则方式下访问到的操作数为200。
A、直接寻址200B、寄存器间接寻址(R)C、存储器间接寻址(200)D、寄存器寻址R5、输入输出指令的功能是。
A、进行算术运算和逻辑运算B、进行主存和CPU之间的数据传送C、进行I/O设备和CPU之间的数据传送D、改变程序执行的顺序6、下列关于RISC的描述中,不正确的是。
A、只选用简单的,使用频率高的指令,所以采用RISC的CPU的性能较差,不能运行复杂的指令B、指令长度固定,指令格式和寻址方式少C、采用硬布线逻辑,提高指令执行的速度D、采用指令流水线技术,大部分指令都能在一个机器周期中完成。
7、间接寻址是指。
A、指令中直接给出操作数地址B、指令中直接给出操作数C、指令中间接给出操作数D、指令中间接给出操作数的地址8、基址寻址方式中,操作数的有效地址等于。
A、基址寄存器的内容加上形式地址(偏移量)B、变址寄存器的内容加上形式地址(偏移量)C、程序计数器的内容加上形式地址(偏移量)D、堆栈寄存器的内容加上形式地址(偏移量)8.通常指令编码的第一个字段是__ __A.操作B.指令C.操作码D.控制码9.堆栈常用于 _A.程序转移B.输入输出C.数据移位D.保护程序现场10.在堆栈中保持不变的是_ _A.栈指针B.栈底C.栈顶D.栈中数据11.设寄存器R=1000,地址1000处的值为2000,2000处为3000,PC的值为4000,用相对寻址方式,-2000(PC)的操作数是__ __A.4000 B.3000C.5000 D.700012.直接转移指令的功能是将指令中的地址代码送入__ __A.PC B.累加器C.存储器 D.地址寄存器13.以下的 D 不能支持数值处理。
第五章 PLC的步进顺控指令系统

OUT Y 3 STL S 24
OUT Y STL STL S S
OUT Y
OUT Y 4
连续用STL 表示并行会合
当转换条件X1接通时,由状态器521分两路同时 进入状态器522和S24,以后系统的两个分支并 行工作。图5-8中水平双线强调的是并行工作, 实际上与一般状态编程一样,先进行驱动处理, 然后进行转换处理,从左到右依次进行。当两 个分支都处理完毕后,S23、S25同时接通,转 换条件X4也接通时,S26接通,同时S23、S25自 动复位。多条文路汇合在一起,实际上是STL指 令连续使用(在梯形图上是STL接点串联)。STL 指令最多可连续使用8次,即最多允许8条并行 支路汇合在—起。
第三节 选择性分支与汇合及其编程
一、选择性分支与汇合的特点
从多个分支流程 中选择某一个单 支流程,图。
分支选择条件X1和X4不能同时接通。在状态器 S2l时,根据X1和X4的状态决定执行哪一条分 支。当状态器S22或S24接通时,S2l自动复位。 状态器S26由S23或S25置位,同时,前一状态 器S23或S25自动复位。
下面以图5-2所示的机械手为例,进一步说 明状态转移图。机械手将工件从A点向B点移 送。机械手的上升、下降与左移、右移都是 由双线圈两位电磁阀驱动气缸来实现的。抓 手对物件的松开、夹紧是由一个单线圈两位 电磁阀驱动气缸完成,只有在电磁阀通电时 抓手才能夹紧。该机械手工作原点在左上方, 按下降、夹紧、上升、右移、下降、松开、 上升、左移的顺序依次运行。它有手动,自 动等几种操作方式。
图5-l是一个简单状态转 移图实例。状态器用框 图表示。框内是状态器 元件号,状态器之间用 有向线段连接。其中从 上到下、从左到右的箭 头可以省去不画,有向 线段上的垂直短线和它 旁边标注的文字符号或 逻辑表达式表示状态转 移条件。旁边的线圈等 是输出信号。
课件:软件工程--05指令系统

5. 输入输出
入
端口地址
CPU 的寄存器
如 IN AL, n IN AX, n IN AL, DX IN AX, DX
出 CPU 的寄存器
端口地址
如 OUT n, AL OUT n, AX OUT DX, AL OUT DX, AX
五、操作码编码
操作码的编码有两种方式 - Fixed Length Opcodes (定长操作码法) - Expanding Opcodes (扩展操作码编法)
ADD D + ( N -1 ) DIV # N STA ANS 共 N + 2 条指令
LDA # 0 LDX # 0 M ADD X, D INX CPX # N BNE M DIV # N STA ANS 共 8 条指令
X 为变址寄存器 D 为形式地址 (X) +1 X (X) 和 #N 比较 结果不为零则转
10. 堆栈寻址
(1) 堆栈的特点 硬堆栈
堆栈 软堆栈
多个寄存器 指定的存储空间
先进后出(一个入出口) 栈顶地址 由 SP 指出
进栈 (SP)– 1 SP 出栈 (SP)+ 1 SP
SP
1FFFH 2000 H
12F0F0F0 H
–1
进栈
栈顶 栈顶
SP
1FFFH 2000 H
12F0F00F HH
无条件转移;……
二、操作数类型
地址
无符号整数
数字 定点数、浮点数、十进制数 位、位串、字符和字符串 ASCII 逻辑数 逻辑运算
三、寻址方式
确定 本条指令 的 操作数地址
数据寻址
下一条 欲执行 指令 的 指令地址 指令寻址 • 指令的寻址——简单
《计算机组成原理》5-指令系统

◆ CPU中设置程序计数器(PC)对指令的顺序号进行计 数。PC开始时存 放程序的首地址,每执行一条指令,PC 加”1”,指出下条指令的地址, 直到程序结束。
跳跃寻址 Leabharlann 转移指令指出AA22AA33
…
…
…
…
1111 1110 A2 A3
12 位操作码
1111 1111 0000 1111 1111 0001
AA33
…
…
…
…
1111 1111 1110 A3
16 位操作码
…
…
1111 1111 1111 0000 1111 1111 1111 0001 1111 1111 1111 1111
24
双字
28
双字(地址32)▲
32
双字
36
边界未对准
地址(十进制)
字( 地址2)
半字( 地址0)
0
字节( 地址7) 字节( 地址6)
字( 地址4)
4
半字( 地址10)
半字( 地址8)
8
5.2.2 数据类型
2、数据在计算机中存放方式
存储字长内部字节的次序
例: 12345678H如何存储? 12 34 56 78H
5.3.1指令寻址
指令寻址----计算指令有效地址的方法
指令地址
指令
指令地址寻址方式
PC +1
0 LDA
11 ADD 22 DEC 33 JMP
4 LDA
5 SUB 6 INC
77 STA 88 LDA
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第六节 高级指令
一、 高级指令的构成
高级指令由高级指令功能号(F0~F165)、助记符和操作数三部分构成。
高级指令功能号用于输入高级指令。
编程时,高级指令前应加触发信号。
编程时,若多个高级指令连续使用同一触发信号,则不必每次都写出该触发信号。
DF )。
二、高级指令的类型
1、数据传输指令
这些指令可对16位或32位数据进行拷贝或交换。
F0 MV , WX0 , WR1
注:[* ] 标志(特殊继电器)可用于该指令(根据情况通断);
[ ] 空白标志(特殊继电器)不可用于该指令(保持原状态)。
2、BIN(二进制)算术运算指令
这些指令可对16位或32位数据进行加、减、乘、除运算。
如表5.37所示。
3、BCD码算术运算指令
这些指令可对BCD码数据进行加、减、乘、除运算。
4、数据比较指令
这些指令可对16位或32位数据进行比较。
5、逻辑运算指令
这些指令可实现逻辑(与、或、异或、同或)运算。
6、数据转换指令
这些指令可对16位或32位数据按指定格式转换。
7、数据移位指令
这些指令可将数据以字为单位或以十六进制数的位为单位移位。
8、可逆计数器和左/右移位寄存器指令
这些指令可实现加/减计数和数据左/右移位。
9、数据循环移位指令
这些指令可使数据向右或向左循环移位。
10、位操作指令
这些指令以位为单位处理数据。
11、辅助定时器指令
该指令是以0.01s 为单位的延时动作定时器。
号
12、特殊指令
这些指令执行特殊功能以控制FP1的运行。
13、高速计数器特殊指令
这些指令执行高速计算器功能。