《计算机组织与结构 第3章 汇编级机器组织》由会员分享,可在线阅读,更多相关《计算机组织与结构 第3章 汇编级机器组织(49页珍藏版)》请在金锄头文库上搜索。
1、1,第3章 汇编级机器组织,2,指令系统定义: 机器指令要求硬件直接实现某种运算或操作的命令; 指令系统所有机器指令的集合。,指令系统与软硬件关系:,3.1 指令系统组成,指令系统是软硬件间的一个“约定”!是软硬件交界面之一,3,一、指令功能,1、指令的操作数,(1)数据结构与数据表示 *数据结构:计算机软件能够直接识别和引用的数据类型; *数据表示:计算机硬件能够直接识别和引用的数据类型;,*相互关系:,使用频率较高,(2)指令的操作数,*操作数类型:所有种类的数据表示, 通常有定点/浮点数、逻辑数、字符、地址等;,*操作数长度:部分种类有几种长度, 如定点/浮点数及逻辑数等,使用频率均较高
2、,可节约存储空间,4,2、指令的操作 *指令操作类型软件中使用频率较高的基本操作; 如数据传送、算逻运算、转移控制等种类,课件约定 第A个寄存器的地址用RA表示、内容用(RA)表示; 第A个主存单元的地址用A表示、内容用A表示; 操作的源操作数用内容表示、目标操作数用地址表示,(1)数据传送 *操作功能:REG、主存、I/O设备间的数据传送; 如 R0(R1)、R00100H,各部件均可为目标操作数,*操作数:8b/16b/的信息(数值/字符/地址等); *操作数个数:2个,无需区分数据类型(无数据运算),5,(2)算术逻辑运算 *操作功能:算术运算加、减、乘、除、+1、-1、求补等; 如:R
3、0(R1)+0100H、R2(R2)+1 逻辑运算与、或、非等; 如:R0(R0)&(R1)、R0(R0),*操作数:算术运算为8b/16b/的有符号/无符号定点数, 逻辑运算为8b/16b/逻辑数, 源操作数、目标操作数的数据类型应相同; *操作数个数:13个(如+1、CA+B、AA+B);,*操作结果状态:Z(是否为零)、S(是否为负数)、 V(是否溢出)、C(是否有进位/借位)等 状态产生与保存由ALU产生、用状态寄存器保存,关系运算=算术运算+结果状态+逻辑运算,6,(3)转移操作 *操作功能:改变程序的逻辑顺序(即下条指令地址PC), 有条件转移、无条件转移、调用、返回等种类;,注:
4、条件转移操作的条件由测试条件及转移条件组成;,调用操作参数有目标指令地址及返回指令地址;,返回操作参数仅为返回指令地址,嵌套调用要求堆栈是按“后进先出”顺序(不按地址)访问的部件,7,*操作数:显式指令的绝对地址或相对地址(偏移量), 隐式状态寄存器的状态、堆栈的顶部内容; *显式操作数个数:1个或0个,(4)移位操作 *操作功能:逻辑左/右移、算术左/右移、循环左/右移等; 如:R0(R0)算术(R2),*操作数:操作数据8b/16b/的定点数或逻辑数, 移动位数8b/16b/的无符号定点数; *操作数个数:2个,(5)其他类型操作 浮点运算、十进制运算、字符串处理等,8,二、指令格式,*指
5、令格式组成:由操作码、地址码两个字段组成,*指令格式的相关参数:,操作数对应的部件及地址?,下条指令地址?,*指令系统组成:由若干种机器指令格式组成,9,1、操作码字段 *功能:用编码指明(约定)操作的性质, 包括操作类型、操作数类型及长度3个方面;,例1指令系统约定:操作类型8种,加法操作需支持8/16位定点数、单/双精度浮点数,移位操作需支持8/16位定点数,逻辑非操作只需支持8位逻辑数。操作码字段如何编码?,10,*操作类型编码方法: 性能参数规整性、程序中指令的平均操作码长; 影响译码复杂度 影响程序空间大小,例27种操作使用频率分别为0.4、0.26、0.15、0.06、0.05、0
6、.04、0.04,请进行各操作类型的操作码编码。,11,2、地址码字段 *功能:用编码指明各操作数的地址、源/目标属性, 指明下条指令地址;,*地址码个数: 指令系统中规定地址码个数的最大值, 不同指令中用操作码约定地址码个数;,*地址码源/目标属性: 隐含约定第一个(或最后一个)地址码, 显式指明;,*操作数地址的表示:下小节讨论;,*下条指令地址的表示: 当前指令为顺序型隐含表示,PC=(PC)+当前指令长度, 当前指令为转移型显式表示,=IR中的(地址码);,12,例3续例1,指令系统规定指令2个地址码,若加法、移位、逻辑非操作的地址码个数分别为2个、2个、1个,请说明如何约定地址码个数
7、及源/目标属性?,13,3、指令字 *组成:由操作码及地址码组成,操作码在指令字前部;,*指令字类型: 按地址个数分,指令字长n存储字长,机器字长m存储字长;,按指令字长分指与机器字长的关系 单字长指令、半字长指令、双字长指令等,*指令字结构: (指令系统特性) 定长指令字结构不同指令的指令字长完全相同, 变长指令字结构不同指令的指令字长不尽相同,14,解:操作码长度=16-6-6=4,双地址指令种数=24-P-Q;,例4设指令字长为16位、各地址码均为6位,指令字有零地址、单地址、双地址3种格式; 采用定长操作码时,若零地址、单地址指令分别为P种和Q种,双地址指令最多有多少种? 采用扩展操作
8、码时,若零地址、双地址指令分别为X种和Y种,单地址指令最多种类数M为多少?,零、单、双地址指令操作码长度=16、10、4,,X=(24-Y)26-M26,则M=(24-Y)26-X2-6,15,3.2 操作数存放与寻址方式,一、操作数的存放方式,1、数据在REG中的存放方式 基础通常REG长度CPU字长,REG按其数量进行编址。,*数据长度REG长度时的存放方式:使用REG全部位;,*数据长度REG长度时的存放方式:有两种方案;,*地址码格式:,方案2,16,2、数据在存储器中的存放方式 基础存储字长最短的数据长度;,*存放方式:存放在连续存储单元中, 用最小单元地址表示数据地址;,*地址码格
9、式:,*存放方式属性:有次序和边界两个方面,次序有大端次序和小端次序两种方式,可任选一种,17,整数边界对齐方式:长度为2n个存储字的数据在存储器中存储时,最小单元地址(N)的最低n位必须为零。 如长度为20、21、22个存储字的N为XXXX、XXX0、XX00,边界有边界不对齐和边界对齐两种方式,常选对齐方式,3、数据(常数)在指令中的存放方式,*存放方式:边界采用边界不对齐方式; (尽量减少指令字长) 次序与存储器存放次序一致。(方便CPU处理),*地址码格式:,18,4、堆栈存取方式,*堆栈:堆栈是一种按“后进先出”顺序 存取的存储区;,按“先进先出”顺序存取的存储区称为队列,*堆栈存取
10、方式:类似于圆桶中放入/取出木板,操作步骤入栈:先移动栈顶,再在栈顶写入数据, 出栈:先从栈顶读出数据,再移动栈顶;,操作类型入栈(PUSH/压栈)、出栈(POP/弹出);,存取特征后进先出顺序、不按地址访问, 破坏性读出(只对栈顶操作);,19,*寄存器堆栈: -用移位REG实现,面向硬件 组成特征大小及栈顶固定,,移动的是数据,*存储器堆栈: -借用主存空间实现,面向软件 组成特征大小及栈顶可变,,操作步骤对于入栈时SP递减移动方式 入栈:SP(SP)-X, SP源数据 出栈:目标地址SP,SP(SP)+X,对于入栈时SP递增移动方式,入栈+X、出栈-X,CPU用计数器表示“栈底”;,CP
11、U用堆栈指针REG指向栈顶, 用相关REG表示栈底或大小;,20,例1设主存按字节编址,指令系统约定数据在MEM中采用小端次序存放,MEM堆栈数据长度为2B、入栈时SP递减移动。若栈底指向03FFH、(R0)=0010H、(R1)=0020H,请画出空堆栈、R0入栈、R1入栈、R2出栈时,SP及栈顶内容的变化情况。,21,二、寻址方式,*寻址方式:形成当前指令操作数或操作数地址 及下条指令地址的方式;,*存放数据的部件:寄存器、主存、I/O设备, 堆栈、IR(指令中); *存放指令的部件:主存;,*数据/指令的MEM地址: 有效地址(EA)程序中表示的MEM地址,如程序逻辑地址 物理地址(PA
12、)MEM的硬件地址,如主存地址,两者关系PA=EA的存储管理后地址,作业一:P1644、5、6,22,1、指令寻址方式 *指令种类:顺序型指令、转移型指令;,*指令寻址方式: 顺序寻址用于顺序型指令的下条指令寻址 隐含寻址,下条指令EA=(PC)+“1”;,跳跃寻址用于转移型指令的下条指令寻址 直接寻址,下条指令EA=(地址码); 相对寻址,下条指令EA=(PC)+偏移量;,*指令寻址方式表示:地址码的表示在数据寻址方式中讨论,隐含寻址,下条指令EA=(栈顶)或(特定部件),23,(相对)EA=(PC)-“4”,24,2、数据寻址方式 *目标:缩短指令中地址码长度,方便编译程序生成代码,*地址
13、码:由部件及地址形成方式类型、地址形成参数组成,(1)立即寻址方式 常数操作数为形式地址本身,即操作数存放在指令中。,为便于理解,以单操作数指令为例!,(2)寄存器寻址方式 REG操作数地址为形式地址本身,即数据REG编号。,25,(3)直接寻址方式 主存操作数EA为形式地址本身,即程序逻辑地址。,(4)间接寻址方式 主存操作数EA为形式地址对应的MEM内容。,注:主存操作数寻址方式多数可用作指令寻址方式,注:因需要2次访存,很少使用(适合于指向指针的指针操作),26,(5)寄存器间接寻址方式 主存操作数EA为形式地址对应的地址REG内容。,(6)基址寻址方式 主存操作数EA为基址REG内容加上形式地址的结果。 注:地址REG包含基址REG和变址REG两种类型; 基址寻址对存储管理特别有效(基址REG不变),注:为缩短地址码长度,数据REG和地址REG常混用(通用REG),27,(8)相对寻址方式 主存中指令EA为PC内容加上偏移量的结果。,(7)变址寻址方式 主存操作数EA为变址REG内容加上形式地址的结果。,注:基址REG/变址REG数量=1时,均可隐含表示(B/I); 变址寻址对程序的块处理很有效(形式地址A不变),注:偏移量为形式地址(机器数)的真值,是有符号数!,