第三章指令系统 ●本章主要讨论:一般指令格式 常用寻址方式 面向用户指令类型 第一节指令格式 指令基本格式操作码θ地址码D 个 个或几个
第三章 指令系统 本章主要讨论:一般指令格式 常用寻址方式 面向用户指令类型 第一节 指令格式 指令基本格式 操作码θ 地址码 D 一个 一个或几个
311指令字长 定长指令格式便于控制 变长指令格式合理利用存储空间 3.12操作码格式 1.定长操作码 各指令θ的位置、位数固定相同。 2.扩展操作码 各指令θ的位置、位数不固定,根据需要 二:变化。关鍵在设置扩展标志
3.1.1 指令字长 定长指令格式 变长指令格式 便于控制 1. 定长操作码 各指令θ的位置、位数固定相同。 2.扩展操作码 各指令θ的位置、位数不固定,根据需要 变化。 合理利用存储空间 3.1.2 操作码格式 关键在设置扩展标志
例指令字长16位,可含有3、2、1或0 个地址,每个地址占4位 操作码。地址码 87~43~0 0000X 三地址指令15条 110XY 10000Y ZZ:Z 二地址指令15条 1111110Y 111111110000Z 地址指令15条 11111111110Z 1111111111110000 零地址指令16条 1111111111111111
例. 指令字长16位,可含有3、2、1或0 个地址,每个地址占4位。 操作码 地址码 15~ 12 11~ 8 7 ~ 4 3 ~ 0 0000 X Y Z 1110 X Y Z ... ... ... ... 1111 0000 Y Z 1111 1110 Y Z ... ... ... ... 三地址指令 15条 二地址指令 15条 1111 1111 0000 Z 1111 1111 1110 Z ... ... ... ... 一地址指令 15条 1111 1111 1111 0000 1111 1111 1111 1111 ... ... ... ... 零地址指令 16条
3.操作码采用方式码编码 操作码分为几部分,每部分表示一种操作。 例.某机算逻指令 6 8 15 基本操作进位移位回送判跳操作数 31.3地址结构 指令中提供的地址数< 存储单元地址码 寄存器编号 1指令提供地址的方式直接或间接给出 显地址方式:指令中明显指明地址。 ●隐地址方式地址隐含约定不出现在指令中
3. 操作码采用方式码编码 操作码分为几部分,每部分表示一种操作。 例.某机算逻指令 3.1.3 地址结构 0 1 2 3 4 5 6 7 8 15 基本操作 进位 移位 回送 判跳 操作数 指令中提供的地址数 存储单元地址码 寄存器编号 1.指令提供地址的方式 显地址方式 隐地址方式 :指令中明显指明地址。 :地址隐含约定,不出现在指令中。 直接或间接给出
使用隐地址可以减少指令中的地址数,简化 地址结构。 2.地址结构的简化 (1)四地址结构指令 格式:[6D1①D2D3「D4 作数结果 ●功能:(D1)002)→D3 (D4)下条指令 用指令计数器PG指示指令地址
2. 地址结构的简化 操作数 地址 (1)四地址结构指令 格式: 使用隐地址可以减少指令中的地址数,简化 地址结构。 θ D1 D2 D3 D4 结果 地址 下条指 令地址 功能:(D1)θ(D2) D3 (D4) 下条指令 用指令计数器PC指示指令地址
·(2)三地址结构指令 格式:[D1D21D3 数结果 地址 ●功能:(D1)00D2)→D3下条指令地址 (PC)+1 PC转移时,用转移 ●(3)二地址结构指令 地址修改PG内容。 格式:[6DD2 源/目的目的源 ●功能:(01)0(02)→D2/D1 (PC)+1→PG
(2)三地址结构指令 格式: 操作数 地址 θ D1 D2 D3 结果 地址 功能: 下条指令地址 转移时,用转移 地址修改PC内容。 (D1)θ(D2) D3 (PC) + 1 PC 源/目的 (3)二地址结构指令 格式:θ D1 D2 目的/源 功能:(D1)θ(D2) D2/D1 (PC) + 1 PC
●(4)一地址结构指令 格式:[D1 隐含约定 功能:双操作数:(01)0(A)一A (PC)+1 PC 单操作数:0(D1)→D1 (PC)+1→→PG (5)零地址结构指令 格式:[6 栈顶下 栈顶内容单元内容 新栈顶 功能:用于堆栈:(sP)(sP)+1)→(sP+1 (SP)+1→SP指向新栈顶
双操作数: (4)一地址结构指令 格式: θ D1 隐含约定 单操作数: 功能: (5)零地址结构指令 格式: (D1)θ(A) A (PC) + 1 PC θ(D1) D1 (PC) + 1 PC θ 功能:用于堆栈:((SP))θ((SP)+1) (SP)+1 (SP)+1 SP 栈顶内容 栈顶下一 单元内容 新栈顶 指向新栈顶
例ADD;执行前 执行后 sP一10/低 低 20 SP 30 46高 46高 用于特殊指令:((S)θ(01)→(D) (如串操作指令)修改S|、D
例.ADD; 执行前: 低 用于特殊指令: (如串操作指令) ((SI))θ((DI)) (DI) 修改SI、DI SP 10 20 46 SP 30 46 执行后: 高 低 高