2026/1/11 20:20:25
网站建设
项目流程
校友网站 建设,合肥小程序开发公司哪家好,网站定制公司蒙特,建设网站设计#xff08;以下内容全部来自上述课程#xff09; 目录指令格式1. 指令的定义2. 指令的分类2.1 按地址码数目分类2.2 按指令长度分类2.3 按操作码长度分类2.4 按操作类型分类3. 小结扩展操作码指令寻址1. 提出问题2. 顺序寻址2.1 按字编址--定长2.2 按字节编址--定长2.3 按字…以下内容全部来自上述课程目录指令格式1. 指令的定义2. 指令的分类2.1 按地址码数目分类2.2 按指令长度分类2.3 按操作码长度分类2.4 按操作类型分类3. 小结扩展操作码指令寻址1. 提出问题2. 顺序寻址2.1 按字编址--定长2.2 按字节编址--定长2.3 按字节编址--变长3. 跳跃寻址4. 小结数据寻址1. 直接寻址2. 间接寻址3. 寄存器寻址4. 寄存器间接寻址5. 隐含寻址6. 立即寻址7. 小结偏移寻址1. 基址寻址2. 变址寻址3. 相对寻址4. 小结5. 扩展硬件比较堆栈寻址指令格式1. 指令的定义指令操作码地址码2. 指令的分类指令操作码地址码2.1 按地址码数目分类后缀表达式过程指针指到A先将A送入栈底–指针指到B将B送进去–指针指到将A与B相加压入栈底其余相同就是先送入数据指到运算符就将前几个数进行运算再压入占地零地址指令因为是直接执行停机神马的操作操作的对象是这个机器所以就不需要地址位。一地址指令因为只算是简单的计算所以只需要一个地址变相只需要一个数OPA1–A1将A1中的数进行OP操作后再将结果赋值给A1ACCOPA1–ACCACC隐含的数和A1的数进行OP操作后将结果赋值给ACC二地址指令A1OPA2–A1将A1的数和A2的数进行OP操作后将结果写回A1三地址指令A1OPA2–A3将A1的数和A2的数进行OP操作后将结果写至A3区别就是三比二多了个地址位存结果就是比之前多放了一个地址数用来存下一个地址指令的位置注意如果指令的字长是固定的所以如果地址位越多可分配的地址比特位就越少能查的地址也就越有限寻址能力就越差。2.2 按指令长度分类指令字长会变机器字长不变存储字长不变2.3 按操作码长度分类2.4 按操作类型分类数据传送类运算类算术逻辑操作移位操作程序控制类输入输出操作3. 小结扩展操作码定长指令字结构所有指令的比特位数相同。变长指令字结构…不同。定长操作码操作码的比特位数相同。变长操作码…不同。扩展操作码指令比特位数相同操作码比特位数不同作用用来区分一地址指令神马的通过操作码的长度判断简单来说就是通过看前面有多少组整数倍的分组比特位的1.比如图中的例子分组比特位4bit就看有多少组1111四个1三地址指令正常操作数占一组没有1111所以就有三个地址码二地址指令正常操作数占一组有一组1111所以就有两个地址码所以查看是几地址指令就是四组-一组正常操作数–固定可能再减去1111看1111有几组就减几机器识别指令都是先从前面的操作码再往后扫描的扩展操作码都是1111在操作码的前一组如果与正常组换了位置就是先扫描正常操作码还没等扫描1111的扩展操作码的时候就直接判定这是个几地址指令了所以判断这是几地址指令的关键是在前位的1111有几组具体可以参考这个例子感受一下1111必须在前面指令寻址1. 提出问题2. 顺序寻址2.1 按字编址–定长按字编址指令字长存储字长16bit2B– 1 个存储字1 个地址单元恰好存放 1 条指令。所以想跳到下一条指令直接1就可以了。2.2 按字节编址–定长按字节编址一条指令需要两个字节才能存下所以想跳到下一条指令就必须2如果1就是跳到第一条指令的后半段2.3 按字节编址–变长变长长几个字节就几04–4黄–绿42–6绿–灰3. 跳跃寻址JMP指的是直接跳到后面的地址位就跳到了指令地址为7的指令开始执行指令7.4. 小结数据寻址因为将指令存入内存的时候不可能按照从0往后的顺序刚好给你存入所以在跳跃寻址中如果你从100才开始存的这堆指令跳到7就有可能跳到别的进程的指令中了由此可见7这个绝对地址是不可用的见中间的图表这样就必须引入相对地址的概念见第三个图表3是相对于当前的指令而言的位置所以向下跳过三个格就是想要执行的指令后面这种寻址方法就属于数据寻址因为按照地址码来找的指令1. 直接寻址A直接存放真实地址可以直接找到缺点就是超过A可存放的地址位的数字它就没办法找到了操作码和地址码中间的是特征码指明这条指令用的是什么寻址方式2. 间接寻址因为直接寻址有的地址没办法找到所以间接可以扩大可寻找的地址一个指向另一个这样总能找到想要的地址和数据套娃操作地址码中存放地址码也可以中间间接好几次无限套娃扩大寻址范围第一次的地址码位数低而第二次的地址码位数高就大大扩大了可寻址范围如图中第一个就只能找到02^16^-1个地址而第二个就可以找到0232-1缺点就是需要多次访存因为地址码套地址码3. 寄存器寻址快但贵4. 寄存器间接寻址同间接寻址但寄存器版5. 隐含寻址需要额外的硬件可能适用于保密数据6. 立即寻址我们之前做计算都是用地址码指向的数据这次地址码就是需要的数据所以叫做立即为什么不叫直接寻址因为直接寻址寻找到的是地址嘛立即是数缺点依旧是范围注意#是立即寻址的特征7. 小结偏移寻址可以理解为相对寻址毕竟都是相对某某来寻址区别就是这个某某不同1. 基址寻址相对于基址存储器中的地址来寻址基址寄存器专用基址寄存器 or 通用寄存器需指定BR内容不可改形式地址可改2. 变址寻址相对于变址存储器中的地址来寻址变址寄存器专用变址寄存器 or 通用寄存器需指定IX内容可改形式地址不可改3. 相对寻址原始版本相对于下一条指令4. 小结5. 扩展硬件比较堆栈寻址POP ACC把SP指向的数字此时栈顶元素放入ACCPOP X把SP指向的数字此时栈顶元素放入XSP1–SP就是指针向下移动相当于把刚刚指向的数字丢掉ADD YACC中的数字和X中的数字通过ALU相加得到的结果存入YPUSH Y将Y中的数字存入堆栈栈顶指针上移