第三节指令类型 clSc化:从增强指令系统功能岀发,指令功能复杂。 RSC化:从提高指令执行效率出发指令功能简单。 3.3.1传送指令 数 源地址一目的地址 设置时需考虑: 1.规定传送范围 例.DJS-100系列:R←→M 80X86:R一M,RR BM370:R←M,R←→R,M←M
第三节 指令类型 CISC化 RISC化 :从增强指令系统功能出发,指令功能复杂。 :从提高指令执行效率出发,指令功能简单。 3.3.1 传送指令 源地址 目的地址 数 设置时需考虑: 1. 规定传送范围 例. DJS-100系列: 80X86: IBM370: R M R M,R R R M,R R,M M
2.指明传送单位 例.VAX-11(用操作码说明): MOVB MOVW MOVI 8 16 32 80X86(用地址量说明):MVAL,BL(8) MOV AX. BX(16 MOV EAX, EBX(32) 例.80X86的串传送指令: REP MOVSW传送次数由 计数器控制 3.设置寻址方式 在寻址方式的设置上几乎不受限制,能比较 集中地反映指令系统各种寻址方式的实现
2. 指明传送单位 例. VAX-11(用操作码说明): 80X86(用地址量说明): 传送次数由 计数器控制 MOVB 8 MOV AX,BX (16) MOVW 16 MOVL 32 MOV AL,BL (8) MOV EAX,EBX (32) 例. 80X86的串传送指令:REP MOVSW 3. 设置寻址方式 在寻址方式的设置上几乎不受限制,能比较 集中地反映指令系统各种寻址方式的实现
3.3:2输入/输出指令 各种信息 主机 外设 设置时需考虑: 1.1/0指令的功能扩展 如何用通用/0指令实现对各种具体设备的控制? (1)1/0指令中留有扩展余地 指令中某些字段编码事先不定义,需要时再约定 其含义。 用于外设种类、数量不多的场合。 (2)1/0接口中设置控制/状态寄存器
3.3.2 输入/输出指令 各种信息 主机 外设 设置时需考虑: 1. I/O指令的功能扩展 如何用通用I/O指令实现对各种具体设备的控制? (1)I/O指令中留有扩展余地 指令中某些字段编码事先不定义,需要时再约定 其含义。 (2)I/O接口中设置控制/状态寄存器 用于外设种类、数量不多的场合
(2)1/0接口中设置控制/状态寄存器 主机用输出指令或传送指令将具体设备的控制命令 按约定的代码格式送往接口中的控制寄存器,向外 设发出命令。 外设的状态信息也以某种格式放在接口的状态寄存 器中,主机用输入指令或传送指令从状态寄存器中 取出有关信息进行查询、分析。 如何设置控制/状态寄存器是接口设计的关键。 2.主机对外设的寻址方式 寻找/0接口中的寄存器的方式。 1/0端口 如何为10端口分配地址?
(2)I/O接口中设置控制/状态寄存器 2. 主机对外设的寻址方式 如何设置控制/状态寄存器是接口设计的关键。 寻找I/O接口中的寄存器的方式。 主机用输出指令或传送指令将具体设备的控制命令 按约定的代码格式送往接口中的控制寄存器,向外 设发出命令。 外设的状态信息也以某种格式放在接口的状态寄存 器中,主机用输入指令或传送指令从状态寄存器中 取出有关信息进行查询、分析。 I/O端口 寻找I/O接口中的寄存器的方式。 如何为I/O端口分配地址?
(1)单独编址 编址到设备:每个设备有各自的设备编码 /0指令中给出设备码,并指明访问该设备的哪 个寄存器 编址到寄存器:为每个寄存器(0端口)分配独 立的端口地址; 1/0指令中给出端口地址。 /0地址空间不占主存空间,可与主存空间重叠。 需设置标志区分访问对象,如 M/0∫=1访问存储器 =0访问0端口 (2)统一编址
(1)单独编址 I/O地址空间不占主存空间,可与主存空间重叠。 编址到设备:每个设备有各自的设备编码; I/O指令中给出设备码,并指明访问该设备的哪 个寄存器。 =1 访问存储器 =0 访问I/O端口 需设置标志区分访问对象,如 编址到寄存器:为每个寄存器(I/O端口)分配独 立的端口地址; I/O指令中给出端口地址。 M/IO (2)统一编址
(2)统一编址 编址到寄存器:为每个寄存器(/0端口)分配总 线地址; 访问外设时,指令中给出总线地址。 1/0端口占据部分主存空间。 常将存储空间的低端分配给主存单元,高端分配 给0端口,以示区分。 3.1/0指令设置方式 (1)设置专用/指令—显式/0指令 针对单独编址,用1/0指令访问/0端口。 指令中说明输入/输出操作,并给出设备码或端口 地址
(2)统一编址 I/O端口占据部分主存空间。 常将存储空间的低端分配给主存单元,高端分配 给I/O端口,以示区分。 编址到寄存器 (1)设置专用I/O指令 针对单独编址,用I/O指令访问I/O端口。 指令中说明输入/输出操作,并给出设备码或端口 地址。 :为每个寄存器(I/O端口)分配总 线地址; 访问外设时,指令中给出总线地址。 3. I/O指令设置方式 显式I/O指令
例1.DJS-100系列0指令设置 标志累加器号操作码控制功能设备码 3 3 6 输入:DB02,设备码;(B)→AC2并清除B 接口中主机内 输出:D0A3,设备码;(Ac3)→A 例2.80X861/0指令设置 输入:INAL,n; (n)→AL(直接端口寻址 端口地址 NAL,DX;((DX)—→AL(间接端口寻址) 间接端口地址 输出:0UTn,AL;(AL)→n(直接端口寻址 0uUTD,A;(AL):(DX)(间接端口寻址
例1. DJS-100系列I/O指令设置 3 2 3 2 6 输入:DIB C 2,设备码;(B) AC2 标志 累加器号 操作码 控制功能 设备码 并清除B 接口中 主机内 输出:DOA 3,设备码; (AC3) A 例2. 80X86I/O指令设置 输入:IN AL,n; 端口地址 (n) AL (直接端口寻址) IN AL,DX; 间接端口地址 ((DX)) AL(间接端口寻址) 输出:OUT n,AL;(AL) n (直接端口寻址) OUT DX,AL;(AL) (DX)(间接端口寻址)
2)用传送指令实现/操作 隐式/0指令 针对统一编址,用传送指令访问0端口。 不设专用/0指令。 例.某机l/0接口中设置 控制/状态寄存器cSR,其总线地址为177550(8进制) 数据缓冲寄存器DBR,其总线地址为177552 控制/状态字格式: 15 14 6 0 出错故障忙完成允许中断维护校验启动 主机调用输入机:启动:主机控制字Q启动位为1)17750 测试:主机 状态字 传送指令 177550 取数:主机←传送指令 数据 177552
主机调用输入机: (2)用传送指令实现I/O操作 针对统一编址,用传送指令访问I/O端口。 不设专用I/O指令。 例. 某机I/O接口中设置 控制/状态寄存器CSR,其总线地址为177550(8进制) 数据缓冲寄存器DBR,其总线地址为177552 隐式I/O指令 控制/状态字格式: 出错 故障 忙 完成 允许中断 维护 校验 启动 15 14 12 7 6 2 1 0 启动: 测试: 取数: 主机 177550 控制字(启动位为1) 传送指令 主机 177550 状态字 传送指令 主机 177552 数据 传送指令
(3)通过/0处理机进行l/0操作 GPU执行简单1/0指令 两级0指令(启动、停止、查询、清除) 1/0处理机执行10操作指令 (输入、输出 3.3.3算术逻辑运算指令 1.算术运算指令 设置时需考虑操作数类型、符号、进制等 运算结束后设置相应状态标志。 2.逻辑运算指令 实现对代码位的设置、测试、清除、修改等。 或 与 异或
(3)通过I/O处理机进行I/O操作 CPU执行简单I/O指令 (启动、停止、查询、清除) 设置时需考虑操作数类型、符号、进制等; 运算结束后设置相应状态标志。 两级I/O指令 1. 算术运算指令 I/O处理机执行I/O操作指令 (输入、输出……) 3.3.3 算术逻辑运算指令 2. 逻辑运算指令 实现对代码位的设置、测试、清除、修改等。 或 与 异或
3.3:4程序控制指令 控制程序流程。 1.转移指令 无条件转移:操作码转移地址 条件转移:操作码转移地址转移条件 循环 :转移条件为循环计数值 2.转子指令与返回指令 转子:操作码子程序入口 返回:操作码返回地址 同一条返回指令应能提供多个不同的返回地址。 返回地址的存取:用堆栈存放返回地址
控制程序流程。 1. 转移指令 3.3.4 程序控制指令 2. 转子指令与返回指令 转子:操作码 子程序入口 无条件转移 条件转移 循环 :操作码 转移地址 :操作码 转移地址 转移条件 :转移条件为循环计数值 返回:操作码 返回地址 同一条返回指令应能提供多个不同的返回地址。 返回地址的存取:用堆栈存放返回地址