全球旧事资料 分类
80x86汇编指令详解(上)2008年01月15日星期二150580x86指令系统,指令按功能可分为以下七个部分。1数据传送指令。2算术运算指令。3逻辑运算指令。4串操作指令。5控制转移指令。6处理器控制指令。7保护方式指令。331数据传送指令数据传送指令包括:通用数据传送指令、地址传送指令、标志寄存器传送指令、符号扩展指令、扩展传送指令等。一、通用数据传送指令1传送指令传送指令是使用最频繁的指令,格式:MOVDESTSRC功能:把一个字节,字或双字从源操作数SRC传送至目的操作数DEST。传送指令允许的数据流方向见图311。
图311
传送指令数据流
由上图可知,数据允许流动方向为:通用寄存器之间、通用寄存器和存储器之间、通用寄存器和段寄存器之间、段寄存器和存储器之间,另外还允许立即数传送至通用寄存器或存储器。但在上述传送过程中,段寄存器CS的值不能用传送指令改变。312CPU内部寄存器之间的数据传送。例312MOVAL,DH;AL←DH8位MOVDS,AX;DS←AX16位MOVEAX,ESI;EAX←ESI32位313CPU内部寄存器和存储器之间的数据传送。例313MOVBXAX;间接寻址16位MOVEAX,EBXESI;基址变址寻址32位MOVAL,BLOCK;BLOCK为变量名,直接寻址8位
f例314立即数送通用寄存器、存储器。MOVEAX,12345678H;EAX←12345678H32位MOVBX,12H;间接寻址8位MOVAX,1234H;AX←1234H16位使用该指令应注意以下问题:源和目的操作数不允许同时为存储器操作数;源和目的操作数数据类型必须一致;源和目的操作数不允许同时为段寄存器;目的操作数不允许为CS和立即数;当源操作数为立即数时,目的操作数不允许为段寄存器;传送操作不影响标志位。2扩展传送指令格式:MOVSXDEST,SRCMOVZXDEST,SRC功能:将源操作数由8位扩展到16位送目的操作数,或由16位扩展到32位送目的操作数。其中MOVSX是按有符号数扩展,MOVZX是按无符号数扩展。无符号数或正数高位扩展为0,负数高位扩展为全“1”。315例315带符号数扩展MOVBL,80H;128MOVSXAX,BL;将80H扩展为FF80H后送AX中。例316无符号数扩展MOVBL,80H;128MOVZXAX,BL;将80H扩展为0080H后送AX中。使用该指令应注意以下问题:目的操作数应为16位或32位通用寄存器;源操作数长度须小于目的操作数长度,为8位或16位通用寄存器或存储器操作数;扩展传送操作不影响标志位。3交换指令1格式:XCHGOPR1,OPR2功能:交换操作数OPR1和OPR2的值,操作数数据类型为字节、字或双字。允许r
好听全球资料 返回顶部