第3章 指令系统

合集下载

第三章 指令系统--指令

第三章 指令系统--指令

寻址方式指令系统
数据传送指令算术运算指令逻辑运算指令串操作指令
控制转移指令处理器控制指令
通用传送指令
累加器专用传送指令
地址传送指令
标志传送指令
对标志位的影响: 除SAHF和POPF指令外,其余的所有数据传送类指令
格式:
功能:
操作数类型:
DS,100H

堆栈:执行
PUSH
POP
SS指向堆栈段的起始位置SP指定栈顶
PUSH AX PUSH DS POP DS POP AX
格式:
oprd1,
立即数、段寄存器和
不影响
通用传送指令
累加器专用传送指令地址传送指令
标志传送指令
LEA (Load Effective Address)
LDS (Load pointer into register and DS) LES (Load pointer into register and ES)
LEA LEA
LEA
数据传送指令算术运算指令逻辑运算指令串操作指令
控制转移指令处理器控制指令
实现二进制
所有算术运算指令均所有算术运算指令均
四则运算是计算机经常进行的一种操作。

请注意算术运算指令对
只有一个操作数:寄存器或存储单元对操作数加
用于计数器和地址指针的调整
不影响进位
对操作数减
用于计数器和地址指针的调整不影响进位。

第三章 指令系统

第三章  指令系统

(1) 三地址双操作
50
指令
数指执令行一条三地址的加法指令需要访问514
下条指令
次主.存。
个 ( 假 单 存A显 设 元 放1号第中地指中在三单)址令,主一取地O,存第存元址次第P指放一的(双中从二令在、1A操2取5操的主第0作第0作含存二0)数一义 的 操号数存指和→为 5 作操令单,的2: 0 数A有作元第303分3号0数中四0别,取次0第指将号三令加单次,法元从第的。2二结1200000次果0从保第第1存一二号操操0到...单作作0主元数数
寄存器/存储器:直接给出寄存器或存储 器的地址码(名称)即可; 注:寄存器(CPU内部或外围设备内部) 及存储器的编址方式: 1)字编址、字节编址、位编址; 2)统一编址、非统一编址
操作数的编码方式
例:设某机主存容量为16MB ,机器 字长16 位,若最小寻址单位为字节 (按字节编址) ,其地址码为多少位? 若最小寻址单位为字(按字编址) ,其 地址码又为多少位?
共需12 条指令,其中7 条一地址的进、出栈指令, 5 条零地址的算术运算指令。进、出栈指令3 次访 存,算逻指令4 次访存,执行此程序共访存7 × 3 + 5 × 4 = 41 次。
例: 某一机器的指令系统,操作码8 位, 地址码均为16 位,CPU 与主存之间每次传 送16 位数据。A 、B 、C 、D 、E 表示字地 址,存放16 位数据。
常用指令寻址方式
顺序寻址方式 跳跃寻址方式:直接、相对、间接
栈及相关概念
1、栈的分类: 用寄存器实现堆栈(串联堆栈) 内存中开辟堆栈区
自底向上生成堆栈 自顶向下生成堆栈 2、栈的建立: 将栈顶地址传送到SP中 3、栈的操作: PUSH/POP、MOV
IA32指令系统

第3章指令系统

第3章指令系统
解:程序如下: 程序如下: ORG NUM DATA STRING DATA START: CLR MOV LOOP: LOOP: CJNE SJMP NEXT: NEXT: INC INC SJMP COMP: COMP: MOV SJMP 0800H 20H 21H A R0, R0,#STRING @R0, @R0,#24H,NEXT COMP A R0 LOOP NUM, NUM,A $
单片机原理 及接口技术
第3 章
89C51单片机指 89C51单片机指 令系统
LOGO
LOGO
程序设计举例
一 二 三 四 五 六
简单程序设计举例 分支程序 循环程序 子程序设计举例 代码转换程序设计举例 运算类程序设计举例
BACK
LOGO
一、 简单程序设计举例
例1 :拆字。将片内RAM 20H单元的内容拆成两段,每段 拆字。将片内RAM 20H单元的内容拆成两段 单元的内容拆成两段, 四位。并将它们分别存入21H 22H单元中 程序如下: 21H与 单元中。 四位。并将它们分别存入21H与22H单元中。程序如下:
练习: 练习: 1.将片外RAM 2000H单元开 始的20个字节,传送到片 内RAM 30H单元开始的单元 中去。 2.将片内RAM 20H单元开始 的10个字节,传送到片内 RAM 30H单元开始的单元中 去。 3.将片内RAM BK1单元开始 的COUNT个字节,传送到片 外RAM BK2单元开始的单元 中去。
Back
LOGO
3.4
思考题与习题
1. 简述下列基本概念: 指令、指令系统、机器语言、汇编语言、高级 语言。 2. 什么是计算机的指令和指令系统? 3. 简述89C51汇编指令格式。 4. 简述89C51的寻址方式和所能涉及的寻址空间。 5. 要访问特殊功能寄存器和片外数据存储器,应采用哪些寻址方式?

第3章.指令系统控制程序转移类指令new下

第3章.指令系统控制程序转移类指令new下

;3字节指令
同样地,使用时,可以将rel理解成标号,即: CJNE A,#data, 标号 CJNE A,direct,标号 CJNE Rn,#data,标号 CJNE @Ri,#data,标号
⑵比较(不相等)转移指令
① CJNE A,#data,rel
;先(PC)+3→PC
若(A)>#data,则(PC)+rel→PC,且0→CY; 若(A)<#data,则(PC)+rel→PC,且1→CY; 若(A)=#data,则顺序执行,且0→CY。
② rel为负数时,范围为:-128~-1 (80H~FFH)。
③相对转移指令“SJMP rel”
★正向跳转时: rel=目的地址-源地址-2
=地址差-2。
例如:
0157H
0100H:SJMP rel
设转移的地址为0157H,则: rel=0157H-0100H-2=55H。故该指令可写成:
0100H:SJMP 55H 其机器码为: 80H 55H
⑵位置1指令
SETB C SETB bit
; 1→ CY。 1字节指令 ;1→bit 。 2字节指令
2. 位修正指令
⑶位取反指令
CPL C
;(C)→C, 1字节指令
CPL bit ;(bit) → bit。 2字节指令
3. 位逻辑运算指令 ⑴位逻辑“与”指令 ANL C, bit ;(C) ∧ (bit)→C。 2字节指令 ANL C, /bit ;(C) ∧ (bit) →C。 2字节指令
; 否则顺序执行。
JNZ rel ;(PC)+2→PC。若A≠0,则转移到(PC)=(PC)+rel ;
;否则顺序执行。

第3章 PIC单片机指令系统

第3章 PIC单片机指令系统

第3章 指令系统3.1 3.2 3.3 3.4 汇编语言 寻址方式 PIC18F452指令系统 程序设计举例3.1汇编语言• 指令:是 指令:是CPU CPU根据人的意图来执行某种操作的命令。

根据人的意图来执行某种操作的命令。

• 程序设计语言:是实现人机交换信息的基本工具,分为机 器语言、汇编语言和高级语言。

• 机器语言:用二进制编码表示每条指令 机器语言:用二进制编码表示每条指令,是计算机能 ,是计算机能直接 直接 识别和执行的语言。

识别和执行 的语言。

• 汇编语言:是用助记符、符号和数字 汇编语言:是用助记符、符号和数字等来表示指令的程序 等来表示指令的程序 设计语言。

它与机器语言指令是一一对应的。

设计语言。

它与机器语言指令是一一对应的。

? 汇编语言编写的程序能否直接被计算机执行? • 高级语言:面向问题和计算过程的语言,可通用于各种不 同的计算机。

用户编程时不必了解所用计算机的指令系统。

Why study assembly language?• Many critical programs are written in assembly language • To better understand the functions and architecture of a computer system • To better understand the working of high level languages • To design efficient programs • A tool for writing system programs • Embedded systems development– Mixed languages programming3• PIC18F452 PIC18F452汇编语言指令格式 汇编语言指令格式 标记段: 标记段 :操作码 [目的 目的操作数 操作数][, ][,源 源操作数 操作数][ ][; ;注释 注释] ]MOVLW BTFSS BCF GOTO 0x7F WREG, 7 WREG, 0 Stop ;load test data ;clear bit 0Stop:• 其中操作码 其中操作码是必不可少的。

第3章 AT89S51的指令系统

第3章 AT89S51的指令系统
1. 累加器A 清“0”指令
(1) CLR A A清“0”,不影响Cy、Ac、OV等标志位。
2. 累加器A 求反指令
(2) CPL A A的内容按位逻辑取反,不影响标志位。
3.2.3 逻辑运算指令(25条)续
3.左环移指令
(3)RL A A7 A6 A5 A4 A3 A2 A1 A0
A向左循环移位,位7循环移入位0,不影响标志位。 4.带进位左环移指令
3.2.4 控制转移类指令(17条)续 4.条件转移指令(2条)
(4)JZ rel ;若A内容为“0”,则转移 (5)JNZ rel ;若A内容非“0”,则转移
规定的条件满足,则进行转移,条件不满足 则顺序执行下一条指令。
3.2.4 控制转移类指令(17条)续
5.比较不相等转移指令(4条)
举例: CJNE A,direct,rel
•不影响标志位:Cy、Ac和OV • 影响标志位:P(仅当A为目的操作数时)
3.2.1 数据传送类指令(28条)续
举例: MOV A,70H ;(70H)→A
MOV A,#70H ;70H→A
MOV A,R0 MOV A,@R0
;(R0)→A ;((R0))→A
3.2.1 数据传送类指令(28条)续
累加器A与外部数据存储器传送指令(4条) ;((DPTR))→A,读外RAM/IO MOVX A,@DPTR ;((Ri))→A,读外RAM/IO MOVX A,@Ri
MOVX @DPTR,A MOVX @Ri,A ;(A)→((DPTR)),写外RAM/IO ;(A)→((Ri)),写外RAM/IO
ACALL addrll ;短调用指令
2KB范围内的调用子程序的指令。
•与AJMP指令相类似,是为了与MCS-48中的CALL 指令兼容而设的。

第3章--Cortex-M3-指令系统

第3章--Cortex-M3-指令系统

3.2.2指令的可选后缀
(2)!后缀 如果指令地址表达式中不含!后缀,则基址寄存器中的地址值不会发生变化。 指令中的地址表达式中含有!后缀时,指令执行后,基址寄存器中的地址值将发 生变化,变化的结果如下: 基址寄存器中的值(指令执行后)=指令执行前的值+地址偏移量
例 3.3 分别执行下面两条指令有何区别?
18
3.3 指令的寻址方式
• 3.3.1 立即数寻址 • 3.3.2 寄存器寻址 • 3.3.3 寄存器间接寻址 • 3.3.4 寄存器移位寻址 • 3.3.5 基址变址寻址 • 3.3.6 多寄存器寻址 • 3.3.7 相对寻址 • 3.3.8 堆栈寻址
3.3.1立即数寻址
• 立即数寻址也叫立即寻址,操作数本身就在指令中给出,取出指令也就
第3章 Cortex-M3 指令系统
1
第3章 Cortex-M3 指令系统
• 3.1 指令基础 • 3.2 汇编语言 • 3.3 寻址方式 • 3.4 指令集
2
3.1 指令基础
• 3.1.1 程序设计语言的层次结构 • 3.1.2 程序的执行过程 • 3.1.3 Cortex M3寄存器
3.1.1程序设计语言的层次结构
S后缀通常用于对条件进行测试,例如是否有溢出,是否进位等;根据 这些变化,就可以进行一些判断,如是否大于,是否相等;从而可能影响 指令执行的顺序。
✓ 条件后缀和S后缀的关系如下: 如果既有条件后缀又有S后缀,则书写时S排在后面, 如:ADDEQS R1,R0,R2 该指令在Z=1时执行,将R0+R2的值放入R1,同时刷新条件标志位。
无法表示的32位数, 只有通过逻辑或算术运算等其它途径获得了. 比如0xffffff00, 可以通过0x000000ff按位取反得到.

第3章单片机指令系统

第3章单片机指令系统

寄存器寻址 寻址方式 寄存器间接寻址
基址加变址寄存器间接寻址 相对寻址 位寻址
1.立即寻址

操作数直接由指令给出,通常紧跟指令操作码之 后的字节是操作数,该操作数被称为立即数。

立即寻址所对应的寻址空间为:ROM 立即数:8/16位二进制数
如:MOV MOV A,#7AH DPTR, #1234H
注意:
① 适当选择SFR。寻址SFR时,可以用直接地址,也可以 用寄存器名,但后者更容易理解和阅读 如: MOV A,0D0H ; (A)←(D0H) MOV A,PSW ; (A)←(PSW)
② 适当选择累加器的表达式
累加器A表达方式 A → 寄存器寻址 ACC 直接寻址 E0H ;04H 单字节
如:
INC A INC ACC INC 0E0H
;05E0H 双字节
③ 注意地址的区别(位地址与字节地址)
如: MOV A,30H MOV C,30H ; (A)←(30H) ;(C)←(30H) 字节操作 位操作
3. 寄存器寻址

操作数在寄存器中
可用寄存器有: (1)四组工作寄存器R0~R7共32个工作寄存器 (2)SFR中有A、AB、DPTR及CY 如: MOV R3,#12H MOV A,R3
注意:① 立即数前加“#”号 ② 立即寻址方式的指令是双字节的(第1个字节为 操作码,第2个字节是操作数) ③ 操作数是放在ROM内的常数
2. 直接寻址

指令中直接给出操作数所在的单元地址或位地址
直接寻址可访问的存储空间: (1)内部RAM低128个单元 在指令中直接以单元地址形式给出,地址范围00H~7FH (2)特殊功能寄存器SFR 直接寻址是SFR惟一的寻址方式,SFR可以用单元地址给出, 也可用寄存器符号形式给出(但A、AB、DPTR除外) (3)211个位地址空间 内部RAM中可位寻址的20H~2FH单元对应的128个位地址空间 11个SFR中83个可用的位地址空间
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3.3
指令系统
一、加载和存储指令
二、算术运算指令
三、逻辑运算指令
四、程序控制指令
五、重复操作指令
六、并行操作指令

加载和存储指令
1 加载指令 2 存储指令 3 条件存储指令 4 其它加载和存储指令
1.加载指令
加载指令用于将数据存储单元中的数据、立即数或
源 累 加 器 src 的 值 装 入 目 的 累 加 器 dst 、 暂 存 器 T 和 ARP/ASM/DP位段。 Smem、#lk、src dst、T、 ARP/ASM/DP
③ 例:假设SP=0010h,DP=3
SSBX CPL LD @1,A
ADD @2,A
五、间接寻址
间接寻址就是以辅助寄存器ARx(x=0-7)中的值作为地 址对数据空间进行寻址。 间接寻址不仅可以从存储器中读或写一个单16位的操作数, 而且还可以在一条指令中访问两个数据存储器单元。
五、间接寻址
(6) LD #k,dst
(8) LD #lk,16,dst (9) LD src,ASM[,dst] (11)DLD Lmem,dst
;把短立即数装入到累加器
;把长立即数左移16位后装入到累加器 ;累加器左移ASM位,-16≦ASM≦15 ;长字装入累加器
(7) LD #lk[,SHFT],dst ;把长立即数左移后装入到累加器,0≦SHFT≦15
累加器 A
高有效字
低有效字
寻址1000h时的 32位字存储顺序
寻址1001h时的 32位字存储顺序
1000h 1001h
高有效字 低有效字
1000h 1001h
低有效字 高有效字
3.2 寻址方式
一、立即寻址
二、绝对寻址
三、累加器寻址
四、直接寻址 五、间接寻址 六、存储器映射寄存器寻址 七、堆栈寻址
;k9-DP ;k5-ASM,k5=-16~15 ;k3-ARP,k3=0~7
⑥ LD Smem, ASM ;(Smem(4~0))-ASM
3)其它加载指令
① LDM MMR,dst ;(MMR)-dst(15~0),不受SXM影响 ② LDU Smem,dst ;把不带符号的存储器值装入到累加器,不 ;受SXM影响 ③ LDR Smem,dst ;dst=(Smem)<<16+(1<<15) 舍入操作
PSHM
POPM STLM
MMR
MMR src, MMR
STM
#lk, MMR
七、堆栈寻址
① 对堆栈空间寻址,C54x DSP的堆栈区安排在数据空间,处
理器使用堆栈指针SP来寻址堆栈空间,SP始终指向栈顶。 ② 使用堆栈寻址方式访问堆栈的指令共有4条: PSHD Smem PSHM MMR
POPD Smem
绝对寻址就是指令中包含要寻址的存储单元的16位地址。 (1)数据存储器(dmad)寻址 用程序标号或数据来确定指令中所需要的数据空间地址。 MVDK Smem, dmad
MVKD
MVDM MVMD
dmad, Smem
dmad, MMR MMR, dmad
二、绝对寻址
(2)程序存储器(pmad)寻址 用符号或具体的数来确定程序存储器中的地址 。 FIRS MACP Xmem, Ymem, pmad Smem, pmad, src
MACD
MVPD MVDP
Smem, pmad, src
pmad, Smem Smem, pmad
二、绝对寻址
(3) I/O端口(PA)寻址 用符号或常数来确定外部I/O端口地址。 PORTR PA, Smem PORTW Smem, PA PORTR 8000h, *AR2 PORTW *AR3, 8001h
二、绝对寻址
(4) *(lk)寻址 用符号或常数来确定数据存储器的地址
.bss buf, 1
LD
*(buf), A
PORTR 8000h, *(1000h)
三、累加器寻址
累加器寻址就是用累加器A中的值作为地址,对存放数据的
程序存储器寻址 。 reada Smem
wrtia
Smem
四、直接寻址
① 直接寻址就是在指令中包含有数据存储器地址的低7位,用 这7位作为偏移地址,并与基地址值(DP或SP)组成一个16 位的数据存储器地址。 ② 表示方法:用一个@符号或一个常数来确定偏移地址值。
址32位数。
DADD DADST Lmem, src[,dst] Lmem, dst ;双精度/双16位数加到累加器 ; T寄存器和双精度/双16位数相加/减
DLD
DRSUB DSADT
Lmem, dst
Lmem, src Lmem, dst
;把双精度/双16位长字装入累加器
;从双精度/双16位数中减去累加器的值 ;长操作数与T寄存器值相加/减
【寻址11】*ARx+0% 【寻址12】*ARx-0% 【寻址13】*ARx(lk)
;访问后,AR0中的地址以循环寻址的方式加到ARx ;中 ;访问后,ARx中的地址以循环寻址的方式减去AR0 ;ARx和一个带符号的16bit的长偏移(lk)的和用来 ;作为数据存储器地址,访问后,ARx不被修改。 ;不能对存储器映射寄存器寻址。 ;在寻址之前,把一个带符号的16bit的长偏移(lk) ;加到ARx中,然后用新的ARx的值作为数据存储器 ;的地址。(可读可写)
六、存储器映射寄存器寻址
对片上寄存器的寻址,因为这些片上寄存器在数据存储空间 的第0页上占有地址,所以称为存储器映射寄存器寻址,相当于 微机中的寄存器寻址。
LDM MMR, dst
MVDM
MVMD MVMM
dmad, MMR
MMR, dmad MMRx, MMRy ;MMRx和MMRy只能为AR0~AR7和SP
(b)循环寻址
*ARx+%、*ARx-%、*ARx+0%、*ARx-0%和*+ARx(lk)%
EFB 1000h 1001h 1002h BK=20
. . .
循环寻址的具体算法:
AR1
if(0≤index+step<BK) index=index+step else if(index+step≥BK) index=index+step-BK
第3章 指令系统
3.1 指令集介绍 3.2 寻址方式 3.3 指令系统
3.1 指令集介绍
一、指令的基本形式
[标号][:] 操作码 操作数1,操作数2,操作数3
loop:
MAC
*AR2+, *AR3+, A
二、指令的数据类型
C54x 寻址存储器有两种基本的数据形式:16位数和32位数。 大多数指令能够寻址16位数,只有双精度和长字指令才能寻
一、立即寻址
① 立即寻址就是在指令中已经包含有执行指令所需的操作数。 ② 表示方法:在数字前面加一个“#”符号。 ③ 两种数值形式:短立即数(3、5、8或9位);长立即数(16 位)
例: LD
LD
#k3, ARP
#k5, ASM
STM #k8, AG
LD
LD
#k9, DP
#8000H, A
二、绝对寻址
1)以累加器A或B为目标操作数的LD指令
(1) LD Smem,dst (2) LD Smem,TS,dst ;把操作数装入累加器 ;操作数按T(5~0)位移位后装入累加器,-16≦TS≦31
(3) LD Smem,16,dst
;操作数左移16位后装入到累加器
;操作数左移后装入累加器
(4) LD Smem[,SHIFT],dst;操作数左移后装入累加器,-16≦SHIFT≦15 (5) LD Xmem,SHFT,dst
① CMPS
{
src, Smem ;比较、选择并存储最大值
Smem=src(31~16); TRN<<=1; TRN(0)=0; TC=0;
执行: if(src(31~16)>src(15~0))
(10)LD src[,SHIFT],dst ;累加器左移
2)以T或DP/ASM/ARP位段为目标操作数的LD指令
① LD Smem, T ;把单操作数装入到T寄存器
② LD Smem, DP
③ LD #k9, DP ④ LD #k5, ASM ⑤ LD #k3, ARP
;(Smem(8~0))-DP
④ LTD Smem
;(Smem)-T, (Smem)-Smem+1
2.存储指令
存储指令用于将源累加器、立即数、暂存器T或状
态转移寄存器TRN的值保存到数据存储单元或存储器 映射寄存器中。
1)ST指令
① ST ② ST ③ ST T,Smem TRN,Smem #lk,Smem ;存储T寄存器的值 ;存储过渡寄存器TRN的值 ;对数据存储单元初始化设置
. . .
1012h 1013h 1014h
else if(index+step<0) index=index+step+BK
数据存储器
五、间接寻址
(2)双数据存储器操作数间接寻址 ① 双数据存储器操作数寻址用来完成两个读操作,或者一个读和一 个并行存储操作。 ② 双数据存储器操作数寻址用到的辅助寄存器只能是AR2、AR3、 AR4和AR5。 ③ 间接寻址的类型只能是*ARx、*ARx+、*AR-和*ARx+0% ④ 如果源操作数和目的操作数指向同一个单元,则在并行存储指令 中(如ST||LD),读在写之前。如: ST #3,*AR3 ||LD *AR3,A ⑤ 如果一个双操作指令用同一个辅助寄存器,并且这两个操作数的 寻址方式不同,那么就按操作数Xmem所对应的方式来寻址。如: ADD *AR2+,*AR2-,A
相关文档
最新文档