计算机组成原理指令系统设计
计算机组成原理第4章指令系统课件

4.2 指令的格式
4.2.1 指令的编码格式
操作码OC
AC1
AC2
(1)把保存操作前原来操作数的地址称为源点地址(SS), 把保存指令执行结果的地址称为终点地址或目的地址(DD)。
(2)将源点与终点操作数进行操作码规定的操作后,将 结果存入终点地址。通常二地址指令又称为双操作数指令。
ADD R0,R1表示将R0寄存器的内容和R1寄存器的内容相加以
5 异或XOR
XOR指令对两个操作数进 行按位异或运算。
4.4 指令的种类
4.4.4 移位、循环类指令
CF
位移指令SAL/SHL操作示意图
CF
SAR操作示意图
CF 0
SHR操作示意图
4.4 指令的种类
4.4.4 移位、循环类指令
不带进位标志的循环左移指令ROL MSB 操作数 LSB
CF
不带进位标志的循环右移指令ROR MSB 操作数 LSB
例如:在IBM-PC指令系统中
MOV
AX,05FFH
4.3 寻址方式
4.3.2 常用的寻址方式
2.直接寻址方式
(1)含义: 是指地址字段直接指明操作数在存储器内的位置的寻址 方法。即形式地址等于有效地址。 (2)优缺点: A、优点:简单,不需要进行加法运算。 B、缺点:地址空间指令地址字段长度的限制。
4.2 指令的格式
4.2.3 指令助记符
通常采用一些符号来代表二进制数据,这些符号即指 令助记符。
指令助记符 ADD SUB MUL DIV
助记符示例
含义
指令助记符
相加
AND
相减
OR
相乘
LOAD
相除
STORE
《计算机组成原理》教程第4章指令系统

4
二 指令的格式
即指令字用二进制代码表示的结构形式
包括 操作码:操作的性质 操作码 地址码:操作数(operand)的存储位置,即参加操作的 operand , 地址码 数据的地址和结果数的地址
操作码域(op) 地址码域(addr)
5
1.操作码 操作码
指令的操作码表示该指令应进行什么性质的操作。 组成操作码字段的位数一般取决于计算机指令系统的 规模。 固定长度操作码:便于译码,扩展性差 . 可变长度操作码:能缩短指令平均长度 操作码的的位数决定了所能表示的操作数,n位操 作码最多表示2n种操作
(2). 堆栈工作过程 .
(一)进栈操作 ① 建立堆栈,由指令把栈顶地址送入SP,指针 指向栈顶。 ② 进栈:(A)→Msp, (sp)-1→SP ;Msp:存储 器的栈顶单元 (二)出栈操作 (SP)+1→SP, (Msp)→A
22
五.指令类型
一个较完善的指令系统应当包括: 数据传送类指令: 例)move、load、store等 算术运算类指令: 例)add、sub、mult、div、comp等 移位操作类指令: 例) shl,shr,srl,srr 逻辑运算类指令: 例)and、or、xor、not等 程序控制类指令: 例)jump、branch、jsr、ret、int等 输入输出指令: 例)in、out等 字符串类指令: 例)如alpha中cmpbge、inswh、extbl等 系统控制类指令: 例)push、pop、test等
18
10) *段寻址方式 段寻址方式 Intel 8086 CPU中采用了段寻址方式(基址寻址的特例)。 由16位段寄存器和16位偏移量产生20位物理地址 11)*自动变址寻址 自动变址寻址 指在变址方式中,每经过一次变址运算时,都自动改变变址寄存 器的内容,以后在PDP-11中详讲.
计算机组成原理-第4章_指令系统

7. 段寻址方式(Segment Addressing)
方法:E由段寄存器的内容加上段内偏移地址而形成。
应用:微型机采用段寻址方式,20位物理地址为16位 段地址左移四位加上16位偏移量。
分类:① 段内直接寻址; ② 段内间接寻址; ③ 段间直接寻址; ④ 段间间接寻址;
9 堆栈寻址方式
堆栈:是一组能存入和取出数据的暂时存储单元。
*** 指令字长度
概念 指令字长度(一个指令字包含二进制代码的位数) 机器字长:计算机能直接处理的二进制数据的位数。 单字长指令 半字长指令 双字长指令
多字长指令的优缺点
优点提供足够的地址位来解决访问内存任何单元的寻址问题 ; 缺点必须两次或多次访问内存以取出一整条指令,降低了CPU的运 算速度,又占用了更多的存储空间。
*** 指令系统的发展与性能要求
*** 指令系统的发展
指令:即机器指令,要计算机执行某种操作的命令。
指令划分:微指令、机器指令和宏指令。
简单
复杂
指令系统:一台计算机中所有指令的集合;是表征
计算机性能的重要因素。
系列计算机:基本指令系统相同、基本体系结构相同 的一系列计算机。
*** 对指令系统性能的要求
(2)立即数只能作为源操作数,立即寻址主要用来给寄存 器或存储器赋初值。以A~F开头的数字出现在指令中时,前 面要加0。
(3)速度快(操作数直接在指令中,不需要运行总线周期)
(4)立即数作为指令操作码的一部分与操作码一起放在代 码段区域中。
(5)指令的长度(翻译成机器语言后)较长,灵活性较差。
【例】MOV AX, 10H 执行后(AX)=? 其中:这是一条字操作指令,源操作数为立即寻址 方式,立即数为0010H,存放在指令的下两个单元。
《计算机组成原理》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
计算机组成原理-第4章 指令系统

0000 0001
AA11
AA22
AA33
…
…
…
…
1110 A1 A2 A3
1111 0000 1111 0001
AA22
AA33
…
…
…
…
1111 1110 A1 1111
0000 0001
AA33
…
…
…
…
1111 1111 1110 A3
1111 1111 1111 0000 1111 1111 1111 0001
操作码字段
地址码字段
•操作码:表征指令的操作特性和功能。不同指令有不 同编码。
•地址码:指定参与操作的操作数的地址。
4.2 指令格式
一、操作码设计 1、分类 • 固定长度操作码:操作码的长度固定,且集中放在指令字 的一个字段中 – 便于译码,扩展性差 • 可变长度操作码:操作码的长度可变,且分散放在指令字 的不同字段中 – 能缩短指令平均长度;指令的译码复杂
2、操作码位数的确定 1)要点:组成操作码字段的位数取决于指令系统的指令条数。 2)举例 • 指令系统8条指令8=23 3位操作码 • 指令系统32条指令32=25 5位操作码 • 指令系统2n条指令n位操作码
3) 扩展(可变长度)操作码技术
•基本思路: • 让操作数地址个数多的指令操作码 字段短些,让操作数地址个数少的 指令操作码字段长些
– 等长指令字结构:在一个指令系统中,各种指令字长度是相等的。结 构简单,取指快、译码简单
– 变长 指令字结构: …………………,…………………….不相等 结 构灵活,可提高编码效率,控制复杂
4.1指令系统的基本概念
4、指令系统:一台机器中所有机器指令的集合。它对计算机性能的影响主要体 现在三个方面: – 机器的硬件结构 – 机器的系统软件 – 机器的适用范围
计算机组成原理(白中英)第4章指令系统

计算机组成原理(白中英)第4章指令系统指令系统概述寻址方式指令系统20XX年3月15日10时45分概述指令:是指示计算机某种操作的命令。
微指令,机器指令,宏指令指令系统:一台计算机中所有机器指令的集合。
它是机器硬件设计的依据,也是软件设计的基础。
它决定了一台计算机硬件的主要性能和基本功能。
是硬件和软件间的界面。
系列计算机:有共同的指令集,相同的基本体系结构。
CISC和*****X年3月15日10时45分2一个完善的指令系统应满足:1.完备性:指令丰富,功能齐全,使用方便。
1.完备性:指令丰富,功能齐全,使用方便。
完备性 2.有效性程序占空间小,执行速度快。
有效性: 2.有效性:程序占空间小,执行速度快。
3.规整性对称性,匀齐性,规整性:3.规整性:对称性,匀齐性,指令格式和数据格式的一致性。
据格式的一致性。
4.兼容性兼容性:4.兼容性:向上兼容”----系列机中低档机上运行“向上兼容”----系列机中低档机上运行的软件可以在高档机上运行。
的软件可以在高档机上运行。
20XX年3月15日10时45分计算机语言与硬件结构的关系高级语言的语句和用法与具体机器的指令系统无关;低级语言分机器语言和汇编语言,他们和具体机低级语言分机器语言和汇编语言,器的指令系统密切相关。
器的指令系统密切相关。
汇编语言与硬件的关系密切,编写的程序紧凑、汇编语言与硬件的关系密切,编写的程序紧凑、占内存小、速度快,占内存小、速度快,特别适合与编写经常与硬件打交道的系统软件;打交道的系统软件;而高级语言不涉及机器的硬件结构,通用性强、编写程序容易,件结构,通用性强、编写程序容易,特别适合与编写与硬件没有直接关系的应用软件。
编写与硬件没有直接关系的应用软件。
20XX年3月15日10时45分4概述机器指令的要素C C C C 操作码源操作数目的操作数下一条指令的引用指令字(简称指令)即表示一条指令的机器字。
指令字(简称指令)即表示一条指令的机器字。
计算机组成原理唐朔飞第三版

计算机组成原理唐朔飞第三版
《计算机组成原理》是计算机科学与技术专业的一门基础课程,它是计算机相关专业学生必修的一门课程。
唐朔飞教授的第三版《计算机组成原理》是该课程的经典教材之一、本文将从以下几个方面对该教材进行介绍。
首先,唐朔飞教授的第三版《计算机组成原理》主要内容包括计算机硬件、指令系统和程序设计、控制器设计以及内存和I/O接口等方面。
教材全面、系统地介绍了计算机系统的各个组成部分,深入浅出地阐述了计算机的工作原理和设计方法。
其次,该教材注重对基本概念和原理的讲解,同时还涵盖了最新的发展和技术趋势。
教材内容既注重理论知识,又强调实践操作,具有很强的实用性。
通过对指令系统、各种控制器以及内存和I/O接口等方面的深入讲解,读者能够全面了解计算机系统的结构和工作原理。
此外,唐朔飞教授在教材中还针对每个章节提供了典型的习题和实验设计。
这些习题和实验设计能够帮助读者巩固所学知识,提高解决问题和设计计算机硬件的能力。
同时,教材还提供了习题的答案和实验设计的详细说明,方便读者进行自我评估和实践操作。
此外,教材中还包括了大量的案例分析和实际应用。
通过这些案例和应用,读者可以更好地理解课程中的概念和原理,并将其应用到实际工程项目中。
这使得教材更加贴近实际应用,有助于学生将所学理论知识与实践操作相结合。
总的来说,唐朔飞教授的第三版《计算机组成原理》是一本教学实践与科研经验相结合的优秀教材。
它适合计算机科学与技术专业的学生和从
业者使用。
通过学习这本教材,读者能够全面了解计算机系统的结构和工作原理,提高解决问题和设计计算机硬件的能力,进一步提高自己的学术素养和技术水平。
计算机组成原理指令系统

…
Ri 操作数
Rn 寄存器
• 执行阶段不访存,只访问寄存器,执行速度快 • 寄存器个数有限,可缩短指令字长
6. 寄存器间接寻址
EA = ( Ri )
寻址特征
OP
Ri
指令中的形式地址为寄存器的编 号,寄存器的内容是操作数的有 效地址。
主存
R0
…
…
Ri 地址
操作数
…
…
MOV AX , [BX]
Rn 寄存器
PC
7. 基址寻址
(1) 采用专用基址寄存器(隐式)
EA = ( BR ) + A
BR 为基址寄存器
寻址特征
OP
A
主存
BR
ALU
操作数
• 可扩大寻址范围 • BR 内容由操作系统或管理程序确定 • 在程序的执行过程中 BR 内容不变,形式地址 A 可变
(2) 采用通用寄存器作基址寄存器(显式)
寻址特征
(1) 寄存器寻址 R (2)寄存器间接寻址 (R)
(3)直接寻址 1000 (4)存储器间接寻址 (1000)
(5)相对寻址-2000(PC) (6)立即数寻址 #2000
解: (1) Data=( R)=1000 (2) Data=( ( R) )=(1000)=2000 (3) Data=(1000)=2000 (4) Data=((1000))=(2000)=3000 (5) EA=(PC)-2000=4000-2000=2000
(1) 相对寻址举例
LDA # 0
LDX # 0
M
ADD X, D
M+1 INX
M+2 M+3
CPX # N BNE M DIV # N
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计说明书题目: 指令系统设计院系:计算机科学与工程学院专业班级:学号:学生姓名:指导教师:2013年 11 月 25 日安徽理工大学课程设计(论文)任务书2013年11月25日安徽理工大学课程设计(论文)成绩评定表摘要在飞速发展的科技社会中,计算机被应用到各行各业,各个领域中。
人们渐渐地步入自动化、智能化的生活阶段。
本次计算机组成原理课程设计课题是基本模型机的设计与实现。
利用CPU与简单模型机来实现计算机组成原理课程及实验中所学到的实验原理和编程思想,硬件设备自拟,编写指令的应用程序,用微程序控制器实现了一系列的指令功能,最终达到将理论与实践相联系。
本次设计完成了各指令的格式以及编码的设计,实现了各机器指令微代码,设计基本模型机的指令系统(包括逻辑与,逻辑或,算术加,减运算,输入,输出,转移,传送指令),形成具有一定功能的完整的应用程序。
简言之,这次设计,计算机数据通路的控制将由微程序控制器来完成,CPU从内存中取出一条机器指令到指令执行结束的一个指令周期,全部由微指令组成的序列来完成,即一条机器指令对应一条微程序,一条微程序又有若干微指令组成,一条微指令的功能由24位操作信号(即控制位)实现。
这一课题的实现不仅使我们对各种微指令有了熟练的掌握,更对有关知识的深入学习打下基础。
关键词:指令系统,微指令,机器指令,异或目录1.系统分析 (1)1.1 设计准备 (1)1.2 设计目标 (3)2.系统设计 (4)2.1 指令、微指令系统设计 (4)2.2 模型机的微指令设计 (5)2.3 异或程序设计 (6)3.系统实现 (7)3.1 程序编写与分析 (7)3.3 调试结果 (8)4.总结 (10)4.1 设计体会 (10)4.2设计改进 (10)参考文献 (11)1.系统分析1.1 设计准备CPTH 模型机包括了一个标准CPU 所具备所有部件,这些部件包括:运算器ALU、累加器A、工作寄存器W、左移门L、直通门D、右移门R、寄存器组R0-R3、程序计数器PC、地址寄存器MAR、堆栈寄存器ST、中断向量寄存器IA、输入端口IN、输出端口寄存器OUT、程序存储器EM、指令寄存器IR、微程序计数器uPC、微程序存储器uM,以及中断控制电路、跳转控制电路。
其中运算器和中断控制电路以及跳转控制电路用CPLD 来实现,其它电路都是用离散的数字电路组成。
微程序控制部分也可以用组合逻辑控制来代替。
模型机为8 位机,数据总线、地址总线都为8位,但其工作原理与16位机相同。
相比而言8 位机实验减少了烦琐的连线,但其原理却更容易被学生理解、吸收。
模型机的指令码为8 位,根据指令类型的不同,可以有0 到2 个操作数。
指令码的最低两位用来选择R0-R3 寄存器,在微程序控制方式中,用指令码做为微地址来寻址微程序存储器,找到执行该指令的微程序。
而在组合逻辑控制方式中,按时序用指令码产生相应的控制位。
在本模型机中,一条指令最多分四个状态周期,一个状态周期为一个时钟脉冲,每个状态周期产生不同的控制逻辑,实现模型机的各种功能。
模型机有24 位控制位以控制寄存器的输入、输出,选择运算器的运算功能,存储器的读写。
24 位控制位分别介绍如下:XRD:外部设备读信号,当给出个外设的地址后,输出此信号,从指定外设读数据。
EMWR:程序存储器EM写信号EMRD:程序存储器EM读信号PCOE:将程序计数器PC的值送到地址总线ABUS上EMEN:将程序存储器EM与数据总线DBUS接通,有EMWR和EMRD决定是将DBUS数据写入EM中,还是从EM读出数据到DBUSIREN:将程序存储器EM独处的数据打入指令寄存器IR和微指令计数器uPCEINT:中断返回时清除中断响应和中断请求标志,便于下次中断。
ELP:PC打入允许,与指令寄存器的IR2.,IR3位结合,控制程序跳转。
MAREN:将数据总线DBUS上数据打入地址寄存器MARMAROE:将地址寄存器MAR的值送到地址总线ABUS上OUTEN:将数据总线DBUS上数据送到输出端口寄存器OUT里STEN:将数据总线DBUS上数据存到堆栈寄存器里RRD:读寄存器组R0-R3,寄存器R?的选择由指令的最低两位决定RWR:写寄存器组R0-R3,寄存器R?的选择由指令的最低两位决定CN:决定运算器是否带进位移位,CN=1带进位,CN=0不带进位FEN:将标志位存入ALU内部的标志寄存器WEN:将数据总线DBUS的值打入工作寄存器W中AEN:将数据总线DBUS的值打入累加器A中X2,X1,X0三位组合来译码选择将数据送到DBUS上的哪个寄存器,见表1-1 S2,S1,S0三位组合决定ALU做何种运算,见表1-2表1-1 数据输出表1-2 运算功能1.2 设计目标本课程设计要求实现机器指令:IN:将数据输入到累加器AMOV:转移CPL:取反AND:与OR:或OUT:输出要包括直接寻址,立即数寻址,寄存器寻址,间接寻址四种寻址方式。
最后要在设计的指令系统基础上,编写程序实现异或。
2.系统设计2.1 指令、微指令系统设计1.打开CPTH组成原理实验软件,选择[文件|新建指令系统/微程序],清除原来的指令/微程序系统,观察软件下方的“指令集”窗口,如图2-1所示,所有指令码都“未使用”。
图2-1 指令集窗口2.选择第二行,即“机器码1”为0000 01XX行,在下方的“助记符”栏填入数据装载功能的指令助记符“IN”,按“修改”按钮确认。
3.选择第三行,即“机器码1”为0000 10XX行,在下方的“助记符”栏填入指令助记符“MOV”,在“操作码1”栏选择“R1”,表示第一操作数为立即数,在“操作数2”栏选择“A”,表示第二操作数为累加器A。
按“修改”按钮确认。
4.选择第四行,即“机器码1”为0000 11XX行,在下方的“助记符”栏填入指令助记符“MOV”,在“操作码1”栏选择“A”,表示第一操作数为累加器A,在“操作数2”栏选择“R”,表示第二操作数为立即数。
按“修改”按钮确认。
5.选择第五行,即“机器码1”为000100XX行,在下方的“助记符”栏填入指令助记符“CPL”,在“操作码1”栏选择“A”,表示第一操作数为累加器A取反,没有操作数2。
按“修改”按钮确认。
6. 选择第六行,即“机器码1”为000101XX行,在下方的“助记符”栏填入指令助记符“AND”,在“操作码1”栏选择“A”,表示第一操作数为累加器A,在“操作数2”栏选择“R”,表示第二操作数为立即数。
按“修改”按钮确认。
7. 选择第七行,即“机器码1”为000110XX行,在下方的“助记符”栏填入指令助记符“OR”,在“操作码1”栏选择“A”,表示第一操作数为累加器A,在“操作数2”栏选择“R”,表示第二操作数为立即数。
按“修改”按钮确认。
8. 选择第五行,即“机器码1”为0001 00XX行,在下方的“助记符”栏填入输出数据功能的指令助记符“OUT”,由于此指令隐含指定了将累加器A输出到输出寄存器,所以不用选择“操作码1”和“操作数2”,也可在“操作码1”栏选择“A”,按“修改”按钮确认,结果如图2-2所示。
图2-2 指令集窗口结果2.2 模型机的微指令设计(1)微指令的24位控制位如下:XRD EMWR EMRD PCOE EMEN IREN EINT ELP MAREN MARDE OUTEN STEN RRD RWR CN FEN X2 X1 X0 WEN AEN S2 S1 S0(2)设计出的微指令集如图2-3、2-4所示:图2-3 微指令集1图2-4 微指令集22.3 异或程序设计程序设计思路:有等式,则有程序流程图如图2-5:开始先后输入两个数第一个数存入R1中第二个数存入R0中将R0取反,再和R1与的结果存入R2将R1取反,再和R0与结果存入A将A和R2或的结果存入A输出A图2-5 流程图3.系统实现3.1 程序编写与分析按照系统分析中得到的指令集,在DJ-CPT816实验软件中新建指令系统,生成.mac文件和.mic 文件。
在DJ-CPT816实验软件中新建.asm文件,输入程序:IN //准备输入第一个二进制数MOV R1,A //输入第一个二进制数到寄存器R1IN //准备输入第二个二进制数MOV R0,A //输入第二个二进制数到寄存器R0CPL A //对累加器A里面的值取反AND A,R1 //将A和R1与的结果放到累加器A中MOV R2,A //将累加器A里的值存入R2MOV A,R1 //将R1中的值存到累加器A中CPL A //对累加器A里面的值取反AND A,R0 //将A和R0与的结果放到累加器A中OR A,R2 //将A和R2或的结果放到累加器A中OUT //将输出A的值END调试窗口如图3-1所示。
图3-1 调试窗口3.3 调试结果把计算机与试验仪器相连接,打开试验仪器,导入新建的指令系统,编译下载该asm文件,装载正确后单步运行,检查运行结果是否符合要求。
实验结果如图3-2、3-3、3-4所示:图3-2 调试过程1图3-3 调试过程2图3-4 输出结果图置K23—K16 为00000100,第二次置K23—K16为00000110,输出的是00000010。
4.总结4.1 设计体会经过一个星期的课程设计,使我明白了知识的重要性,但更重要的是成员之间的团结合作。
此次课程设计我们小组做的是运用微指令实现异或运算设计与实现。
在设计过程中,我们遇到了我们之前没有遇到过的很多问题,这也说明了操作系统这门课不仅要对理论知识充分掌握,更重要的是动手操作,这样才能加深对理论知识的理解和明白在实际操作过程中可能遇到的问题并解决问题。
解决问题的过程中少不了大家的相互交流和上网查询资料,还可以请导师进行指导,经过问题的分析和探索总算得以圆满的解决,更是增加了我们对这门课程的兴趣。
总之这次设计让我了解掌握了很多东西,受益匪浅。
经过本次课程设计,真正的发现理论与实际结合得重要性,有时并不是理论知识学得好动手能力就会高,当真正动起手来发现自己需要学得知识还是很多的,在以后的学习中,自己一定会加强理论与实际的结合,让自己达到新型社会需要人才的标准。
在此次的设计中,感谢老师对我们的帮助和指导。
过程还不够完善,希望老师继续指导4.2设计改进本系统由于立即数寻址方式未能做好,所以程序代码方面效率不是太高。
主要是因为:修改助记符和微指令时并没有按照规范的步骤修改,就通过记事本方式修改了.mic文件,.mac文件和.dat 文件,虽然运行结果运行可以,但立即数那一块运行有问题。
所以本系统要想改善的话,应该重新做微指令那块,但考虑到时间问题就没有重新做微指令了,虽然程序不是很精简,但运行也没什么问题。