第三章 指令系统
第三章 指令系统--指令

寻址方式指令系统
数据传送指令算术运算指令逻辑运算指令串操作指令
控制转移指令处理器控制指令
通用传送指令
累加器专用传送指令
地址传送指令
标志传送指令
对标志位的影响: 除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
数据传送指令算术运算指令逻辑运算指令串操作指令
控制转移指令处理器控制指令
实现二进制
所有算术运算指令均所有算术运算指令均
四则运算是计算机经常进行的一种操作。
请注意算术运算指令对
只有一个操作数:寄存器或存储单元对操作数加
用于计数器和地址指针的调整
不影响进位
对操作数减
用于计数器和地址指针的调整不影响进位。
第三章 微型计算机的指令系统

reg , reg mem , reg reg , mem
C、从存贮器/寄存器到段寄存器 (mem/reg,segreg)
注:不能往CS中传送数据.
D、从段寄存器到存贮器/寄存器 (segreg,mem/reg)
注:
1,不影响标志 2,不允许两操作数都使用存储器 3,不允许往CS中送数 4,8位传送/16位传送决定于指令中寄存器及立 即数形式 5,凡给SS赋值时,系统会自动禁止中断,等下 条指令执行完后才会恢复
B、例 LEA BX,[BX+SI] 执行前:BX=0400H SI=003CH 执行后:BX= LDS SI,[10H] 执行前:DS=C000H, (C0010H)=0180H (0012H)=2000H 执行后:SI= DS= LES DI,[BX] 执行前:DS=B000H, BX=080AH (B080AH)=05AEH, (B080CH)=4000H 执行后:DI= ES=
0
CF
AH
/
/
/
三、算术运算指令 1、加法指令 加: ADD DST,SRC DST←SRC+DST reg,reg; reg,mem; mem,reg reg,data; mem,data; ac,data 带进位加:ADC DST,SRC (DST)← (SRC)+(DST)+CF reg,reg; reg,mem; mem,reg reg,data; mem,data; ac,data 加1: INC OPR (OPR)←─ (OPR)+1 (reg;mem) 注:INC指令不影响CF标志
2,高字节 4,低字节 2,SP+1 4,SP+1 SP SP
(SP) (SP)
微机原理第3章-指令系统

▲按给出偏移地址方式的不同,分为以下5种: 寄存器间接寻址 寄存器相对寻址 基址加变址寄存器 相对基址加变址寄存器 MOV AL, [ BX ] MOV AL, [ BX + 10H ] MOV AL, [ BX + SI ] MOV AL, [ BX + SI + 10H ]
(1)寄存器间接寻址
寄存器寻址方式的操作数是寄存器的值,指令中直接 使用寄存器名,包括8位或16位通用寄存器和段寄存器。可 使用的16位寄存器:AX、BX、CX、DX、SI、DI、SP、 BP;其中:AX、BX、CX、DX可分成两8位使用。
例: MOV AX,CX
;(AX)
(CX)
INC CX
;(CX)
(CX)+1
3.直接寻址(Direct Addressing)
0002
AH
AL
默认段寄存器的关系: ① 使用BX、SI、DI,默认段寄存器为DS
(BX)
PA = ( DS )×10H + (SI) (DI)
② 使用BP,默认段寄存器为SS PA = ( SS )×10H + ( BP )
使用BX、SI、DI的寄存器寻址,默认段寄存器为DS
寄存器组 AH AL BH BL CH CL DH DL SI DI BP SP AX BX CX DX DS ES SS CS IP 地 址 加 法 器
运 算 器
控制总线CB
码
器
PSW标志 寄存器
执行部件控制电路
CPU
总线
内存
例: MOV AX , [ BX + SI ]
若 ( DS ) = 4000H
( BX ) = 2000H ( SI ) = 100H 则内存操作数的物理地址为:
第三章 8086 8088指令系统

SI 1200
+)
6000 0 1200 61200 AX 33 44
61200H 61201H
存储器 . . . 44H 33H 数 据 段
. . .
图 3-5 寄存器间接寻址示意图
3.2.5 寄存器相对寻址
寄存器相对寻址——操作数在存储器中。由指令指定的地址寄存器的内容加上指令中
给出的一个8位或16位的地址位移量,即可得操作数的偏移地址。
SI AX AX AX AX AX
3.2.8隐含寻址
隐含寻址—— 操作数隐含在操作码中,在有些指令的操作数中,不仅包含了操作的性质,
还隐含了部分操作数的地址。如乘法指令 MUL,在这条指令中只须指明乘数的地址,而被乘数 已经乘积的地址是隐含且固定的。这种将一个操作数隐含在指令码中的寻址方式就称为隐含
立即数操作数: 所谓立即数指具有固定数值的操作数,不因指令的执行而发生变化 。立即数操作 数只能用作源操作数,而不能用作目标操作数。
寄存器操作数:
8086CPU的8个通用寄存器和4个段寄存器可以作为指令中的寄存器操作数,寄存
器操作数在指令中既可以作为源操作数,也可以用作目标操作数。 存储器操作数: 参加运算的数据是存放在内存中。
两单元的内容送到AX中。假设DS=2000H,则所寻找的操作数的物理地址为: 2000H×10H+3102H = 23102H, 指令的执行情况如图3-3所示
存储器 . . .
MOV操作码
02H 31H AH AL 23102H 23103H
图 3-3 直接寻址方式
代 码 段
. . . ×× ×× . . . 数 据 段
请注意:使用基址—变址方式时,不允许将两个基址寄存器或两个变址寄存器组合
第3章答案指令系统1-40..

第3章指令系统1,简述下列基本概念:指令,指令系统,机器语言,汇编语言,高级语言。
1、指令:CPU根据人的意图来执行某种操作的命令指令系统:一台计算机所能执行的全部指令集合机器语言:用二进制编码表示,计算机能直接识别和执行的语言汇编语言:用助记符、符号和数字来表示指令的程序语言高级语言:独立于机器的,在编程时不需要对机器结构及其指令系统有深入了解的通用性语言2,什么是计算机的指令和指令系统?2、见第1题。
3,简述89C51汇编指令格式。
3、操作码[目的操作数] [,源操作数]4,简述89C51寻址方式和所能涉及的寻址空间。
5,要访问特殊功能寄存器和片外数据寄存器,应采用哪些寻址方式?5、SFR:直接寻址,位寻址,寄存器寻址;片外RAM:寄存器间接寻址6,在89C51片内RAM中,已知(30H)=38H, (38H)=40H, (40H)=48H, (48H)=90H, 请分析下面各是什么指令,说明源操作数的寻址方式以及按顺序执行每条指令后的结果。
6、MOV A,40H ;直接寻址(40H)→AMOV R0,A ;寄存器寻址(A)→R0MOV P1,#0F0H ;立即数寻址0F0→P1MOV @R0,30H ;直接寻址(30H)→(R0)MOV DPTR,#3848H ;立即数寻址3848H→DPTRMOV 40H,38H ;直接寻址(38H)→40HMOV R0,30H ;直接寻址(30H)→R0MOV P0,R0 ;寄存器寻址(R0 )→P0MOV 18H,#30H ;立即数寻址30H→18HMOV A,@R0 ;寄存器间接寻址((R0)) →AMOV P2,P1 ;直接寻址(P1)→P2最后结果:(R0)=38H,(A)=40H,(P0)=38H,(P1)=(P2)=0F0H,(DPTR)=3848H,(18H)=30H,(30H)=38H,(38H)=40H,(40H)=40H,(48H)=38H 注意:→左边是内容,右边是单元7,对89C51片内RAM的高128字节的地址空间寻址要注意什么7、用直接寻址,位寻址,寄存器寻址8,指出下列指令的本质区别。
第3章MCS-51单片机指令系统

第3章MCS-51单片机指令系统3.1概述3.1.1指令格式3.1.2指令的三种表示形式3.1.3指令的字节数1. 单字节指令(49条)图3-1 MOVA,Rn指令的格式2单片机原理及其接口技术(第2版)2. 双字节指令(46条)3. 三字节指令(16条)3.1.4指令的分类1. 数据传送指令(28条)2. 算术运算指令(24条)3. 逻辑操作和环移指令(25条)4. 控制转移指令(17条)5. 位操作指令(17条)3.1.5指令系统综述1. 指令系统中所用符号的说明2. 指令对标志位的影响3.2寻址方式3.2.1寄存器寻址图3-2寄存器寻址示意图单片机原理及其接口技术(第2版) 3 3.2.2直接寻址图3-3直接寻址示意图3.2.3立即寻址3.2.4寄存器间址图3-4寄存器间址寻址示意图3.2.5变址寻址图3-5变址寻址示意图4单片机原理及其接口技术(第2版)3.2.6相对寻址图3-6相对寻址示意图3.2.7位寻址3.3数据传送指令3.3.1内部数据传送指令(15条)1. 立即寻址型传送指令2. 直接寻址型传送指令3. 寄存器寻址型传送指令4. 寄存器间址型传送指令5. 内部数据传送指令的使用图3-7 8×C552/8051指令的数据传送方式单片机原理及其接口技术(第2版) 5 3.3.2外部数据传送指令(7条)1. 16位数传送指令2. 外部ROM的字节传送指令图3-8 0~9平方值表3. 外部RAM的字节传送指令3.3.3堆栈操作指令(2条)图3-9例3.8的堆栈变化示意图6单片机原理及其接口技术(第2版)3.3.4数据交换指令(4条)3.4算术与逻辑运算和移位指令3.4.1算术运算指令(24条)1. 加法指令2. 减法指令3. 十进制调整指令4. 乘法和除法指令3.4.2逻辑运算指令(20条)1. 逻辑与运算指令2. 逻辑或指令3. 逻辑异或指令4. 累加器清零和取反指令3.4.3移位指令(5条)单片机原理及其接口技术(第2版)7图3-10例3.26附图3.5控制转移和位操作指令3.5.1控制转移指令(17条)1. 无条件转移指令图3-11 AJMP指令转移范围8单片机原理及其接口技术(第2版)图3-12例3.29附图图3-13带符号数的比较方法3. 子程序调用和返回指令图3-14二级子程序嵌套及断点地址存放单片机原理及其接口技术(第2版)9图3-15例3.33附图10单片机原理及其接口技术(第2版)4. 空操作指令3.5.2位操作指令(17条)1. 位传送指令2. 位置位和位清零指令3. 位运算指令4. 位控制转移指令习题与思考题3.1指令通常有哪三种表示形式?各有什么特点?3. 2 MCS-51指令按功能可以分为哪几类?每类指令的作用是什么?3. 3 MCS-51共有哪七种寻址方式?各有什么特点?3. 4指出下列每条指令源操作数的寻址方式和功能。
003_微机原理-指令系统_2

MOV DS, AX
不影响标志位
3.3 指令系统—换码指令
指令书写格式: XLAT
指令执行的操作:
(AL)←((DS:BX+AL)) 查表操作,将BX指定的缓冲区中、AL指定的位移处的一个字节数 据取出赋给AL
指令说明
操作数隐含使用基地址寄存器BX与AL寄存器 换码指令执行前,在主存建立一个字节量表格,内含要转换的目 的码字,表格首地址存放于BX,AL存放相对表格首地址的位移量 换码指令执行后,指令将AL寄存器的内容转换为目标码字,因为 偏移量AL为8位,表格长度≤256字节 不影响标志位
数据传送指令 算术运算指令 逻辑运算和移位指令 串操作指令
控制转移指令
处理器控制指令
3.3 指令系统-通用数据传送指令
指令书写格式: MOV dst, src
指令执行的操作:(dst)←(src) 指令说明
操作数类型:立即操作数,寄存器操作数,存储器操作数 立即操作数不能作为目的操作数DST 错误:MOV 30H, AL 两个操作数也不能同时为存储器操作数 错误: MOV [DI+100H], [SI+200H]
dst为目的操作数,操作数类型可为寄存器操 作数或存储器操作数 cnt为移位次数,可为立即数1,或由寄存器 CL指定 SHL、SHR和SAL指令影响标志位CF和OF, cnt=1时,SHL与SAL移位后的最高位和CF不 同,则OF=1;SHR,OF=移位前最高位 SAR指令影响标志位CF、OF、PF、SF、ZF, AF不确定;
; 测试AL中数据的奇、偶
3.3 指令系统-移位指令
逻辑左移指令: SHL dst, cnt 算术左移指令: SAL dst, cnt
计算机原理指令系统

I/O端口寻址
二. I/O端口寻址
操作数在I/O端口中时,必须通过累加器(AX或AL)实现对端口的访问 1. 直接端口寻址 — 指令直接提供8位端口的地址 例:IN AL, 63H ;AL(63H) 端口寻址时,地址不加[ ],当端口地址可用一个字节来表示时,可使用 直接端口寻址 2. 间接端口寻址 — 由DX寄存器给出16位端口地址
例:MOV AX, [BX+1000H] ;AX BX+1000H 所指向的存储单元 内容
若BX = 2000H,则将数据段(3000H, 3001H)的内容传送给AX
指令也可书写为: MOV AX, 1000H[BX]
7. 基址变址寻址
操作数的有效地址由基址寄存器和变址寄存器的内容相加产生
例:MOV
8086指令介绍
第3.3节 8086指令介绍
8086 CPU共有133条指令,根据操作性质,可分为: ➢ 传输指令 ➢ 算术运算指令 ➢ 逻辑运算和移位指令 ➢ 串操作指令 ➢ 控制转移指令
※ 操作数的符号表示 ✓ DST:目的操作数 ✓ SRC:源操作数 ✓ TARGET:循环、转移和调用指令中的目的操作数
CPU内部操作数寻址
一. 数据寻址方式
1. 立即数寻址
指令中直接给出操作数,指令执行时可以立即得到,此时 把操作数又称作“立即数”
例:MOV AL,5 ;AL5
2. 寄存器寻址
操作数放在CPU内部的寄存器中,在指令中直接指出寄存 器的名字
例:INC CX ;将CX的内容加1
3. 隐含寻址
指令已经默认是对CPU中的某个寄存器操作
PUSH 1000 错误
➢ 操作:DST (SP+1, SP),SP SP+2
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(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指令系统
寻址方式:立即数、寄存器直接、寄存器间接、存储器直接、 存储器间接、基址寻址、基址加比例寻址
(1) MOV FF01H ,R0
(2) MOV R1 ,FF02H
(3) MOV R2 ,FF00H
(4) MOV FF00H ,R3
常用操作数寻址方式
立即寻址 #imme 直接寻址 LOC 间接寻址 (LOC) 寄存器直接寻址 Ri 寄存器间接寻址 (Ri) 寄存器变址寻址 X(Ri) 相对寻址 X(PC) 基址寻址 X(BX) 隐含寻址 其他寻址方式(块寻址、段寻址)
解:若按字节编址,地址码应为24 位 (2^24 = 16MB) ;若按字编址, 地址码只需23 位。
操作数的编码方式
例:假设某外设接口中有3 个寄存器,它们通
过数据总线与CPU 相连,其总线地址如下:
数据寄存器
FF00H
命令字寄存器 FF01H
状态字寄存器 FF02H
下列4 条指令完成的操作分别是什么?
操作数和存放加法的结果都不需要访问主存。
(4) 零地址双操作数指令
零地址双操作数指令中只有操作码字段, 操作数地址都是隐含的。操作数在堆栈的栈 顶位置和次栈顶位置,它们分别从堆栈中弹 出,送到运算器中进行运算,运算的结果再 压入堆栈。执行一条零地址的加法指令访问 主存的次数取决于堆栈的结构。
举例
例:分别利用三地址、二地址、一地址和零地址指令 编制计算算术表达式x = (a×b+ c - d) ÷ (e+ f)的程序。
解:假设a、b 、c 表示操作数,A 、B 、C 表示操作 数所在存储地址。
(1) 三地址指令程序
MUL A ,B ,X
ADD SUB
X ,C ,X X ,D ,X
ADD E ,F ,Y
指令类型:控制类(JNZ\JZ\JMP\CALL\RET\LOOP)、数据
传送类(MOV\PUSH\POP\LES)、算术逻辑运算类
(ADD\SUB\CMP\SHL\SHR\RCR\CBW\TEST\INC\DEC\OR\X
OR)、字符串(MOVS\LODS)
指令格式: 4
4
8
5
3
JE conditions displacement
DIV X ,Y ,X
共需5 条三地址指令,每条指令4 次访存,执行此 程序共访存20 次。
(2) 二地址指令程序
MOV X ,A MUL X ,B ADD X ,C SUB X ,D MOV Y ,E ADD Y ,F DIV X ,Y 共需7 条二地址指令,MOV 指令3 次访存,算术运 算指令4 次访存,执行此程序共访存2 × 3 + 5 × 4 = 26 次。
③因为二地址指令占5 个字节,每条指令需访 存3 次才能取出。除取指令外,传送指令还 需访存2 次,运算指令还需访存3 次,所以 总的访存次数为:5 × 3 + 2 × 2 + 3 × 3 =28 次。
指令分类:依据指令功能来分
算术逻辑运算类指令(ADD、AND) 移位指令和循环指令(CLR、RL) 传送类指令(MOV) 串指令(CWB) 顺序控制类指令(JMP) 特权指令(CHMOD) 输入输出指令(IN OUT或利用访存指令)
软件 裸机
指令系统
指令格式
操作码 (OP)
操作数(D) 寻址方式 地址码
数寄 内 值存 存
器地 址
操作码表示指令要完成的操作,其长度决 定了指令系统可以表示的指令条数;操作数是 操作的对象,对象的类型由寻址方式部分决定
指令分类:依据操作数个数来分
OP
OP D
OP
D1
D2
OP D1 D2 D3
指令中地址个数的选取要考虑诸多的因 素。从缩短程序长度,用户使用方便,增加 操作并行度等方面来看,选用三地址指令格 式较好;从缩短指令长度,减少访存次数, 简化硬件设计等方面来看,一地址指令格式 较好。对于同一个问题,用三地址指令编写 的程序最短,但指令长度最长,而用二、一、 零地址指令来编写程序,程序的长度一个比 一个长,但指令的长度一个比一个短。
(1) 分别用三地址、二地址、一地址和零地 址指令编写程序,计算A = (B - C) × (D -E)(不允许覆盖任何操作数,可以使 用暂存单元) 。
(2) 分别计算所写程序的总字节数。 (3) 分别计算程序执行时的访存次数。
① 三地址指令程序
SUB B ,C ,A
SUB D ,E ,Tmp
MUL A ,Tmp ,A
双操作数运算类指令的执行
对于双操作数运算类指令(如加法指令)来 说,每条指令中都需要包含以下4 个地址信 息:
① 第一操作数地址A1 ; ② 第二操作数地址A2 ; ③ 操作结果存放地址A3 ; ④ 下条将要执行指令的地址A4 。
这些地址信息可以明显地给出,称为显地址; 也可以依照某种事先的约定,用隐含的方式 给出,称为隐地址。
PUSH reg
4 31
32
ADD reg w immediate
8
32
CALL offset
6
11
8
8
MOVE d w displacement displacement
71
8
32
TEST w postbyte immediate
RISC机型
80%不常用 指令
复2杂精0指%指简系常令指统用令 令系统
扩展窗口1111 1110 XXXX YYYY 15条二地址指令
扩展窗口 1111 1111 0000 XXXX 15条一地址指令 1111 1111 1110 XXXX 1111 1111 1111 0000 16条零地址指令 1111 1111 1111 1111
操作数的编码方式
立即数:直接将数据表示成二进制形式
② 因为操作码8 位,地址码16 位,所以: 三地址指令程序中每条指令占7 个字节,程 序的字节总数为21 个字节;
③因为三地址指令占7 个字节,每条指令需访 存4 次才能取出,接下来每条指令还需要访 存3 次,所以3 条指令共访存21 次。
① 二地址指令程序
MOV A ,B SUB A ,C MOV Tmp ,D SUB Tmp ,E MUL A ,Tmp ②二地址指令程序中每条指令占5 个字节,程 序的字节总数为25 个字节;
(3) 一地址指令程序 LOAD E
ADD F
STORE X LOAD A MUL B ADD C SUB D DIV X STORE X 共需9 条一地址指令,每条指令2 次访存,执行此 程序共访存9 × 2 = 18 次。
(4) 零地址指令程序
PUSH A PUSH B MUL PUSH C ADD PUSH D SUB PUSH E PUSH F ADD DIV POP X
第三章 指令系统
3.1 指令系统的定义及性能要求 3.2 指令格式及指令类型 3.3 指令和数据的编码及寻址方式 3.4 堆栈寻址方式 3.5 RISC机型
指令系统是指一台计算机所有机
器指令的集合,构成了计算机的机器 语言,是计算机硬件与上层软件的接 口。计算机的指令系统决定了计算机 的CPU的功能和结构。CISC和RISC 是现代两大典型指令系统体系结构。 设计一台机器的指令系统应考虑到其 完备性和完整性、兼容性、均匀性、 可扩充性。例:指令格式如下:源自4位4位4位
4位
如何表示61条指令,其中三地址、两地址、一 地址指令各15条,零地址指令16条?能否表示 更多条指令?
4位
4位
4位
4位
OOPP OP OAP1 OP A21
A321
…… … …
0000 XXXX YYYY ZZZZ 15条三地址指令
扩展窗口1110 XXXX YYYY ZZZZ 1111 0000 XXXX YYYY
从100 号单元中取第一操作数,第三次从2 00 号单元中取第二操作数,第四次将加法的 结果保存到主存的100 号单元。
(3) 一地址双操作数指令
一地址双操作数指令只有一个显地 执址行,一参条一加地运址算的加的法另指一令只个需操要作访问数两来次自主 累加 存1寄,0存第0器一号次单A从c元c5中。0取指号操单作令元数的中。含取由指于义令第为,一:第操二作次数从和 运算(结A果c都c)放在O累P加(寄A存1器中),→所以A读cc取第一