关于微机CPU的指令系统指令系统数据传送指令关于微机CPU的指令系统指令系统数据传送指令关于微机CPU的指令系统---指令系统(数据传送指令)2011-05-2817:01通常把指令系统分为以下几类:数据传送指令位操作指令比较运算指令循环指令转移指令条件设置字节指令字符串操作指令ASCII-BCD运算调整指令处理器指令一、数据传送指令1、mov对MOV指令有以下几条具体规定:1)、两个操作数的数据类型要相同,要同为8位、16位或32位;如:MOVBL,AX等是不正确的;2)、两个操作数不能同时为段寄存器,如:MOVES,DS等;3)、代码段寄存器CS不能为目的操作数,但可作为源操作数,如:指令MOVCS,AX等不正确,但指令MOVAX,CS等是正确的;4)、立即数不能直接传给段寄存器,如:MOVDS,100H等;5)、立即数不能作为目的操作数,如:MOV100H,AX等;6)、指令指针IP,不能作为MOV指令的操作数;7)、两个操作数不能同时为存储单元,如:MOVVARA,VARB等,其中VARA和VARB是同数据类型的内存变量。以上的有些规定对其它指令同样有效。其实对于情况1)的规定,386之后的机型增加了一个新的指令来解决,这个指令就是传送-填充指令movsx/movzx(moveandfillinstruction)2、movsx/movzx指令的主要功能和限制与MOV指令类似,不同之处是:在传送时,对目的操作数的高位进行填充。根据其填充方式,又分为:符号填充和零填充。指令的主要功能和限制与MOV指令类似,不同之处是:在传送时,对目的操作数的高位进行填充。根据其填充方式,又分为:符号填充(movsx)和零填充(movzx。比较下列指令MOVAX,87HMOVSXAX,87HMOVZXAX,87H可以发现:movax,87h和movzxax,87h是一样的。3、交换指令XCHG(ExchangeInstruction)交换指令XCHG是两个寄存器,寄存器和内存变量之间内容的交换指令,两个操作数的数据类型要相同。该指令的功能和MOV指令不同,后者是一个操作数的内容被修改,而前者是两个操作数都会发生改变。寄存器不能是段寄存器,两个操作数也不能同时为内存变量。4、取有效地址指令LEA(LoadEffectiveAddress)指令LEA是把一个内存变量的有效地址送给指定的寄存器。其指令格式如下:LEAReg,Mem该指令通常用来对指针或变址寄存器BX、DI或SI等置初值之用。指令"LEABXBUFFER"和"MOVBX,OFFSETBUFFER"的执行效果是一样的吗?指令"LEABX,[BX+200]"和"MOVBX,OFFSET[BX+200]"二者都正确吗?第一个问题的执行效果是一样的。但是offset[bx+200]是不正确的。说明offset只能与简单的符号地址相连5、取段寄存器指令(LoadSegmentInstruction)该组指令的功能是把内存单元的一个"低字"传送给指令中指定的16位寄存器,把随后的一个"高字"传给相应的段寄存器(DS、ES、FS、GS和SS)。其指令格式如下:LDS/LES/LFS/LGS/LSSReg,Mem指令LDS(LoadDataSegmentRegister)和LES(LoadExtraSegmentReg
关于微机cpu的指令系统+++指令系统+数据传送指令 来自淘豆网m.daumloan.com转载请标明出处.