第3章 指令系统

合集下载

第3章 8086指令系统-汇编语言程序设计教程-陆遥-清华大学出版社

第3章  8086指令系统-汇编语言程序设计教程-陆遥-清华大学出版社

直接寻址方式可以利用变量名的偏移地址属性来 描述操作数的偏移地址(可直接用变量名,或将 变量名置于方括号[ ]中),段寄存器默认为DS。 如果实际使用的段寄存器不是DS,则必须用段 前缀明确指出。
【例3.7】设数据段内有如下变量定义语句
VAR DB 76H,5CH,0A3H,08H
分析以下指令的执行结果。
3.1 指令系统基本概念
指令是给计算机下达的一个简单操作任务,CPU 所能执行的所有指令构成了一个计算机的指令系 统(也称指令集)。
汇编语言指令是对机器指令的符号化表示,采用 助记符来表示指令的操作功能和操作对象。
指令通常可以分为以下几类:
⑴ 数据传送类指令。 ⑵ 算术运算类指令。
⑸ 程序控制类指令。 ⑹ 处理器控制类指令。
【例3.3】要求将数据68传送给AL寄存器,写出相应的传 送指令。 分析:由于AL寄存器接收数据,所以目的操作数为AL, 采用寄存器寻址方式,而源操作数为常数68,采用立即寻 址方式
MOV AL,68 ;AL←68
【例3.4】设被加数存于寄存器DX中,加数为512,写出相 应的加法指令。 分析:因为被加数由寄存器DX提供,所以DX为目的操作 数,采用寄存器寻址方式,而加数为常数512,采用立即 寻址方式
操作数。
2. ADD指令
指令格式:ADD DST,SRC 指令功能:DST←(DST)+(SRC) 。执行加法运算。 操作数特点:两个操作数。被加数DST为目的操作数,加
数SRC为源操作数。
3. NOT指令
指令格式:NOT OPR 指令功能:OPR←(OPR) 。执行逻辑非运算。 操作数特点:一个操作数。OPR既是目的操作数,也是源
段地址由段寄存器提供,用段前缀(DS:,ES:, CS:或SS:)来指明;偏移地址(亦称有效地址) 则有多种表示形式,由此形成了不同的存储器寻 址方式。

第3章 指令系统(1)

第3章 指令系统(1)

;R6=10101011B,R5=01010100B,Cy=0
思考题:如何将寄存器R6R5中的双字节数X右移一位。
二、双操作数逻辑运算指令(对位逻辑运算): ANL、ORL、XRL
例:A=01××××××B,×表示随机状态,为1或0,
下述一组指令执行后,A的值如何? XRL A,#0C0H ORL A,#03H ANL A,#0E7H ;将累加器A的内容D7、D6取反 ;将累加器A的内容D1、D0置1 ;将累加器A的内容D4、D3清0
2013-12-11
14
3.判位转移指令:
JB bit,rel ;(bit)=1转移,否则不转移
JNB bit,rel
;(bit)=0转移,否则不转移 ;(bit)=1转移,且(bit)=0, 否则不转移
4. 判位清0转移指令:
JBC bit,rel
5. 比较不相等转移指令:
CJNE
CJNE
操作数1,操作数2,rel
LJMP
之和所指向的64KB程序范围内跳转
2013-12-11
8
1. 长转移指令: LJMP addr16(d2d1)
指令机器码: 02 d2 d1 指令转移范围:64KB
;PCd2d1
2. 绝对转移指令: AJMP addr11 (2个字节)
;PCPC+2 ;PC10~0addr11 PC15~11不变
三、子程序返回指令: RET
;PC15~8(SP),SPSP-1, PC7~0 (SP),SPSP-1
指令机器码:22H RET指令从堆栈弹出保存的PC地址,实现子程序返回。
2013-12-11
18
例:子程序嵌套:
MAIN:MOV SP,#30H … LCALL SUB … SUB: … … RET ;设置栈底 ;调用子程序 ;子程序段

第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. 要访问特殊功能寄存器和片外数据存储器,应采用哪些寻址方式?

第三章指令系统总结及课后题

第三章指令系统总结及课后题

(DPTR)=3848H,(18H)=30H,(30H)=38H,(38H)=40H,
(40H)
=40H,(48H)=38H
精选2021版课件
5
7、8951片内高128字节的地址寻址要注意什么/? 答: 用直接寻址,位寻址,寄存器寻址
8、指出些列指令的本质?
MOV MOV MOV MOV
A,DATA ;
寄存器寻址 工作寄存器R0-R7、A、B、C、DPTR
寄存器间接寻 址
片内RAM低128B、片外RAM
变址寻址
程序存储器(@A+PC,@A+DPTR)
相对寻址
程序存储器256B范围(PC+偏移量)
位寻址
片内RAM的20H-2FH字节地址、部分SFR
精选2021版课件
3
寻址方式中常用的符号注释
Rn(n=0~7):当前选中的工作寄存器组R0~R7。 Ri(I=0,1):作为地址指针的两个工作寄存器R0,R1。 #data:8位立即数。 #data16:16位立即数。 direct:8位片内RAM单元(包括SFR)的直接地址。 addr11:11位目的地址,用于ACALL和AJMP指令中。 addr16:16位目的地址。用于LCALL和LJMP指令中。 rel:补码表示的8位地址偏移量。范围:-128~+127D。 bit:片内RAM或SFR的直接寻址位地址。 @:间接寄存器的符号。 /:位操作指令中对该位先取反再参与操作,不影响原值。 (×):×中的内容。 ((×)):×指出的地址单元中的内容。 →:指令操作流程方向。
高级语言:独立于机器的,在编程时不需要对机 器结构及其指令系统有深入了解的通用性语言
精选2021版课件
2

第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章MCS1的指令系统

第3章MCS1的指令系统
25
7.位寻址
3.4
MCS-51指令系统分类介绍
MCS-51 的指令系统,共有 111 条指令,按功能分类, 可分为下面5大类: (1)数据传送类(28条) (2)算术操作类(24条 (3)逻辑运算类(25条)
(4)控制转移类(17条)
(5)位操作类(17条)
26
3.4
MCS-51指令系统分类介绍
程序存储器 DPTR
2000H A
2010H 64H 64H(10H) 10H
2000H
变址寻址示意图
18
5.基址寄存器加变址寄存器间址寻址方式(变址寻址) 说明: (1)本寻址方式是专门针对程序存储器的寻址方式,寻址范围 可达到64KB。 (2)本寻址方式的指令只有3条: MOVC A,@A+DPTR
8
3.3
1.寄存器寻址方式
指令系统的寻址方式
以通用寄存器的内容为操作数的寻址方式。 通用寄存器指A、B 、DPTR以及R0~R7 。 寄存器寻址就是从寄存器中读取操作数或存放操作数进寄存
器。
MOV A,Rn ;(Rn)→A,n=0~7 表示把寄存器Rn的内容传送给累加器A 寻址范围: (1)4组通用工作寄存区共32个工作寄存器。 (2)部分特殊功能寄存器,例如A、B 以及数据指针寄存器 DPTR等。
在相对寻址的转移指令中,给出了地址偏移量,以“rel” 表示,即把 PC 的当前值加上偏移量就构成了程序转移的目的
地址:
目的地址=转移指令所在的地址 + 转移指令的字节数 + rel 偏移量rel是一带符号的8位二进制数补码数。 范围是:–128 - +127 向地址增加方向最大可转移(127+转移指令字节)个单元

第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 指令兼容而设的。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(5)相对基址变址寻址方式
相对基址变址寻址方式是指指令所需操作数存放在存储器单元中,指 令中给定的一个基址寄存器名(BX或BP)、一个变址寄存器名(SI或DI) 和一个8位或16位的相对位移量,三者内容之和为操作数的地址偏移量。 若基址寄存器使用BP,默认段为SS,若基址寄存器使用BX,默认段为DS 。 操作数格式:位移量[BX|BP][SI|DI]
②出栈指令POP
格式:POP 目的操作数 功能:将栈顶单元的内容弹出(复制)到目的地址中,然后修改堆栈指针SP。 具体操作过程:先将当前SP所指单元的内容弹出到目的地址的低字节,然后将SP的内 容加1,再将当前SP所指单元的内容弹出到目的地址的高字节,然后再将SP的内容加1。 说明:目的操作数除CS以外的段寄存器操作数或字类型的存储器操作数,其长度必须 是16位。
可以实现寄存器之间、寄存器与存储单元之间的数据传送,以及立即
数到寄存器或存储单元的传送。 对标志位的影响:无
(2)堆栈操作指令
堆栈是在存储器中开辟的一个特殊区域,它遵循“后进先出”的存 取原则。堆栈操作只能在栈顶进行,堆栈的操作有进栈和出栈两种。从
8086堆栈的组织形式来看,堆栈是从高地址向低地址方向生长的。最初
的物理地址,物理地址是由段基址和偏移量组成的,操作数物理地址计 算方法:
物理地址=16×段基址+偏移量
其中段基址取自段寄存器,所以指令只需提供计算偏移量所需要的 信息就可以了。在80x86中,根据对存储器单元地址偏移量的不同计算
方法,可以分为5种不同的存储器寻址方式。
需要指出的是,在80x86中,为了限制指令的长度,在同一条指令 中,不允许两个操作数同时采用存储器寻址方式。
为指令的一部分存放在代码段中。取出指令的同时也就取出了可以立即 使用的操作数,这样的操作数称为立即数。立即数可以是8位或16位数
,若是16位操作数,则低位字节存放在低地址单元中,高位字节存放在
高地址单元中。 立即寻址方式能够快速获得操作数,但适用范围有限,通常用于给寄
存器或存储器赋初值。立即寻址方式只能用于源操作数,不能用于目的
在上例中,第一条指令的源操作数和第二条指令的目的操作数采用 了相对基址变址寻址方式。
3.2 8086/8088指令系统
8086/8088指令系统中的指令按照功能可以分为六类:数据传送
指令、算术运算指令、逻辑运算指令、串操作指令、处理器控制指令
和控制转移指令。本节介绍数据传送指令、算术运算指令、逻辑运算 指令和处理器控制指令,串操作指令和控制转移指令将在第五章的相
例如:
MOV CX,1234H; 将16位立即数1234H存入寄存器CX MOV BL,AL; 将寄存器AL的内容存入寄存器BL
MOV
DS,BX;
将通用寄存器BX的内容存入段寄存器DS
3.1.5存储器寻址方式
顾名思义,存储器寻址方式就是操作数在存储器单元中。如果存储
器单元作为操作数,CPU必须通过指令提供的信息计算出该存储器单元
; 设BP内容为1000H,将DS段偏移1000H的字单元的内容存入AX
(3)寄存器相对寻址方式
寄存器相对寻址方式是指指令所需操作数存放在存储器单元中,指令中给定的一个基 址寄存器或变址寄存器名(BX、BP、SI和DI)和一个8位或16位的相对位移量,两者之 和为操作数的地址偏移量。若使用BP,默认段为SS,若使用其它寄存器,默认段为DS 。 操作数格式:位移量[BX|BP|SI|DI] 寄存器相对寻址方式如图3-7所示。
; 将AX内容存入ES中偏移100H的字单元
(2)寄存器间接寻址方式
寄存器间接寻址方式是指指令所需操作数存放在存储器单元中,其地址 偏移量由基址寄存器BX、BP或变址寄存器SI、DI给出。若使用BP,默认 段为SS,若使用BX、SI和DI寄存器,默认段为DS。
操作数格式:[BX|BP|SI|DI] 寄存器间接寻址方式如图3-6所示。
3.1.2 寻址技术
指令中的操作数字段可能直接给出操作数,也可能给出操作数的存放地
址,操作数可能存放在寄存器或存储器中。若指令中给出的是操作数的存
放地址,则在执行指令时就要根据指令中给出的地址信息来寻找操作数, 这个过程叫做寻址,寻找操作数的各种方式统称为寻址方式。
3.1.3立即寻址
立即寻址方式是指操作数直接包含在指令中,紧跟在操作码之后,作
图3-5 直接寻址方式
例如:
MOV
BL,[100H]
; 将当前数据段偏移量为100H的字节单元内容存入BL MOV AX, DA_WORD ; 将DA_WORD指向的字单元内容存入AX MOV DA_BYTE,0FFH
; 将立即数0FFH存入DA_BYTE指向的字节单元 MOV ES:[100H] ,AX
例如: MOV AL, -20H[BX][DI] ; 设BX的内容为100H,DI的内容为20H,则源操作数偏移量为 100H,将DS段偏移量为100H的字节单元内容存入AL
MOV 100H[BP][SI],AX ; 设BP的内容为1000H,DI的内容为200H,则目的操作数的偏移量
为1300H,将AX的内容存入SS段偏移量1300H的字单元
堆栈的栈顶和栈底是重叠的,随着堆栈操作的进行,栈底的位置保持不 变,而栈顶的位置却在不断地变化。进栈时栈顶向低地址方向变化,出
栈时栈顶向高地址方向变化。
①进栈指令PUSH
格式:PUSH 源操作数
功能:修改堆栈指针SP,然后将源操作数压入栈顶单元。 具体操作过程:先将SP的内容减1,然后将源操作数的高字节存入当前 SP所指单元,再将SP的内容减1,然后将源操作数的低字节存入当前SP所 指单元。 说明:源操作数可以是寄存器操作数、段寄存器操作数或存储器操作数 。其长度必须是16位。 对标志位的影响:无
3.1.5存储器寻址方式
(1)直接寻址方式 直接寻址方式是指指令所需操作数存放在存储器单元中,其地址偏移 量由指令代码中的位移量直接给出。位移量可用常数表示,也可用变量 名表示。操作数如果在数据段中,则指令中不必给出段寄存器名(即默
认使用DS);否则,必须使用段超越前缀来说明使用其他段中的数据。
操作数格式:[常数]|变量名。直接寻址方式如图3-5所示。
示机器指令,容易阅读和使用,但在执行之前,必须先翻译成等价的机
器指令。若无特殊说明,本书此后所论及的指令均指汇编指令。
3.1.1 机器指令格式
计算机指令通常由操作码字段和操作数字段(操作码)两部分组成。 指令的基本格式如图3-1所示。
操作码 操作数
图3-1 指令的基本格式
1.操作码字段
操作码字段指示计算机所要执行的操作类型。如加、减、乘、除、 数据传送等。一台计算机可能有几十条至几百条指令,每条指令都有一
3.1.1 机器指令格式
(3)零操作数指令
这类指令中只有操作码字段,没有操作数字段。其格式如图3-4所示 。操作码ຫໍສະໝຸດ 图3-4 零操作数指令格式
这类指令有两种情况,一是不需要操作数,例如停机指令HLT;二是
所需的操作数是隐含指出的,即操作数存放在固定位置,无需指令给出 。
例如:
HLT ; 停机指令,不需要操作数 CBW ; 符号扩展指令,隐含的操作数在AL和AX中
操作码 目的操作数 , 源操作数
图3-2 双操作数指令格式
3.1.1 机器指令格式
(2)单操作数指令
单操作数指令中的操作数字段只提供一个操作数。其格式如图3-3所 示。
操作码 图3-3 单操作数指令格式 操作数
这类指令有两种情况,一是只需要一个操作数,例如加1指令INC 、减1指令DEC等;二是指令中只给出一个操作数,另一个操作数是隐含 指出的,即操作数存放在固定位置,无需指令给出,例如进栈指令 PUSH、出栈指令POP等。
图3-7 寄存器相对寻址方式
例如: MOV AL,ES:VAR[SI]
;设SI的内容为100H,VAR所指存储单元的偏移量为200H,则 源操作数偏移量为
300H,将ES段偏移量为300H的字节单元内容存入AL MOV 10H[BX],1234H
;设BX的内容为100H,则目的操作数偏移量为110H,将1234H存入DS段偏移量为 110H的字单元 在上例中,第一条指令的源操作数和第二条指令的目的操作数采用了寄存器相对寻 址方式。
图3-6 寄存器间接寻址方式
例如:
MOV ; MOV [BX],1234H 设BX内容为100H,将1234H存入DS段偏移100H的字单元 [BP],BL
; 设BP内容为100H,将BL的内容存入SS段偏移100H的字节单元
MOV
AL,[SI]
; 设SI内容为100H,将DS段偏移100H的字节单元的内容存入AL MOV AX,DS:[BP]
在上例中,各指令的源操作数均采用了立即寻址方式。
3.1.4寄存器寻址
寄存器寻址方式是指操作数存放在寄存器中,指令中直接给出寄 存器名,通过寄存器名找到操作数。对于16位操作数,寄存器可 以是AX、BX、CX、DX、SI、DI、SP、BP等,对于8位操作数, 寄存器可以是AH、AL、BH、BL、CH、CL、DH、DL等。寄存器 寻址方式既可以用于源操作数,也可以用于目的操作数。
图3-8所示
例如:
MOV
AX,ES:[BX][SI]
;设BX的内容为100H,SI的内容为20H,则源操作数偏移量为 120H,将ES段偏移120H的字单元内容存入AX
MOV
[BP][DI],AL
;设BP的内容为1000H,DI的内容为50H,则目的操作数的偏移 量为1050H,将AL的内容存入DS段偏移量为1050H的字节单元 在上例中,第一条指令的源操作数和第二条指令的目的操作数采用 了基址变址寻址方式寻址方式。
高等院校信息技术规划教材
高级汇编语言程序设计 实用教程(第2版)
相关文档
最新文档