传送指令

Pentium有七组传送指令,用来实现CPU的内部寄存器之间、CPU和寄存器之间、CPU和I/O端口之间的数据传送
1.通用传送指令MOV和MOVZX/MOVSX

(1)两个操作数的位数相同的传送指令MOV
功能:实现CPU内部寄存器之间的数据传送、寄存器和内存之间的数据传送,还可把一个立即数送给内部寄存器或内存单元

作用:
1.将BL中的8位数据送AL
2.将DX中的16位数据送ES
3.BX和BX+1的所指的两个内存单元的内容送到AX
4.AX中的16位数据送到DI和DI+1所指的两个单元
5.将1000和1001两单元的内容给CX
6.将6070H送到SI和SI+1所指的内存单元
7.将立即数5040送DX
8.将EBX+ECX*2+1000H所指单元开始的4个字节的送EAX

(2)两个操作数的位数不相同的传送指令MOVZX/MOVSX
传送的源操作数和目的操作数位数不相同时,MOVZX在传送是进行零扩展,MOVSX进行符号扩展,设BL中未80H

作用:
1.80H被零扩展为0000 0080H送EAX中
2.80H被符号扩展为FFFF FF80H送EAX中

注意(对通用传送指令):
1.可以传送8、16、32位数据,具体取决于指令涉及的寄存器的位数
2.通用传送指令中总是既含源操作数,又含目的操作数,两者之中至少有一个是用寄存器指出的
3.CPU不可通过立即数的大小判断立即数所占空间大小,WORD PTR代表立即数2个字节
3.不能在两个内存单元之间直接传送数据
4.不同从一个段寄存器向另一个段寄存器传送数据
5.寄存器即可作为源操作数,也可作为目的操作数,但CS、IP、EIP寄存器不能作为目的操作数(不能随便修改)
6.用EBX、ESI、EDI、BX、SI、DI来间接寻址时,默认的段寄存器为DS,而用EBP、ESP、BP、SP来间接寻址时,默认的段寄存器为SS
7.当执行给SS寄存器赋值的传送指令时,系统会自动禁止外部中断,等到本条指令和下条指令执行之后,又自动恢复对SS寄存器赋值前的中断开放情况

2.堆栈操作指令PUSH/POP、PUSHA/POPA和PUSHAD/POPAD

计算机运行中需要设置堆栈,堆栈是内存中的特殊存储区,按照“先进后出、后进先出”的规则存取数据。对寄存器值的保存和恢复需要由堆栈操作指令来完成
(1)普通堆栈操作指令PUSH/POP
PUSH指令把一个2字节或4字节的数据推入堆栈,操作数即为立即数,也可为寄存器和存储器中的数据推入堆栈(CPU在不能判断时仅能PUSH两个字节)
栈顶在上,栈底在下

作用:
1.将EAX的内容推入堆栈,栈顶为低位字节,栈指针减4
2.将CS的内容推入堆栈
3.将BX+DI和BX+DI+1所指两单元的内容推入堆栈
4.将立即数0870H推入堆栈,栈顶单元内容为70H
5.将EBX+ESI所指单元开始的4个字节推入堆栈,栈指针减4

弹出指令POP

作用:
1.将栈顶两单元弹出送BX,栈顶地址加2
2.将栈顶两单元弹出送ES,栈顶地址加2
3.将栈顶四单元弹出送EAX,栈顶地址加4

(2)堆栈成组操作指令PUSHA/POPA和PUSHAD/POPAD
堆栈成组操作指令由很强的功能,用一条PUSHA指令就可将8个16位通用寄存器的内容按AX,CX,DX,BX,SP,BP,SI,DI的次序推入堆栈,栈顶指针减16,栈顶单元为DI的低8位,进栈的SP内容是推入堆栈操作前的值。
而PUSHAD推入的次序为EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI
POPA/POPAD进行相反的操作

注意(堆栈操作指令):
1.按字或双字进行的,不能按字节进行,没有PUSH AL这样的操作
2.每推入一个字,堆栈地址减2,推入的数据放在栈顶,低位字节放在较低的地址单元,高位字节放在较高的地址单元(栈底),弹出指令时正好相反,每弹出1个字,栈顶指针加2
3.CS寄存器的值可推入堆栈,不能从堆栈中弹出1个值到CS寄存器
4.堆栈中的内容按后进先出的次序进行传送的,保存和恢复寄存器的内容时,要按照对称的次序执行一系列推入指令和弹出指令

3.累加器专用传送指令IN/OUT(输入/输出指令IN/OUT)

在主机和外部设备之间传送信息时,用输入/输出指令。对输入/输出端口的寻址有两种方式:直接寻址和利用DX寄存器的间接寻址
(1)直接的I/O指令

(2)间接的I/O指令
间接I/O指令执行前,必须在DX寄存器中设置好端口号

注意:
1.只能用累加器作为执行I/O过程的机构,不能用其他寄存器代替
2.用直接I/O指令时,寻址范围为0~255;
用间接I/O指令时,要在DX寄存器中设置好端口号,寻址范围为0~65535;
3.用间接I/O指令时,只能用DX寄存器,甚至不能用EDX!
4.每次I/O指令传输的字节数决定于累加器

4.地址传送指令LEA和LDS/LES/LSS/LFS/LGS

(1)取有效地址LEA
LEA指令的功能是将存储器的有效地址送到一个寄存器,这条指令常用来使一个寄存器作为地址指针

作用:
1.将有效地址2728送AX,指令执行后,AX中为2728
2.指令执行后,BX中的内容为BP+SP的值
3.如EBX=2000 0000H,ECX=1000 0000H,则执行指令后,ESI=3000 2530H
4.如BX=1000H,则执行指令后,EDI=0000 2946H(自动拓展)

注意:
1.LEA指令执行以后,目的寄存器中为内存的有效地址,而不是内存单元中的值
2.当目的寄存器位数多而数据位数少时,进行高位0拓展

(2)取段码和偏移量的指令LDS/LES/LSS/LFS/LGS
这些指令的功能相似,只是段寄存器不同,其功能是把段码和偏移量传送到2个目的寄存器

作用:
1.将2530H和2531H中的16位偏移量送到DI,而把2532H和2533H中的16位段码送DS
2.将1000H~1003H中的32位偏移量送到EDI,把1004H和1005H中的16位段码送ES
3.如EDX所指单元开始为78H,56H,34H,12H,BCH,9AH,则指令使ESP中为1234 5678H,SS中为9ABCH
4.把[EDX]所指单元开始的6个字节送EDX和FS
5.把[EDX]所指单元开始的6个字节送ESI和GS

注意:
1.随着寄存器的位数不同,传送的字节数也不同
2.源操作数总是来自存储器,不过存储器的地址可能是直接指出的,也可能是间接指出的
3.尽管目的操作数只指出了存放偏移量的寄存器组,并没有出现段寄存器名,但是在指令执行以后,分别往段寄存器中传送了数据。实际上,在指令LDS、LES、LSS、LFS、LGS的操作符中指出了段寄存器名DS、ES、SS、FS、GS

Pentium的指令系统(2)——Pentium的指令系统相关推荐

  1. 计算机指令系统课件,《机器指令系统》PPT课件.ppt

    <<机器指令系统>PPT课件.ppt>由会员分享,可在线阅读,更多相关<<机器指令系统>PPT课件.ppt(40页珍藏版)>请在人人文库网上搜索. 1. ...

  2. 1.计算机指令系统,深入学习计算机指令系统唐书

    <深入学习计算机指令系统唐书>由会员分享,可在线阅读,更多相关<深入学习计算机指令系统唐书(42页珍藏版)>请在人人文库网上搜索. 1.第章 指 令 系 统,7.1 机 器 指 ...

  3. 指令系统的发展经历指令系统的发展经历了从简单到复杂的演变过程

    指令系统的发展经历了从简单到复杂的演变过程.早在20世纪50-60年代,计算机大多数采用分立元件的晶体管或电子管组成,其体积庞大,价格也很昂贵,因此计算机的硬件结构比较简单,所支持的指令系统也只有十几 ...

  4. 计算机组成原理指令系统例题,计算机组成原理,指令系统,练习题

    <计算机组成原理,指令系统,练习题>由会员分享,可在线阅读,更多相关<计算机组成原理,指令系统,练习题(6页珍藏版)>请在人人文库网上搜索. 1.单项选择题1 在CPU执行指令 ...

  5. 计算机上午指令系统是指,计算机指令系统是指( )。

    The National Trust in Britain, together with similar voluntary (自愿的) organizations, plays an increas ...

  6. 计算机组成置NVCZ为零,《计算机组成原理》第3版PPT电子课件教案-第四章 指令系统.ppt...

    第 四 章 指 令 系 统 P127 本章介绍指令的一般格式和指令寻址方式.指令分类等. 4.1 指令系统的发展与性能要求 程序:是由一系列的指令序列组成, 解决某一具体问题. 指令:是计算机硬件系统 ...

  7. 微型计算机原理指令系统,微机原理与接口技术 指令系统.ppt

    微机原理与接口技术 指令系统 第4章 指令系统 4.1 寻址方式 4.2 8086指令系统 4.3 从80286到Pentium 系列微处理器的指令系统 第4章 指令系统 指令:计算机用以控制各个部件 ...

  8. 计算机原理指令系统测试卷,计算机组成原理(下)第7章 指令系统测试

    1.单选(1分) 一条双字长直接寻址的子程序调用指令,其第一个字为操作码和寻址特征,第二个字为地址码5000H.假设PC当前值为2000H,SP的内容为0100H,栈顶内容为2746H,存储器按字节变 ...

  9. Pentium 4处理器架构/微架构/流水线 (3) - NetBurst微架构

    Pentium 4 Intel® NetBurst™ Micro-architecture Details Pentium 4处理器是Intel全新NetBurst微架构 的第一代处理器实现(其实也是 ...

  10. Pentium II Pentium III架构/微架构/流水线 (6) - SSE

    Streaming SIMD Extensions (SSE) 相比Pentium II处理器,Pentium III处理器上的流式单指令多数据扩展(SSE)技术更加提升了程序,例如三维图形处理,的性 ...

最新文章

  1. 计算机的网络端口管理器,Win7设备管理器没有端口选项的三大原因及解决措施...
  2. 基于Matlab的BP神经网络在非线性函数拟合中的应用
  3. Java重写父类使用@Override时出现The method destroy() of type xxx must override a superclass method的问题解决...
  4. 生物信息通识技术研讨会
  5. R学习笔记之五:数据操作
  6. BorderContainer的圆角问题
  7. 相对布局(RelativeLayout)的控件运用
  8. const那些事-初始化
  9. php通过ip查询经纬度,php 获取客户端IP地址经纬度所在城市
  10. 在SAP HANA Express Edition里创建数据库表
  11. 操作系统学习笔记-03-操作系统的发展和分类
  12. svn://127.0.0.1/shop
  13. MQTT(2)---MQTT协议
  14. C++ 输出数据类型
  15. saspython知乎_sas比spss好用在哪里?
  16. android hal层编译,Android Hal层接入Opencv(踩坑篇)
  17. 这 26个中国式创新,征服了全世界
  18. 白盒测试 | 用例设计方法之条件组合覆盖
  19. 一个手握安兔兔,一个执掌鲁大师,周鸿祎雷军这场仗谁能赢?
  20. VO、DTO、BO、QO、DO 如何使用,在那一层使用,一张图告诉你;别再纠结命名规则啦,我来告诉你

热门文章

  1. pytorch使用早停策略
  2. python使用curve_fit拟合任意分布
  3. python提取pdf表格信息
  4. html链接增加参数,插入当前URL到@ Html.RouteLink参数来建立一个链接
  5. java程序员从笨鸟到菜鸟之_Java程序员从笨鸟到菜鸟之(二)面向对象之封装,继承,多态(上)...
  6. 数学分析中的基本定理
  7. maven 集成 CXF
  8. 关于 iOS 证书,你必须了解的知识
  9. Qt之QToolButton
  10. silverlight 读取wcf服务 读取宿主端的config 良好的方法