页数:24页文件大小:204.5 KB来源: 计算机组成原理ppt课件
本课件讲解指令的功能定义与格式划分、操作码的三种组织方案,以及立即数、直接、变址、相对、间接、基址与堆栈等寻址方式,并概述TEC-2000 16位机与8位机指令系统的组成。
第3章第1讲两项内容
本页为结构/流程示意图,图中标注的主要部件与信号如下,重点体现确定操作数地址与下条指令地址的多种寻址方式。
指令系统指令
本页为结构/流程示意图,图中标注的主要部件与信号如下,重点体现确定操作数地址与下条指令地址的多种寻址方式。
计算机系统由硬件和软件两部分组成
硬件指由中央处理机、存储器以及外部设备等组成的实际装置。软件是为便于用户使用计算机而编写的各种程序,它实际上是由一系列机器指令组成的。
指令是用户使用计算机和计算机运行的最小的功能单位,一台计算机支持(或称使用)的全部指令构成该计算机的指令系统,它对计算机本身的硬件结构的复杂程度和运行性能,对用户完成程序设计的难易程度和工作效率,有非常重要的影响,必须对设计指令系统的工作给以足够的重视,慎重确定。
对指令系统的要求完备性:指令齐全,编程方便高效性:占内存少,运行省时规整性:指令与运算规则统一兼容性:新旧机指令软件兼容当前的计算机指令系统,从其构成的复杂和完备程度,或者说设计中追求的不同的目标区分,可分为CISC和RISC两类:RISC(Reduced Instruction Set Computer),通常称为精简指令系统的计算机,提供数目较少、格式与功能简单、运行高效的指令,追求的是计算机控制器实现简单,运行高速,更容易在单块超大规模集成电路的芯片内制做出来。CISC(Complex Instruction Set Computer),通常称为复杂指令系统的计算机,是相对于RISC一词而提出来的一种说法。
其特点是:指令条数多,格式多样,寻址方式复杂,每条指令的功能强,优点是汇编程序设计容易些,但计算机控制器的实现困难多,很多指令被使用的机会并不多。
寻址方式
本页为结构/流程示意图,图中标注的主要部件与信号如下,重点体现确定操作数地址与下条指令地址的多种寻址方式。
寻址方式(又称编址方式)指的是确定本条指令的数据地址及下一条要执行的指令地址的方法
不同的计算机系统,使用数目和功能不同的寻址方式,其实现的复杂程度和运行性能各不相同。有的计算机寻址方式较少,而有些计算机采用多种寻址方式。
通常需要在指令中为每一个操作数专设一个地址字段,用来表示数据的来源或去向的地址。在指令中给出的操作数的地址被称为形式地址,使用形式地址信息并按一定的规则计算出来的一个数值才是数据(或指令)的实际地址。
在指令的操作数地址字段,可能要指出:①运算器中的累加器的编号或专用寄存器名称(编号)②输入/输出指令中用到的I/O设备的入出端口地址③内存储器的一个存储单元(或一I/O设备)的地址有多种基本寻址方式和某些符合寻址方式,简介如下:寻址方式。
计算机的CPU中一般设置有一定数量的通用寄存器,用于存放操作数、操作数地址或中间结果
假如指令地址码字段给出某一通用寄存器的编号(地址),且所需的操作数就在这一寄存器中,这就是寄存器寻址方式;若该寄存器中存放的是操作数在内存储器中所在单元的地址,这就是寄存器间接寻址方式。可通过指令的操作码或另设一个字段,来区分这两种不同的寻址方式。
1、寄存器寻址、寄存器间接寻址例:RegNo.=5,使用5#累加器,此时5#累加器中的内容为7,可记为(R5)=7,对寄存器寻址方式,操作数就是这里的数值7对寄存器间接寻址,从内存7#单元读出来的数才是操作数。
、立即数寻址所需的一个操作数在指令的地址字段部分直接给出
则Num即为操作数的值。适用于操作数固定的情况,提高了指令的执行速度,当该立即数的值限定为较小值(占用位数少)时,可在第一个指令字中直接给出,否则可在第二个指令字中给出。
在指令的地址码字段直接给出所需的操作数(或指令)在存储器中的地址
则Addr为操作数在存储器中的地址。或转移指令等用到的指令地址。
3、直接寻址例:Addr = 5718H,这里的H表示5718是16进制的值,可能用作下一条指令的地址;也可能用作操作数的地址,若[ 5718H ]= 3,即内存储器5718单元中的内容为3,则操作数就是这里的3。内存储器操作数。
操作数的地址由指定的变址寄存器(由Reg指定)的内容和指令中的地址码(Disp)相加得到
4、变址寻址通用寄存器加法器操作数存储器例:Disp=18H,Reg=5,(R5)=5700H则操作数地址= 5718H便于对数组元素进行处理,是计算机中常用的一种寻址方式。
操作数(或指令)的地址由程序计数器PC的内容(即当前执行指令的地址)和指令的地址码相加得到。5、相对寻址例:Disp = 48H(PC) = 5600H则实际地址= 5648H1).主要用于转移指令,对浮动程序很有用。
2).位移量可正可负,通常用补码表示。
指令的地址码字段给出的内容既不是操作数,也不是操作数的地址,而是操作数(或指令)地址的地址,这被称为间接寻址方式,多一次读内存储器的操作。6、间接寻址存储器操作数Addr1指令中的Addr可以用其他寻址方式给出,例如变址寻址,这就成为变址寻址与间接寻址的复合寻址方式。
在计算机中设置一个专用的基址寄存器,操作数(或指令)的地址通过基址寄存器的内容和指令中的地址码相加得到。7、基址寻址基址寄存器加法器存储器操作数例:Disp= 18H,[BS]= 5700H则操作数地址=5718H主要用于为程序或数据分配存储区,对多道程序或浮动程序很有用,解决了程序在存储器中的定位和扩大寻址空间等问题。
堆栈是内存储器中一块按“后进先出”原则进行读写的存储区,并通过一个专用的寄存器(称为堆栈指针SP)给出堆栈的栈顶(和次栈顶)地址完成数据的读写操作,故不必在指令中用操作数地址字段给堆栈地址。通常在读写操作的前后伴随有计算机自动(不是用户通过指令)修改SP内容的动作,以确保按正确的“后进先出”原则读写堆栈区。
例如:(SP)-1SP和AR,即SP的内容减1存回SP,并送内存地址寄存器,接下来才可以把数据写到堆栈中。完成一次读堆栈操作后,要接着执行(SP)+ 1SP的一次自动修改SP内容的操作。
8、堆栈寻址需要注意的是,指令长度可能是一个字,也可能是两个字或多个字,要看操作数地址字段的位数要求,由具体的情况决定。
单字指令仅用一个指令字
双字指令要用两个指令字,此时第二个指令字的内容可能是立即数、一个直接地址或一个变址位移量。操作码条件码目的寄存器源寄存器I/O端口地址条件转移指令的偏移量直接数/内存地址/指令中变址偏移量6位2位4位4位TEC-2教学机的指令格式。
第一个指令字分为三个主要部分
最高6位是操作码。从这个意义上讲,教学机的基本指令是固定长度的操作码结构,最多支持64条基本指令。
中间的两位,即第9、8两位是条件码。目前我们把它用作条件转移指令的判断条件。
最低的8位有多种用法:给出1或2个寄存器的编号,入/出端口的地址,或用于给出相对转移指令的偏移量。操作码条件码目的寄存器源寄存器I/O端口地址相对转移指令的偏移量直接数/内存地址/指令中变址偏移量8位2位4位4位TEC-2教学机的指令格式。
单字指令仅用一个指令字
双字指令要用两个指令字,此时第二个指令字的内容可能是立即数、一个直接地址或一个变址位移量。TEC-2000教学机的指令格式操作码目的寄存器源寄存器I/O端口地址相对转移指令的偏移量直接数/内存地址/指令中变址偏移量8位4位4位。
第一个指令字分为三个主要部分
最高8位是操作码。从这个意义上讲,教学机的基本指令是固定长度的操作码结构,最多支持256条基本指令。
最低的8位有多种用法:给出1或2个寄存器的编号,或入/出端口的地址,或用于给出相对转移指令的偏移量。操作码目的寄存器源寄存器I/O端口地址相对转移指令的偏移量直接数/内存地址/指令中变址偏移量8位4位4位TEC-2000教学机的指令格式。
TEC-2000教学计算机系统
本页为结构/流程示意图,图中标注的主要部件与信号如下,重点体现教学计算机的硬件组成、软件配置与支持的教学实验。
操作码组织和汇编语句命名8位固定长度
本页为结构/流程示意图,图中标注的主要部件与信号如下,重点体现操作码字段的分组规则与汇编语句的命名约定。
| 指令格式 | 汇编语句 | 操作数个数 | CZVS | 指令分组 | 功能说明 |
|---|---|---|---|---|---|
| 00000000 DRSR | ADD DR,SR | 2 | **** | A | DR ←DR+SR |
| 00000001 DRSR | SUB DR,SR | 2 | **** | A | DR ←DR-SR |
| 00000010 DRSR | AND DR,SR | 2 | **** | A | DR ←DR and SR |
| 00000011 DRSR | CMP DR,SR | 2 | **** | A | DR-SR |
| 00000100 DRSR | XOR DR,SR | 2 | *••• | A | DR ←DR xor SR |
| 00000101 DRSR | TEST DR,SR | 2 | **** | A | DR and SR |
| 00000110 DRSR | OR DR,SR | 2 | *••• | A | DR ←DR or SR |
| 00000111 DRSR | MVRR DR, SR | 2 | •••• | A | DR ←SR |
| 0000 | DEC DR | 1 | **** | A | DR ←DR-100001001 DR |
| 0000 | INC DR | 1 | **** | A | DR ←DR+100001010 DR |
| 0000 | SHL DR | 1 | *••• | A | DR,C ←DR*200001011 DR |
| 0000 | SHR DR | 1 | *••• | A | DR,C ←DR /201000001 OFFSET JR ADR 1 • • • • A 无条件跳转 |
| 指令格式 | 汇编语句 | 操作数个数 | CZVS | 指令分组 | 功能说明 |
|---|---|---|---|---|---|
| 10000000 0000000 | JMPA ADR | 1 | •••• | B | 无条件跳到ADRADR(16位) |
| 10000001 DRSR | LDRR DR,[SR] | 2 | •••• | B | DR ←[SR] |
| 10000010 I/O PORT | IN I/O PORT | 1 | •••• | B | R0 ←[I/O PORT] |
| 10000011 DRSR | STRR [DR],SR | 2 | •••• | B | [DR] ←SR |
| 00000000 | PSHF | 0 | •••• | B | FLAG入栈 |
| 10000101 0000SR | PUSH SR | 1 | •••• | B | SR入栈 |
| 10000110 I/O PORT | OUT I/O PORT | 1 | •••• | B | [I/O PORT] ←R010000111 DR POP DR 1 • • • • B 出栈到DR |
| 0000 | MVRD DR, DATA | 2 | •••• | B | DR ←DATADATA(16位) |
| 00000000 | POPF | 1 | **** | B | FLAG ←出栈 |
| 00000000 | RET | 1 | •••• | B | 子程序返回 |
| 00000000 | CALA ADR | 1 | •••• | D | 调用子程序ADR(16位) |
| 指令格式 | 汇编语句 | 操作数个数 | CZVS | 指令分组 | 功能说明 |
|---|---|---|---|---|---|
| 0000 DRSR | ADD DR,SR | 2 | **** | A | DR ←DR+SR |
| 0001 DRSR | SUB DR,SR | 2 | **** | A | DR ←DR-SR |
| 0010 DRSR | AND DR,SR | 2 | *••• | A | DR ←DR and SR |
| 0011 DRSR | CMP DR,SR | 2 | **** | A | DR-SR |
| 0100 DRSR | MOV DR,SR | 2 | •••• | A | DR ← SR |
| 1001 00DR | DEC DR | 1 | **** | A | DR ←DR-11010 00DR SHR DR 1 *• • • A DR,C ←DR/21011 01DR SHL DR 1 *• • • A DR,C ←DR*21010 10IO IN IO port 1 • • • • A R0 ← [I/O port] |
| 指令格式 | 汇编语句 | 操作数个数 | CZVS | 指令分组 | 功能说明 |
|---|---|---|---|---|---|
| 1011 00SR | PUSH SR | 1 | •••• | B | SR入栈 |
| 1011 01DR | POP DR | 1 | •••• | B | 出栈到DR |
| 1011 10SR | STO SR | 1 | •••• | B | [R9 R8] ← SR |
| 1011 11DR | LOD DR | 1 | •••• | B | DR ← [R9 R8] |
| 1101 DR | MVRD DR, DATA | 2 | •••• | B | DR ←DATA |
| 1010 | PSHF | 0 | •••• | B | FLAG入栈 |
| 1011 | POPF | 0 | **** | B | FLAG ←出栈 |
| 1000 | JZ ADR | 1 | •••• | C | Z=1跳到ADR |
| 1001 | JNZ ADR | 1 | •••• | C | Z=0跳到ADR |
| 1010 | JC ADR | 1 | •••• | C | C=1跳到ADR |
| 1011 | JNC ADR | 1 | •••• | C | C=0跳到ADR |
| 1100 | JR ADR | 1 | •••• | C | 无条件跳到ADR |
| 1100 | CALL | 0 | •••• | C | 调子程序[R11 R10] |
| 1101 | RET | 0 | •••• | C | 子程序返回 |
| 1111 | JMP | 0 | •••• | D | 长跳转到[R11 R10] |
下载地址:{{downurl}}
{{{a}}}
{{#b}}{{{b}}}
{{/b}} {{/title}} {{#nolog}}登陆注册
{{/nolog}} {{#djsx}}点我刷新
{{/djsx}} {{#gocz}} {{/gocz}} {{#ffqr}} {{/ffqr}}