上一题下一题
跳转到
 
 
  世界如此多姿,发展如此迅速,窥一斑未必还能知全豹。但正如万花筒一样,每一个管窥都色彩斑斓。  
 
 
  知识通道 | 学习首页 | 教师首页 | PK首页 | 知识创造首页 | 企业首页 | 登录
 
本文对应知识领域
指令系统
作者:未知 申领版权
2010年12月12日 共有 1924 次访问 【添加到收藏夹】 【我要附加题目
受欢迎度:

    核心提示:第 5章 微机CPU的指令系统指令系统确定了CPU所能完成的功能,是用汇编语言进行程序设计的最基本部分。如果不熟悉汇编指令的功能及其有关规定,那么,肯定不 能灵活运用汇编语言。所以,本章的内容是学习本课程的重点和难点。5.1 汇编语言指令格式为了介绍指令系统中指令的功能,先要清楚汇编语言是如何书写指令的...
    3、交换指令XCHG(Exchange Instruction)
    

交换指令XCHG是两个寄存器,寄存器和内存变量之间内容的交换指令,两个操作数的数据类型要相同。其指令格式如下:
    XCHG  Reg/Mem, Reg/Mem
    该指令的功能和MOV指令不同,后者是一个操作数的内容被修改,而前者是两个操作数都会发生改变。寄存器不能是段寄存器,两个操作数也不能同时为内存变量。
    XCHG指令的功能如图5.3所示。
    
 
    
    

例5.2 已知:AX=5678H,BX=1234H,指令XCHG  AX, BX执行后,AX和BX的值是什么?
    解:这是两个寄存器内容进行交换,指令执行后,有:(AX)=1234H,(BX)=5678H。
    
    4、取有效地址指令LEA(Load Effective Address)
    

指令LEA是把一个内存变量的有效地址送给指定的寄存器。其指令格式如下:
    LEA  Reg, Mem
    该指令通常用来对指针或变址寄存器BX、DI或SI等置初值之用。其功能如右图所示。
    例如:
    
 
    
    

 
    

 
    

    
BUFFER
    
DB  100 DUP(?)
    

    
LEA
    
BX, BUFFER          ;把字节变量BUFFER在数据段内的偏移量送给BX
    

    

问题:指令“LEA  BX BUFFER”和“MOV  BX, OFFSET BUFFER”的执行效果是一样的吗?指令“LEA BX,[BX 200]”和“MOV BX,OFFSET [BX 200]”二者都正确吗?
    5、取段寄存器指令(Load Segment Instruction)
    该组指令的功能是把内存单元的一个“低字”传送给指令中指定的16位寄存器,把随后的一个“高字”传给相应的段寄存器(DS、ES、FS、GS和SS)。其指令格式如下:
    LDS/LES/LFS/LGS/LSS  Reg, Mem
    指令LDS(Load Data Segment Register)和LES(Load Extra Segment Register)在8086CPU中就存在,而LFS和LGS(Load Extra Segment Register)、LSS(Load Stack Segment Register)是80386及其以后CPU中才有的指令。
    若Reg是16位寄存器,那么,Men必须是32位指针;若Reg是32位寄存器,那么,Men必须是48位指针,其低32位给指令中指定的寄存器,高16位给指令中的段寄存器。指令的执行结果如图5.5所示。
    

 
    
    
 
    
    
 
    

 
    

例如:
    
 
    

    
POINTER  DD  12345678H
    

    
LDS
    
BX, POINTER
    

    
指令的执行结果如图5.5所示。各寄存器的内容分别为:(BX)=5678H,(DS)=1234H。
    

下面控件是学习和掌握MOVMOVSX/MOVZXXCHGLEA、LDS/LES/LFS/LGS/LSS指令的,它可检查用户输入这些指令的合法性,并对合法的指令显示其执行的结果。
    注意:如果指令中含有表示内存单元的寻址方式,那么其控件中的"内存单元的类型"即表示该指令中内存单元的数据类型。
    
    6、堆栈操作指令(Stack Operation Instruction)
    堆栈是一个重要的数据结构,它具有“先进后出”的特点,通常用来保存程序的返回地址。它主要有两大类操作:进栈操作和出栈操作。
    1)、进栈操作
    、PUSH(Push Word or Doubleword onto Stack)
    指令格式:PUSH  Reg/Mem
    PUSH  Imm                    ;80286
    一个字进栈,系统自动完成两步操作:SP←SP-2,(SP)←操作数;
    一个双字进栈,系统自动完成两步操作:ESP←ESP-4,(ESP)←操作数。
    、PUSHA(Push All General Registers)
    指令格式:PUSHA              ;80286
    其功能是依次把寄存器AX、CX、DX、BX、SP、BP、SI和DI等压栈。
    、PUSHAD(Push All 32-bit General Registers)
    指令格式:PUSHAD              ;80386
    其功能是把寄存器EAX、ECX、EDX、EBX、ESP、EBP、ESI和EDI等压栈。
    2)、出栈操作
    、POP(Pop Word or Doubleword off Stack)
    指令格式:POP  Reg/Mem
    弹出一个字,系统自动完成两步操作:操作数←(SP),SP←SP-2;
    弹出一个双字,系统自动完成两步操作:操作数←(ESP),ESP←ESP-4。
    、POPA(Pop All General Registers)
    指令格式:POPA              ;80286
    其功能是依次把寄存器DI、SI、BP、SP、BX、DX、CX和AX等弹出栈。其实,程序员不用记住它们的具体顺序,只要与指令PUSHA对称使用就可以了。
    、POPAD(Pop All 32-bit General Registers)
    指令格式:POPAD            ;80386
    其功能是依次把寄存器EDI、ESI、EBP、ESP、EBX、EDX、ECX和EAX等弹出栈,它与PUSHAD对称使用即可。
    8、I/O指令
    有关I/O指令将在第8.1.2节——I/O指令——中介绍,在此从略。
    5.2.2 标志位操作指令
    标志位操作指令是一组对标志位置位、复位、保存和恢复等操作的指令。
    1、进位CF操作指令
    、清进位指令CLC(Clear Carry Flag):CF←0
    、置进位指令STC(Set Carry Flag):CF←1
    、进位取反指令CMC(Complement Carry Flag):CF←not CF
    2、方向位DF操作指令
    、清方向位指令CLD(Clear Direction Flag):DF←0
    、置方向位指令STD(Set Direction Flag):DF←1
    3、中断允许位IF操作指令
    、清中断允许位指令CLI(Clear Interrupt Flag):IF←0
    其功能是不允许可屏蔽的外部中断来中断其后程序段的执行。
    、置中断允许位指令STI(Set Interrupt Flag):IF←1
    其功能是恢复可屏蔽的外部中断的中断响应功能,通常是与CLI成对使用的。
    4、取标志位操作指令
    、LAHF(Load AH from Flags):AH←Flags的低8位
    、SAHF(Store AH in Flags):Flags的低8位←AH
    5、标志位堆栈操作指令
    、PUSHF/PUSHFD(Push Flags onto Stack):把16位/32位标志寄存器进栈;
    、POPF/POPFD(Pop Flags off Stack):把16位/32位标志寄存器出栈;
    6、逻辑操作指令的小结
    下面是学习标志位指令的控件,浏览者可以运用此类指令,观看标志寄存器的相应变化。
    

 

相关新闻

C文件概述
万有引力

您可能对这些感兴趣  

干货分享|10本最受国外孩子喜爱的英文词典——上
从孩子的表现看父母的缺点!请家长对号入座,看看你是哪一类?
20条制作PPT的视觉原则
培训简史:培训者必知的历史轨迹
广田丰管理培训生人才培养调查报告
第4讲 作为上司的职业经理
第3讲 作为同事的职业经理
第2讲 作为下属的职业经理
第1讲 培养经理人的管理素养
酒店前台新员工上岗培训计划

题目筛选器
日期:
类型:
状态:
得分: <=
分类:
作者:
职业:
关键字:
搜索

 
 
 
  焦点事件
 
  知识体系
 
  职业列表
 
 
  最热文章
 
 
  最多引用文章
 
 
  最新文章
 
 
 
 
网站介绍 | 广告服务 | 招聘信息 | 保护隐私权 | 免责条款 | 法律顾问 | 意见反馈
版权所有 不得转载
沪ICP备 10203777 号 联系电话:021-54428255
  帮助提示    
《我的太学》是一种全新的应用,您在操作中遇到疑问或者问题,请拨打电话13564659895,15921448526。
《我的太学》