computer organization principle

Slides:



Advertisements
Similar presentations
指令系统 吴非 本章主要内容 指令系统 指令格式 寻址方式 典型指令系统 MIPS指令系统 RISC 与 CISC -2-
Advertisements

信息技术:硬件、软件、网络、数据库 计算机技术、多媒体技术、压缩技术...
2017年3月5日 单片机原理与应用 背景知识调查.
实验四 利用中规模芯片设计时序电路(二).
第三章 计算机核心部件及其 工作原理.
计算机组成原理 第二十一讲 计算机科学与技术学院 舒燕君.
第5章 指令系统 5.1 指令系统的发展 5.2 指令格式与数据表示 5.3寻址方式(编址方式) 5.4 指令类型与指令系统的兼容性
信息技术基础 主讲:邓以克 浙江大学计算机学院.
大连理工大学软件学院 软件工程系 赖晓晨 计算机组成与结构 大连理工大学软件学院 软件工程系 赖晓晨
1.1 计算机系统简介 1.2 计算机的基本组成 1.3 计算机硬件的主要技术指标 1.4 本书结构.
计算机基础知识 丁家营镇九年制学校 徐中先.
第三章 80 x86的指令系统和寻址方式 3.1 指令概述 x86的寻址方式 ( ※ ) 3.3 程序占有的空间和执行的时间
第三章 CPU子系统 西南石油大学计算机科学学院 主讲教师 杨 梅 联系电话:
逆向工程-汇编语言
第四章 典型CPU及指令系统举例.
第2章 汇编语言与汇编程序 ——8086/8088指令系统 mov ax,12h call display Jmp 1234h.
第四章 指令系统及汇编语言程序设计.
总 复 习.
第3章 寻址方式 罗文坚 中国科大 计算机学院
§3 指令系统的设计和优化 指令系统是从程序设计者看到的机器的主要属性,是软、硬件的主要界面 指令系统是计算机系统结构的主要组成部分
第3章 8086/8088指令系统 mov ax,12h call display Jmp 1234h.
走进编程 程序的顺序结构(二).
7.1 机器指令 7.2 操作数类型和操作类型 7.3 寻址方式 7.4 指令格式举例 7.5 RISC 技术.
微机原理与接口技术 ——80x86微处理器 西安邮电大学 计算机学院 范琳.
computer organization principle
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
本章主要内容 CPU的功能和组成 控制器控制原理 指令周期(★★★) 时序产生器和控制方式 硬布线控制器 微程序控制器(★★★)
第5章 计算机、微型计算机的组成及 工作过程.
逆向工程-汇编语言
CPU结构和功能.
版权所有,引用请注明出处 第六章、中央控制器 原著 谭志虎 主讲(改编) 蒋文斌.
计算机组成与系统结构 陈泽宇 副教授.
第3章 MCS-51单片机指令系统 3.1 指令概述 3.2 寻址方式 3.3 MCS-51系列单片机的指令系统.
第二章 80x86计算机组织 x86微处理器 2.2 基于微处理器的计算机系统构成 2.3 中央处理机 2.4 存储器
C语言程序设计 主讲教师:陆幼利.
得技通电子 问题 1.0 、选择题:本大题共15个小题,每小题1分,共15分,在每小题给出的四个选项中,只有一项符合题目要求,把所选项前的字母填在括号内。
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
第四章 MCS-51定时器/计数器 一、定时器结构 1.定时器结构框图
第3章 指令系统和寻址方式 3.1指令系统概述 /8086CPU的寻址方式 3.3 指令的机器码表示方法(略)
计算机组成原理 课程设计.
(Random Access Memory)
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月13日.
2019/4/29 计算机组成原理 辅导教师:陆明强.
工业机器人知识要点解析 (ABB机器人) 主讲人:王老师
第三章 MCS 51的硬件结构.
第二章 补充知识 2.1 总线和三态门 一、总线(BUS) 三总线结构 数据总线DB(Data Bus)
<编程达人入门课程> 本节内容 内存的使用 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
第4章 Excel电子表格制作软件 4.4 函数(一).
实验三 16位算术逻辑运算实验 不带进位控制的算术运算 置AR=1: 设置开关CN 1 不带进位 0 带进位运算;
本节内容 内存复制指令 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
长春理工大学 电工电子实验教学中心 数字电路实验 数字电路实验室.
实验二 带进位控制8位算术逻辑运算实验 带进位控制8位算术逻辑运算: ① 带进位运算 ② 保存运算后产生进位
第八章 总线技术 8.1 概述 8.2 局部总线 8.3 系统总线 8.4 通信总线.
College of Computer Science & Technology
第4课时 绝对值.
微机原理与接口技术 ——8086微处理器 西安邮电大学 计算机学院 范琳.
单片机应用技术 项目一 循环彩灯装置 第5讲 MCS-51单片机指令系统及指令格式 《单片机应用技术》精品课程组 湖北职业技术学院机电工程系.
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
3. 逻辑运算指令 A、简单逻辑操作指令 CLR A. (不影响CY、AC、 OV标志) CPL A
微机原理与接口技术 西安邮电大学计算机学院 宁晓菊.
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
数据表示 第 2 讲.
第4章 指 令 系 统 4.1 指令系统的发展与性能要求 4.2 指令格式 4.3 指令和数据的寻址方式 4.4 典型指令
微机原理与接口技术 西安邮电大学计算机学院 董 梁.
上节复习(11.7) 1、定时/计数器的基本原理? 2、定时/计数器的结构组成? 3、定时/计数器的控制关系?
第三章 CPU子系统 西南石油大学计算机科学学院 主讲教师 杨 梅 联系电话:
第3章 CPU子系统 西南石油大学计算机科学学院 主讲教师 杨 梅 联系电话:
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
第5章 中 央 处 理 器 5.1 CPU的功能和组成 5.2 指令周期 5.3 时序产生器和控制方式 5.4 微程序控制器
Presentation transcript:

computer organization principle 计 算 机 组 成 原 理 computer organization principle 主讲教师 丁纪凯

第5章 指 令 系 统

第5章 — 指令系统 本章要点 指令系统是计算机全部指令的集合,同硬件电路 的工作密切相关,是CPU的一个重要特性。本章重点 论述了指令的寻址方式,结合80X86 系列机和MIPS机 的指令系统讲解机器指令的组成,并根据两种典型的 CPU结构正确分析基本指令的执行过程。

第 5 章 指 令 系 统 5.1 指令与指令系统 5.2 介绍两类指令系统 5.3 指令流程

5.1 指令与指令系统 5.1.1 指令格式 1. 指令 指令是指示计算机执行某种基本操作的命令,CPU能执行的指令是用二进制代码表示的机器指令。 机器指令由操作码(opcode)和操作数(operand)两个字段组成。 操作码 操作数 操作码字段指出该指令的功能——执行何种操作。若操作码字段 有n位,则可表示2n条指令——有2n种不同的基本操作。 操作数字段(又称为“地址码”)指出该指令的操作对象 ,通常为 一个立即数(在指令代码中直接给出)、寄存器中内容、存储单元 的内容或I/O端口的内容:

(1) 若为立即数,则操作数字段即该立即数的二进制表示; (2) 若为寄存器内容,则操作数字段即该寄存器的地址,以寄存器 地址的二进制编码表示.例如CPU有8个寄存器,则这8个寄存器地 址可用3位二进制码“000”~“111”表示之; (3) 若为存储器内容,则操作数字段即该存储器地址的二进制表示。 按指令执行过程,操作数有源操作数和目的操作数之分: 源操作数——参予操作的原始数椐, 目的操作数——指令执行后的结果数据。

2. 指令的地址码结构 按指令操作的不同,源操作数可以是1个,也可以是2个,而有的 2. 指令的地址码结构 按指令操作的不同,源操作数可以是1个,也可以是2个,而有的 指令无操作数,据此,按指令中地址码个数的不同,指令格式可分为:零地址指令 ; 一地址指令 ; 二地址指令 ; 三地址指令 ; (1)零地址指令 指令格式如下: 指令中只有操作码字段(op),而无操作数——地址码字段。 这类指令在如下两种情况下出现: ● 该条指令运行时不需要操作数; 例如 80x86系列中的空操作指令NOP和暂停指令HLT ● 指令有操作对象(操作数),但该操作数是指令操作码已指 定或隐含的,通常指定为累加器进行操作,称为“隐地址”——

例如80x86系列中的BCD修正指令DAA(机器码格式为27H),操 作码27H中己隐含约定操作数为AL,该指令实现BCD码加法操作后, 操作数由指令操作码隐含约定。 例如80x86系列中的BCD修正指令DAA(机器码格式为27H),操 作码27H中己隐含约定操作数为AL,该指令实现BCD码加法操作后, 对AL寄存器中的内容进行修正操作, 采用隐地址指令减少了指令的长度,简化了指令的结构。 (2) 一地址指令 ★ 指令格式如下: 该类指令的功能是: op (A)      或 (AC)op(A) AC 其中 op为操作码,表示该指令的功能; A为一个操作数的地址码——寄存器名(寄存器的编号)、 内存或I/O端口的地址; AC为累加器(在一地址指令中为“隐地址” );

(A)为地址码的内容,即A的寄存器、内存或I/O端口的中的 内容; (AC)为累加器AC中的内容; ★ 采用一地址指令的两种情况: 一种是单操作数指令,源与目的为同一操作数,由指令中地址 码A指定。 例如:80x86系列中的增量指令INC CL的机器码格式为 : FE C1 H即 111111 10 11 000 001 f1 f21 f22 f23 f1字段FEH和f22字段000表示这是8位增量指令, f21字段 11 说明是寄存器操作数、f23字段001指出寄存器为CL。 一种是双操作数 — 一个操作数由指令的地址码A给出,另一 个操作数是隐含的,一般为累加器AC。

例如80x86系列中的乘法指令MUL CL的机器码格式为: F6 E1H 即 11110110 11 100 001 f1 f21 f22 f23 f1字段的11110110和f22的100表示该指令为两个8位数相乘, f21的11表示是两个寄存器相乘,f23的001表示乘数为CL,执行 AL×CL,结果送AX的操作,其中被乘数AL和乘积AX在机器码格式 中无操作数字段表示。 (3) 二地址指令 指令格式如下: 该类指令的功能是: (A1)op(A2) A1

(4) 三地址指令 指令格式如下: 该类指令的功能是: (A2)op(A3) A1 其中, op为操作码,表示该指令的功能; A2为第一个源操作数的地址码——寄存器名、内存或I/O端口 的地址,也可以是立即数; A3为第二个源操作数的地址码——寄存器名、内存或I/O端口 A1为目的操作数(操作结果)的地址码——寄存器名、内存或 I/O端口的地址; (A2)为地址码的内容,即A2的寄存器、内存或I/O端口的中的 内容; (A3)为地址码的内容,即A3的寄存器、内存或I/O端口的中的

上述零地址、一地址和二地址指令的特点是: 指令代码短、硬件实现简单以及执行速度快。一般用于结构较简 单而且字长较短的小型机和微型机中。 三地址指令的特点是: 指令代码长、指令功能强、便于编程。一般用于结构较复杂而且 字长较长大型机中。

3. 指令的操作码 其操作码的编码也不同。通常,希望用尽可能短的操作码字段来表达 全部的指令。指令操作码的编码可以分为规整型和非规整型两类。 3. 指令的操作码 指令系统中的每一条指令都有一个唯一确定的操作码,指令不同, 其操作码的编码也不同。通常,希望用尽可能短的操作码字段来表达 全部的指令。指令操作码的编码可以分为规整型和非规整型两类。 (1)规整形(定长编码) 简单的编码方法,操作码字段的位数和位置是固定的,其位数 应当有足够长。 若一指令系统有m条指令,则指令中操作码字段的位数为N位 应满足m≤2N ,即 N≥log2 m 该方法有利于简化硬件设计,减少指令译码时间。 广泛应用 于大中型计算机中。

中操作码位数都一样为8位。8位操作码最多可有256条指令。 例 IBM370机(字长32位),在它的半字长,单字长,1个半字长指令 中操作码位数都一样为8位。8位操作码最多可有256条指令。 (2) 非规整形(变长编码) 操作码字段位数不同,且分散在指令字的不同位置上,能有效 压缩指令中操作码字段的平均长度,但将增加指令译码和分析的难 度,使控制器的设计复杂化。 最常用的非规整型编码方式是扩展操作码法。让地址码长度 长的指令(如三地址指令)的操作码字段短些,操作数地址码长度 短的指令(如一或零地址指令)的操作码字段长些。 例 PDP-11机(字长16位)的指令分为单字长、两字长、三字 长三种,操作码字段占4~16位不等,可遍及整个指令长度。

例 1 指令格式如下所示,其中op为操作码, A1、A2 均为寄存器地址码, 试分析该指令的特点。 15 9 7 4 3 0 OP A1 A2 解:(1) 单字长(2字节)二地址指令 (2) OP采用7位,可有27=128条指令 (3) 源和目的操作数都是寄存器,即(reg1)op(reg2)→reg1 寄存器代码均用4位表示,可分别指定16个reg之中一个。 例2 某计算机指令长度为16位,每个地址码为4位,采用扩展操作码的方 法设计指令系统,要求有15条三地址指令,15条二地址指令,15条一 地址指令和16条零地址指令。 解:若采用定长编码方法,三地址指令只能有16条,利用扩展操作码法可在指令长度不变情况下,使指令总数大大超过16条。

指令的编码:0000 XXXX YYYY ZZZZ ~1110 XXXX YYYY ZZZZ 共15条; 设计方法是在设计一类指令中至少留下一个编码作为扩展窗口,与下一个 地址码组成一个更多位数操作码。 (1)采用操作码4位设计三地址指令,取 指令的编码:0000 XXXX YYYY ZZZZ ~1110 XXXX YYYY ZZZZ 共15条; (2)用1111作为扩展窗口,取用操作码8位设计二地址指令,取 指令的编码:1111 0000 YYYY ZZZZ~1111 1110 YYYY ZZZZ 共15条; (3)用1111 1111作为扩展窗口,取用操作码12位设计一地址指令,取 指令的编码:1111 1111 0000 ZZZZ~1111 1111 1110 ZZZZ 共15条; (4)用1111 1111 1111作为扩展窗口,取用操作码16位设计零地址指令,取 指令的编码:1111 1111 1111 0000 ~ 1111 1111 1111 1111 共16条;

4. 汇编语言指令 汇编语言是一种符号语言,其特点是用符号形式表示计算机指令, 用指令助记符代替机器指令的操作码、用标识符代替地址码。这是一 4. 汇编语言指令 汇编语言是一种符号语言,其特点是用符号形式表示计算机指令, 用指令助记符代替机器指令的操作码、用标识符代替地址码。这是一 种面向具体计算机的语言。 汇编语言与机器语言相比、除保留了机器语言的优点外,还具有 易懂、易写、易记、易调试和易修改等优点。与高级语言相比,具有 执行速度快、节省内存和控制精确等优点。不同的CPU有不同的汇编语 言。 80x86系列CPU的汇编语言指令分析: (1) 8086CPU部分指令助记符表

(2)8086汇编语言指令中所用到的寄存器

(3) 80X86汇编语言指令中所用到的存储器操作数表示为: [DISP] / [ REG] / [REG+DISP] 其中, DISP为16位或32位立即数(对8086只能是16位立即数); REG为16位或32位寄存器(对8086只能是16位寄存器),可形 成寄存器间接寻址、基址寻址和变址寻址,也可以用二个寄存器形成 基址变址寻址。

5.1.2 寻址方式 指令的寻址方式是指“指令中操作数的表示形式”。 指令中的操作数—操作对象通常来源于: 5.1.2 寻址方式 指令的寻址方式是指“指令中操作数的表示形式”。 指令中的操作数—操作对象通常来源于: 立即数 — 操作数即指令代码中的地址码部分; 寄存器 — 操作数在寄存器中(即指令代码中的地址码部分所指 出的寄存器中的内容); 内存单元— 操作数在内存单元中(即指令代码中的地址码部分 所指出的内存单元中的内容); I/O端口(I/O接口中存放信息的寄存器)— 操作数在I/O端口中 (即指令代码中的地址码部分所指出的I/O端口中的内容);

前两种操作数的表示比较简单, 立即寻址指立即数操作数,即指令中的地址码部分; 寄存器寻址指寄存器操作数,即由代表寄存器编号的二进制值表 示地址码; 存储器(内存)寻址指存储器操作数,即指令地址码给出内存单 元的地址,由于内存单元的地址一般较长,通常以其有效地址表示。 而有效地址又有多种表示,因此“存储器寻址”又有多种表示形式。 I/O端口操作数的地址较短,比“存储器寻址”简单些。 计算机指令的寻址方式可归纳为如下几种: 立即寻址 ; 隐含寻址 ; 寄存器寻址 ; 直接寻址 ; 寄存器间接寻址 ; 存储器间接寻址 ; 变址寻址 ; 基址寻址 ; 相对寻址 ;

1. 立即寻址 操作数直接由指令中的地址码给出,该操作数的寻址方式称为“立 即寻址”。 指令格式为: 该指令是一条三地址指令, 指令中的op1为操作码; Rd为存放目的 操作数的寄存器的编号、Rs1为一个源操作数的寄存器的编号、imm 为另一个源操作数,是一个立即数; 该指令功能是: (Rs1) op1 imm Rd 这里的一个源操作数imm为立即寻址。 若 op1为AND逻辑与的操作码,指令功能是: (Rs1)AND imm Rd 通常立即寻址的操作数用于对寄存器赋值,进行初始化,也用于要 求有立即数参予的一些数据运算(算术和逻辑运算)的指令中。

注意: 立即数只能作为源操作数,不能作为目的操作数。 在汇编语言指令中,通常直接用数字表示操作数, 例如:ADD AL,20H ; 例如:有的计算机中,在常数前加上#表示立即数, ADD AL,#20H ; 2. 寄存器寻址 操作数是一个寄存器中存放的数据,寄存器的编号由指令中对应的 地址码给出。 三地址指令的格式为: 地址码字段Rs1、Rs2和Rd都是寄存器寻址的操作数。把指令中的 地址码——寄存器号Rs1、Rs2和Rd作为指针,直接指向对应寄存器 中的操作数。若寄存器号Rs1、Rs2和Rd字段各为n位二进制代码,可 以有2n个寄存器作为操怍数。

3. 直接寻址 指令中的地址码字段X即内存操作 数的地址,据此代码,从对应内存中 取出内存操作数参予运算。 该指令功能是: (Rs1) op1 (Rs2) Rd 3. 直接寻址 操作数在存储器中,存储器的地址在指令中由代码直接給出。 寻址过程示意图如下: 指令中的地址码字段X即内存操作 数的地址,据此代码,从对应内存中 取出内存操作数参予运算。 操作数的地址是指令代码的组成部分,适用于访问固定的存储单元。 当内存容量很大时,地址码会很长。在汇编语言指令中,直接寻址中 的内存地址可直接在指令中用数字給出,有的计算机中在数字前后加上一个符号[ ]。

addr为一个存放另一源操作数的内存单元地址 ,以立即数表示的; 例如: 指令 JUMP 2000 ; AND AL, [2000H] ; 直接寻址的三地址指令的格式为: op1为操作码,表示执行的操作; Rd为存放目的操作数的寄存器; Rs1为一个存放源操作数的寄存器; addr为一个存放另一源操作数的内存单元地址 ,以立即数表示的; 该指令功能是: (Rs1) OP1 mem (addr) Rd

4. 寄存器间接寻址 指令功能为 (BL) AND mem(2000H) AL mem(2000H)表示地址为2000H的内存单元的内容; 例:指令AND AL,BL, [2000H]; 指令功能为 (BL) AND mem(2000H) AL mem(2000H)表示地址为2000H的内存单元的内容; 该指令的机器指令中,Rd为寄存器AL的编号,Rs1为寄存器BL的 编号;addr为立即数2000H表示的内存地址; 4. 寄存器间接寻址 操作数在内存中,内存地址在 寄存器中,指令中給出寄存器的 编号。 寻址过程示意图如下:

该寄存器中取出内容(R) ——X,即内存操作数的地址,据此地址可从 对应内存中取出操作数。 由于寄存器的内容可以攺变,所以这种寻址方式具有很强的寻址能 力。 在汇编语言指令中,表示寄存器间接寻址中的寄存器通常用寄存器 名,并在其前后加上符号( )或[ ]。 例如: AND R1, (R2),R3 ; MOV AX, [ BX ] ; 寄存器间接寻址的三地址指令的格式为:

Rd为存放目的操作数的寄存器,指令中以寄存器的编号表示; Rs1为存放内存操作数的存储单元地址的寄存器 ,指令中给出寄 存器的编号; op1为操作码,表示执行的操作; Rd为存放目的操作数的寄存器,指令中以寄存器的编号表示; Rs1为存放内存操作数的存储单元地址的寄存器 ,指令中给出寄 存器的编号; Rs2为一个存放源操作数的寄存器;指令中以寄存器的编号表示; 该指令功能是: mem [(Rs1)] OP1 (Rs2) Rd 例:指令 AND R1,(R2),R3 , 指令功能为 mem [(R2)] AND (R3) R1 编号 R2的寄存器中的内容(R2)为内存地址,取出该地址对应的 内存单元中的内容是一个源操作数,表示为 mem [(R2)] ,这个 源操作数的寻址方式为寄存器间接寻址。

寻址过程示意图如下: 5. 存储器间接寻址 指令中给出的地址码字段A是存放操作数地址的存储单元的地址, 即操作数地址的地址。 5. 存储器间接寻址 指令中给出的地址码字段A是存放操作数地址的存储单元的地址, 即操作数地址的地址。 寻址过程示意图如下: 指令中,地址码字段A給出内存地址,由A 找到内存单元2,取出其内容X,再以X为地址 找到内存单元1,该内存单元1中存放的数即参 予操作的操作数。 存储器间接寻址方式的寻址能力很强,但由于多次访问存储器而影 响指令执行的速度。 在汇编语言指令中,内存地址A用数字加上符号( ) 或 @( )表示。

Rd 、Rs2为存放目的操作数、源操作数的寄存器,指令中均以寄存 器的编号表示; 例如:指令 ADD R2, ( 2000 )、 AND R1, @(R2), R3 存储器间接寻址的三地址指令的格式为: op1为操作码; Rd 、Rs2为存放目的操作数、源操作数的寄存器,指令中均以寄存 器的编号表示; Rs1为存放操作数地址的存储单元的地址的寄存器 ,指令中给出寄 存器的编号; 该指令功能是: mem [mem(Rs1)] OP1 (Rs2) Rd

例: 指令AND R1,@ (R2), R3 ; 器R3,从该寄存器中取出内容 (R3)为一个源操作数; 指令功能为: mem [mem(R2)] AND (R3) R1 指令中,Rs2字段为寄存器R3的编号,由此字段可找到对应的寄存 器R3,从该寄存器中取出内容 (R3)为一个源操作数; Rd为存放目的操作数寄存器R1的编号 ; Rs1字段为寄存器R2的编号,由此编号找到对应的寄存器 R2,从该寄存器中取出内容(R2)为A即一级内存操作数的地址, 可从内存地址A的内存中取出操作数地址X,然后再由地址 X 的内 存单元取出参加运算的操作数。 由Rs1字段给出的R2二次寻址求得内存操作数mem [mem(Rs1)] 作为一个源操作数,这个源操作数的寻址方式即为存储器间接寻址。

操作数在内存中,操作数的地址由两部分组成:一 是寄存器中的 6. 变址寻址 操作数在内存中,操作数的地址由两部分组成:一 是寄存器中的 数据,二是指令中給出的一个地址码,两者相加之和即为存放操作数的内存单元地址。 寻址过程示意图如下: 指令中,R字段为寄存器号,A为 一个立即数的代码,操作数的地址为 ( R ) + A, 当寄存器中的内容进行 加1或减1操作后寻址时,可以用来对 一个内存数组进行访问。 在汇编语言指令中,变址寻址操作数的表示通常为A ( R )或[R+A]。 例如:指令 ADD R2 , 100 ( R1 )。 ADD R2 , [R1+100]

7. 基址寻址 8. 相对寻址 操作数在内存中,操作数的地址由两部分组成:一是寄存器中的数 7. 基址寻址 操作数在内存中,操作数的地址由两部分组成:一是寄存器中的数 据,二是指令中給出的一个地址码,两者相加之和即内存操作数的地 址。若寄存器中的数值是固定的,而地址码的值是可变化的,这种寻 址方式称为” 基址寻址 “。 基址寻址与变址寻址的指令在形式上相似,其区别是变址寻址中, R中的值是可变 的;而基址寻址中,R中的值是固定的。 8. 相对寻址 操作数在内存中,操作数的地址是程序计数器PC值加上一个偏移量 A,而该偏移量在指令代码中,这种寻址方式称为”相对寻址”。 寻址过程示意图如下:

A可以为正值,也可以为负值。通常A值小于内存地址值; 操作数的地址为 PC+A; 所以相对寻址能以较短的地址码来访问内存。 在汇编语言指令中,一般用 A( PC ) 表示操作数的地址。 例: ADD A,2000H ( PC ) 指令功能为: (AC)+ mem [ (PC)+2000H ] AC

指令中不给出操作数,根据指令中操作码即可确定操作数的存储 9. 隐含寻址 指令中不给出操作数,根据指令中操作码即可确定操作数的存储 位置,操作数隐含在操作码中,这种寻址方式称为”隐含寻址”。 例:指令 PUSH AX 源操作数是AX,目的操作数为堆栈指针SP指出的内存单元, 是隐含的。 在大多数计算机中,累加器A、AL与AX常用作隐含寻址中的操 作数。 例: 指令 ADD #3 该指令中源操作数为立即数 3,目的操作数为A是隐含的。 例: 指令MUL BL 乘数为BL,被乘数为AL,也是隐含的。

5.2 介绍两类指令系统 5.2.1 80x86系列指令系统 系统。8086指令是变字长指令,不同指令的操作码和寻址方式不同,指 80x86及其兼容芯片是应用最多的处理器芯片,属于CISC型的指令 系统。8086指令是变字长指令,不同指令的操作码和寻址方式不同,指 令长度也不一致,每条指令由1~6个字节组成。以8086CPU为例说明 CISC芯片分析指令编码的特点。 最常用的两操作数的传送、加、减、与、或指令的编码格式如图 所示。 操作码 —— 反映该指令的功能 ; 类型 —— 反映操作数的类型(字长等); 寻址方式 —— 反映操作数的寻址方式,寄存器操作数的编码也在 其间;

操作数 —— 操作数中的立即数、内存操作数中的位移量部分。 对于实现“寄存器与寄存器,寄存器与存储器之间”的上述操作的指 操作数 —— 操作数中的立即数、内存操作数中的位移量部分。 对于实现“寄存器与寄存器,寄存器与存储器之间”的上述操作的指 令而言, 上述8086指令编码格式可细化为以下图所示的格式。 第一字节中 6位 OPCODE可表示64个不同的操作 ; D 位表示数据传送的方向:D=0,寄存器为源操作数,D=1,寄存器 为目的操作数 ; W 位表示操作数是字还是字节:W=1,为字操作,W=0,为字节操作 第二字节中3位 REG 字段的编码如表 :

器或是存储器,其指令代码由第二个字节中的MOD字段和R/M字段决定, 如下表所示。 两个操作数中有一个是寄存器,其编码由上表所示;另一个是寄存 器或是存储器,其指令代码由第二个字节中的MOD字段和R/M字段决定, 如下表所示。 MOD = 00、01和10时,另一操作数为存储器操作数; MOD = 11时,另一操作数为寄存器操作数;

R/M = 000~011 :为不带位移量的基址变址寻址 100、101和111 :为不带位移量的寄存器间接寻址 110 :为直接寻址 MOD = 00时 R/M = 000~011 :为不带位移量的基址变址寻址 100、101和111 :为不带位移量的寄存器间接寻址 110 :为直接寻址

MOD = 01时, R/M = 000~011 :为带8位位移量的基址变址寻址 100~111 :为带8位移量的寄存器间接寻址 MOD = 10时, R/M = 000~011 :为带16位位移量的基址变址寻址 100~111 :为带16位移量的寄存器间接寻址 MOD = 11时,另一操作数为寄存器操作数: 8位寄存器为AL、BL、CL、DL、AH、BH、CH和DH 16位寄存器为AX、BB、CX、DX、SP、BP、SI和DI

例5-1 查表写出指令 MOV [BX + 2340H] , AX 的机器指令。 解: 源操作数AX为寄存器,目的操作数[BX +2340H]为存储器操作数。 该指令为16位操作; 机器指令共4字节, MOV指令的操作码为100010,各字段的取值分别为:D=0 ; W=1 第2字节中 MOD = 10 ; REG = 000 ; R/M = 111 , 指令机器码为: 为书写方便,机器指令可以十六进制数表示为:89874023H

例5-2 查表写出指令 ADD [BX +2340H] , AX 的机器指令。 解:只需改变操作码即可,加法指令的操作码为000000,其余字段 不变。 则该指令的机器码如下: 指令的十六进制数机器码为:01874023H

例5-3 查表写出指令 AND [BX +2340H] , AX 的机器指令 。 解:只需改变操作码即可,该指令的操作码为001000,其余字段不变。 则该指令的机器码如下: 指令的十六进制数机器码为: 21874023H

解:只需改变操作码即可,该指令的操作码为001010,其余字段不变。 则该指令的机器码如下: 例5-4 查表写出指令 SUB [BX +2340H] , AX 的机器指令。 解:只需改变操作码即可,该指令的操作码为001010,其余字段不变。 则该指令的机器码如下: 指令的十六进制数机器码为: 29874023H

例5-5 查表写出指令 MOV [BX +2340H] ,1234H 的机器指令 。 解: 该指令是将16位数送内存[BX +2340H]; 1100011 该指令为6字节指令,其机器码如下: 指令的十六进制数机器码为: C78740233412H

5.2.2 MIPS处理器的指令系统 1. MIPS处理器 MIPS处理器是MIPS技术公司推出的一种RISC芯片。自1986年来陆续 推出R2000处理器、R3000处理器、R8000、、R10000、和R12000等型号 处理器。 MIPS处理器的主要特征: (1) 指令系统简单; (2) 采用流水技术,依靠优化编译器进行指令序列的重新安排,以 防止流水线中出现的相互冲突; (3) 使用较多寄存器,32个通用寄存器、一对存储64位数据的寄存 器Hi,Lo以及异常PC寄存器epc。32个通用寄存器分别表示为$0到 $31,其中$0固定为0。Hi,Lo寄存器用于存放定点乘法的结果。

(4) 采用“比较与转移”指令,比较和转移这两个动作在一条指令内 便可完成,如beq $1, $2, 1000。 (5) 没有状态寄存器。 2. MIPS系列微处理器的指令系统 MIPS处理器指令系统的主要特点是MIPS处理器的指令系统简单; 采用32位字长的等字长指令; (1) 指令格式有三种——寄存器型(R型)、立即数型(I型)和转移 型(J型): ◆ R类型的指令:该类型指令从寄存器堆中读取两个源操作数,计 算结果写回寄存器堆; ◆ I类型的指令:该类型指令使用一个16位的立即数作为一个源操 作数;

◆ J类型的指令:该类型指令使用一个26位的立即数作为跳转的目 标地址; 三类指令格式为: rs: 源操作数1的寄存器编号; rt: 源操作数2的寄存器编号; rd: 目的操作数的寄存器编号; shamt: 移位次数(移位指令); funct: 功能码,操作码的扩展,指定操作类型; immediate:立即数; target: 目标地址;

(2)从操作功能分,MIPS的指令种类有: 算术运算指令 ; 逻辑运算指令 ; 数据传送指令 ; 条件转移指令 ; 无条件跳转指令 ; 特殊指令 ; 异常指令 ; 协处理器指令等;

5.3 指令流程 5.3.1 指令执行过程 过程就是按序从主存储器取出指令然后执行指令的过程。 5.3 指令流程 5.3.1 指令执行过程 组成计算机程序的指令序列存放在主存储器中。计算机执行程序的 过程就是按序从主存储器取出指令然后执行指令的过程。 CPU执行指令的过程分为:取指令、指令分析、指令操作执行等三个 阶段: (1)取指阶段 除转移类指令外,程序中的指令是按顺序执行的, CPU按PC(存 放待取指令在主存中的地址)中的地址从主存中取出指令,当取出一 条指令后,PC中内容更新为下一条指令的地址(实际过程是CPU每从 主存中取出一个指令字节,PC中的内容就自动加1,若一条指令为4个 字节,则取出该指令后,PC+4,指向下一条指令地址),

若取出的指令为转移类指令(转移指令、调用指令和返回指令) , 执行该类指令时,将转移的目标地址送PC,以使CPU能取出并执行 目标地址的指令。 (2)指令分析(译码)阶段 在取指阶段,主存中取出的指令经数据寄存储器DR,存入指令 寄存器IR中。在本阶段将指令送指令译码器ID译码、分析、识别, 产生同该指令相对应的指令信号,经操作控制器(协同时序产生 器),产生执行该指令所需要的满足一定时序关系的一组操作控制 信号。 (3)执行操作阶段 完成指令规定的各种操作,形成稳定的运算结果,并将其存储 起来。

5.3.2 三种周期 在指令执行过程中,涉及到三种周期的时间概念: (1) 指令周期 指从一条指令的启动到下一条指令的启动的间隔时间。 5.3.2 三种周期 在指令执行过程中,涉及到三种周期的时间概念: (1) 指令周期 指从一条指令的启动到下一条指令的启动的间隔时间。 亦即CPU执行一条指令所需要的全部时间,包括取指令、译码和 执行指令所需的时间。 指令周期的长短取决于指令的功能。不同指令的指令周期的长短 不一样,例如访内指令的指令周期会大于非访内指令。 (2) 机器周期(又称CPU周期) 一条指令的执行需要经过若干个操作阶段。机器周期是指令执行 中每一步操作所需的时间。 一般用CPU完成一个运算操作所需时间作为机器周期的基本时间, 代表大多数指令操作步骤的时间。

通常以从主存中读取一个指令字的最短时间规定为机器周期。 (3) 时钟周期 时钟周期是CPU主频的周期(通常称为节拍脉冲或T周期),它 是CPU处理操作的最基本单位。 三种周期的关系通常可表示为: 早期的CPU而言: 一个指令周期由若干个机器周期组成,机器周期的个数随指令 不同而不同; 一个机器周期又包含若干个时钟周期; 近代的新型计算机的CPU采用了并行处理技术,使CPU的平均指 令周期可以小于一个时钟周期。

5.3.3 典型的CPU结构类型 指令执行过程和CPU的类型及具体指令的类型有关。介绍典型的单总线 结构类型的CPU。 一种单总线结构如左图示意图所示。 R0~Rn-1:n个通用寄存器GR,是一种多累加 器结构。R0~Rn-1中任一个都可作为源操作 数和目的(结果)操作数; ALU:算术逻辑部件,输入端A由寄存器Y输入,输入端B直接来自内部总线,可由其它送 入总线的寄存器提供,ALU的输出送寄存器Z,通过内部总线BUS送目的寄存器(由指令指定);

SR: 状态寄存器,保存运算结果的有关标志位; MAR:主存地址寄存器,存放被访问信息在主存中的地址; MDR:主存数据寄存器,存放从主存取出的信息以及欲写入主存的信 息; ABUS、DBUS:CPU同主存之间的地址总线和数据总线即芯片总线 (片总线); IR:指令寄存器,主存取出的指令代码经MDR存于其中; ID:指令译码器, 由IR送指令译码器ID译码; 操作控制器:指令由 ID译码后送入,操作控制器根据ID送来的指令信 号和时序产生器输出的时序信号,产生指令执行时所需要 的操作控制信号C0~Ci-1 ; C0~Ci-1:共i个操作控制信号,按指定时序送CPU、主存和I/O接口中的 相关部件,以完成指定的数据处理;

总线BUS:是寄存器与寄存器、寄存器与ALU之间传送信息的公共通路, 这一通路在CPU中称为“数据通路”,这是一种称为单总线的数 据通路。 在任一时刻,总线上可以有多个部件同时接收数据,但只能 有一个部件向同一条总线发送数据,否则会在总线上产生总 线冲突,因此必须对连接到总线上的各部件(寄存器等)进 行输出端控制。 2、 控制信号 CPU中各部件信息的输入和输出除输入输出的数据信号外,还需要 有相应的输入控制信号和输出控制信号这些控制信号包括: Rnout:Rn寄存器的输出控制信号,当Rnout有效时,Rn中的数据输出 到总线;(n=0,1,2,…)

Rnin: Rn寄存器的输入控制,当Rnin有效时,总线上的数据输入Rn; IRout:IR的输出控制,当IRout有效时,IR上数据输出到总线; IRin: IR的输入控制,当IRin有效时,总线上数据输入IR; PCout:PC的输出控制,当PCout有效时,PC上数据输出到总线; PCin: PC的输入控制,当PCin有效时,总线上数据输入PC; Yin: Y寄存器的输入控制,当Yin有效时,总线上数据输入Y; PC+1:PC寄存器更新控制,当PC+1有效时,PC值增量; MARin:MAR输入控制,当MARin有效时,总线上地址信息送入MAR; MDRout:MDR输出控制,当MDRout有效时,MDR上数据输出到总线; MDRin:MDR输入控制,当MDRin有效时,总线上数据送入MDR; Zout: Z寄存器的输出控制,当Zout有效时,Z上数据输出到总线;

ADD:ALU加法操作控制,ADD有效时ALU对A、B两端输入数据进行加法运算; Read:读主存信号,当Read有效时,CPU读主存; Write:写主存信号,当Write有效时,CPU写主存;

5.3.4 指令流程举例——单总线结构CPU 1. 运算指令的执行过程 分析基于图5-13所示的单总线结构CPU的指令流程。 1. 运算指令的执行过程 指令:ADD R3,R1,R2 ; ( R1)+(R2)→R3 ① 送指令地址 指令地址在PC寄存器中,首先把PC值送存储地址寄存器MAR,并从此 地址读内存。 PC→MAR 读存储器(read) ② 计算下一条指令的地址 下一条指令地址 = 当前PC值 + 当前指令字节数 ; 若取单字节指令(下面的指令都是单字节指令), 则 PC+1→PC ③ 读入指令 指令代码从内存储器中读出,通过DBUS送CPU进行译码以决定该指令 的操作。

DBUS→MDR→IR 读内存操作; 若运算结果要求存放在某一内存单元,则在第⑥步也需有一次访存— 写内存操作。 ④ 源操作数寄存器R1送ALU的输入寄存器Y R1→Y 通过单总线 ⑤ 源操作数寄存器R2送ALU的输入,同Y相加输出到ALU寄存器Z R2+Y→Z ⑥ 结果送指定寄存器R3 Z→R3 若有一个源操作数是内存操作数,则在第④步中还需进行一次访存— 读内存操作; 若运算结果要求存放在某一内存单元,则在第⑥步也需有一次访存— 写内存操作。

指令:LOAD R1,mem ; (mem)→R1, 2. 访问存储器指令的执行过程 (1)读存储器指令 指令:LOAD R1,mem ; (mem)→R1, mem为内存地址值,以mem为地址的内存单元中的数据送寄存器R1。 ① 取指令 PC→MAR 读存储器(read) PC+1→PC ② 指令读入译码 DBUS→MDR→IR 译码 ③ 计算地址,读内存 IR(地址段)→MAR 读存储器(read); DBUS→MDR

④ 写回,存结果 (2)写存储器指令 为地址的内存单元。 ① 取指令 ② 指令读入译码 DBUS→MDR→IR 译码 ③ 计算地址 写内存 ④ 写回,存结果 MDR→R1 (2)写存储器指令 指令: STORE R1,mem ; R1→(mem), R1内容存入以mem 为地址的内存单元。 ① 取指令 PC→MAR 读存储器(read) PC+1→PC ② 指令读入译码 DBUS→MDR→IR 译码 ③ 计算地址 写内存 IR(地址段)→MAR R1→MDR 写存储器(write) 在写存储器时,CPU通过IR(地址段)→MAR提供内存地址,通过 R1→MDR提供写入的数据。

上述各指令执行时所需的控制信号如下表所示。 3. 控制指令的执行过程 指令:BR offs ; PC+offs→PC ,offs为相对转移地址 ① 取指令 PC→MAR 读存储器(read) PC+1→PC ② 指令读入译码 DBUS→MDR→IR 译码 ③ 计算地址 PC→Y,Y+IR(地址段offs)→Z ④ 转移 Z→PC 上述各指令执行时所需的控制信号如下表所示。

单总线结构CPU的指令流程

Thank You !