计算机组成原理_指令系统.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* MOV指令 PUSH/POP指令 加、减和比较指令ADD\SUB\CMP 乘法、除法指令MUL\DIV BCD运算和ASCII运算 基本逻辑指令AND\OR\XOR\NOT 位测试指令TEST 移位与循环指令SAL\SAR\SHL\SHR 转移控制指令JMP\JC\JNC\... 子程序调用和返回指令CALL\RET 输入输出指令IN\OUT 3.4.5 80x86指令系统举例 * * * * * * 2.存储器堆栈 从主存中划出一段区域来作堆栈,这种堆栈又称为软堆栈,堆栈的大小可变,栈底固定,栈顶浮动,故需要一个专门的硬件寄存器作为堆栈栈顶指针SP,简称栈指针。栈指针所指定的主存单元,就是堆栈的栈顶。 图3-15 存储器堆栈结构 高地址 低地址 堆栈区 * * 自底向上生成堆栈的进栈 堆栈的栈底地址大于栈顶地址,通常栈指针始终指向栈顶的满单元。进栈时,SP的内容需要先自动减1,然后再将数据压入堆栈。 2000 1FFF (SP)-1→SP 修改栈指针 (A)→(SP) 将A中的数据压入堆栈 SP 2000 A 2000 原栈顶 单元 现栈顶 单元 1FFF * 自底向上生成堆栈的出栈 出栈时,需要先将堆栈中的数据弹出,然后SP的内容再自动加1。 2000 ((SP))→A 将栈顶内容弹出,送入A中 (SP)+1→SP 修改栈指针 SP 1FFF A 1FFF 原栈顶 单元 现栈顶 单元 1FFF 2000 自底向上生成堆栈的工作过程 * * * 自顶向下生成堆栈的工作过程 (SP)+1→SP 修改栈指针 (A)→(SP) 将A中的数据压入堆栈 入栈 出栈 (SP)-1→SP 修改栈指针 (A)→(SP) 将A中的数据弹出堆栈 * 比较:存储器堆栈的操作方式与寄存器堆栈不同,它移动的是栈顶,而在寄存器堆栈中移动的是数据。 * 3.2.2 堆栈操作 堆栈操作既不是在堆栈中移动它所存储的内容,也不是把已存储在栈中的内容从栈中抹掉,而是通过调整堆栈指针而给出新的栈顶位置,以便对位于栈顶位置的数据进行操作。 在一般计算机中,堆栈主要用来暂存中断断点、子程序调用时的返回地址、状态标志及现场信息等,也可用于子程序调用时参数的传递,所以用于访问堆栈的指令只有进栈(压入)和出栈(弹出)两种。 * * 堆栈寻址举例 15 200H ACC SP X 栈顶 200H 栈底 主存 15 1FFH ACC SP 15 栈顶 200H 栈底 主存 X 1FFH PUSH A 前 PUSH A 后 POP A 前 POP A 后 Y 1FFH ACC SP X 栈顶 200H 栈底 主存 15 1FFH 15 200H ACC SP 栈顶 200H 栈底 主存 X 15 * * 子程序的调用和返回 CALL SUB1 ... ... CALL SUB2 … ... CALL SUB2 … RETURN RETURN 主程序 地址 2000 2100 2101 子程序SUB1 2400 2500 2501 2560 2561 2700 主存空间分配 程序执行流程 子程序SUB2 ... 用堆栈存放主程序的返回地址,实现子程序的嵌套和递归调用; * 在堆栈计算机中,堆栈是保存操作数和运算结果的唯一场所。此时的算术逻辑类指令中没有地址码字段,故称为零地址指令。参加运算的两个操作数隐含地从堆栈顶部弹出,送到运算器中进行运算,运算的结果再隐含地压入堆栈。如果将算术表达式改写为逆波兰表达式,用零地址指令进行运算是十分方便的。 例如:有算术表达式a×b+c÷d,运算结果送x,这个算术表达式可以用逆波兰法表示成为ab×cd÷+。 3.2.2 堆栈操作(续) * PUSH A ;数据a压入堆栈 PUSH B ;数据b压入堆栈 MUL ;完成a×b PUSH C ;数据c压入堆栈 PUSH D ;数据d压入堆栈 DIV ;完成c÷d ADD ;完成a×b+c÷d POP X ;结果存入X单元 执行一条零地址的双操作数运算指令,如果是软堆栈,则需要访问4次主存;如果是硬堆栈,则只需要访问一次主存。 * 一台计算机的指令系统可以有上百条指令,这些指令按其功能可以分成几种类型。 3.4 指令类型 * 1.一般传送指令 一般传送指令具有数据复制的性质,即数据从源地址传送到目的地址,而源地址中的内容保持

文档评论(0)

ma982890 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档