http://www.cnblogs.com/lilongjiang/archive/2011/06/14/2080551.html
七种寻址方式(直接寻址方式)
2011-06-14 13:49 by 李龙江, 21651 阅读, 0 评论, 收藏, 编辑
指令所要的操作数存放在内存中,在指令中直接给出该操作数的有效地址,这种寻址方式为直接寻址方式。
在通常情况下,操作数存放在数据段中,所以,其物理地址将由数据段寄存器DS和指令中给出的有效地址直接形成,但如果使用段超越前缀,那么,操作数可存放在其它段。
例:假设有指令:MOV BX, ,在执行时,(DS)=2000H,内存单元21234H的值为5213H。问该指令执行后,BX的值是什么?
解:根据直接寻址方式的寻址规则,把该指令的具体执行过程用下图来表示。
从图中,可看出执行该指令要分三部分:
 
由于1234H是一个直接地址,它紧跟在指令的操作码之后,随取指令而被读出;
访问数据段的段寄存器是DS,所以,用DS的值和偏移量1234H相加,得存储单元的物理地址:21234H;
取单元21234H的值5213H,并按“高高低低”的原则存入寄存器BX中。
所以,在执行该指令后,BX的值就为5213H。
 
由于数据段的段寄存器默认为DS,如果要指定访问其它段内的数据,可在指令中用段前缀的方式显式地书写出来。
下面指令的目标操作数就是带有段前缀的直接寻址方式。
MOV ES:, AX
直接寻址方式常用于处理内存单元的数据,其操作数是内存变量的值,该寻址方式可在64K字节的段内进行寻址。
注意:立即寻址方式和直接寻址方式的书写格式的不同,直接寻址的地址要写在括号“”内。在程序中,直接地址通常用内存变量名来表示,如:MOV BX, VARW,其中,VARW是内存字变量。
试比较下列指令中源操作数的寻址方式(VARW是内存字变量):
  MOV AX, 1234H MOV AX,  ;前者是立即寻址,后者是直接寻址 
  MOV AX, VARW MOV AX,  ;两者是等效的,均为直接寻址
---------------------------------------------------------------------------------------------------------------------------------
http://www.cnblogs.com/lilongjiang/archive/2011/06/14/2080569.html
七种寻址方式(寄存器间接寻址方式)
2011-06-14 13:57 by 李龙江, 7851 阅读, 1 评论, 收藏, 编辑
操作数在存储器中,操作数的有效地址用SI、DI、BX和BP等四个寄存器之一来指定,称这种寻址方式为寄存器间接寻址方式。该寻址方式物理地址的计算方法如下:
寄存器间接寻址方式读取存储单元的原理如图所示。
在不使用段超越前缀的情况下,有下列规定:
若有效地址用SI、DI和BX等之一来指定,则其缺省的段寄存器为DS;
若有效地址用BP来指定,则其缺省的段寄存器为SS(即:堆栈段)。
例:假设有指令:MOV BX,,在执行时,(DS)=1000H,(DI)=2345H,存储单元12345H的内容是4354H。问执行指令后,BX的值是什么?
解:根据寄存器间接寻址方式的规则,在执行本例指令时,寄存器DI的值不是操作数,而是操作数的地址。该操作数的物理地址应由DS和DI的值形成,即: 
PA=(DS)*16+DI=1000H*16+2345H=12345H。
所以,该指令的执行效果是:把从物理地址为12345H开始的一个字的值传送给BX。
其执行过程如图所示。
----------------------------------------------------------------------------------------------------------------------------------
http://www.cnblogs.com/lilongjiang/archive/2011/06/14/2080574.html
七种寻址方式(寄存器相对寻址方式)
2011-06-14 14:01 by 李龙江, 6500 阅读, 0 评论, 收藏, 编辑
操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)或变址寄存器(SI、D
I)的内容和指令中的8位/16位偏移量之和。其有效地址的计算公式如公式所示。
在不使用段超越前缀的情况下,有下列规定:
 
    若有效地址用SI、DI和BX等之一来指定,则其缺省的段寄存器为DS;
 
    若有效地址用BP来指定,则其缺省的段寄存器为SS。
 
指令中给出的8位/16位偏移量用补码表示。在计算有效地址时,如果偏移量是8位,则进行符号扩展成16位。当所得的有效地址超过0FFFFH,则取其64K的模。
例:假设指令:MOV BX, ,在执行它时,(DS)=1000H,(SI)=2345H,内存单元12445H的内容为2715H,问该指令执行后,BX的值是什么?
解:根据寄存器相对寻址方式的规则,在执行本例指令时,源操作数的有效地址EA为:
 
EA=(SI)+100H=2345H+100H=2445H
 
该操作数的物理地址应由DS和EA的值形成,即:
 
PA=(DS)*16+EA=1000H*16+2445H=12445H。
所以,该指令的执行效果是:把从物理地址为12445H开始的一个字的值传送给BX。
其执行过程如图所示。
--------------------------------------------------------------------------------------------------------------
http://www.cnblogs.com/lilongjiang/archive/2011/06/14/2080576.html
七种寻址方式(基址加变址寻址方式)
2011-06-14 14:03 by 李龙江, 6343 阅读, 0 评论, 收藏, 编辑
操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)和一个变址寄存器(SI、DI)的内容之和。其有效地址的计算公式如公式所示。
在不使用段超越前缀的情况下,规定:如果有效地址中含有BP,则缺省的段寄存器为SS;否则,缺省的段寄存器为DS。
例:假设指令:MOV BX, ,在执行时,(DS)=1000H,(BX)=2100H,(SI)=0011H,内存单元12111H的内容为1234H。问该指令执行后,BX的值是什么?
解:根据基址加变址寻址方式的规则,在执行本例指令时,源操作数的有效地址EA为:
EA=(BX)+(SI)=2100H+0011H=2111H
该操作数的物理地址应由DS和EA的值形成,即:
PA=(DS)*16+EA=1000H*16+2111H=12111H
所以,该指令的执行效果是:把从物理地址为12111H开始的一个字的值传送给BX。
其执行过程如图所示。
-----------------------------------------------------------------------------------------------------------------------------------
http://www.cnblogs.com/lilongjiang/archive/2011/06/14/2080576.html
七种寻址方式(基址加变址寻址方式)
2011-06-14 14:03 by 李龙江, 6343 阅读, 0 评论, 收藏, 编辑
操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)和一个变址寄存器(SI、DI)的内容之和。其有效地址的计算公式如公式所示。
在不使用段超越前缀的情况下,规定:如果有效地址中含有BP,则缺省的段寄存器为SS;否则,缺省的段寄存器为DS。
例:假设指令:MOV BX, ,在执行时,(DS)=1000H,(BX)=2100H,(SI)=0011H,内存单元12111H的内容为1234H。问该指令执行后,BX的值是什么?
解:根据基址加变址寻址方式的规则,在执行本例指令时,源操作数的有效地址EA为:
EA=(BX)+(SI)=2100H+0011H=2111H
该操作数的物理地址应由DS和EA的值形成,即:
PA=(DS)*16+EA=1000H*16+2111H=12111H
所以,该指令的执行效果是:把从物理地址为12111H开始的一个字的值传送给BX。
其执行过程如图所示。
-------------------------------------------------------------------------------------------------------------------
http://www.cnblogs.com/lilongjiang/archive/2011/06/14/2080581.html
七种寻址方式(相对基址加变址寻址方式)
2011-06-14 14:07 by 李龙江, 5701 阅读, 0 评论, 收藏, 编辑
操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)的值、一个变址寄存器(SI、DI)的值和指令中的8位/16位偏移量之和。其有效地址的计算公式如公式所示。 
在不使用段超越前缀的情况下,规定:如果有效地址中含有BP,则其缺省的段寄存器为SS;否则,其缺省的段寄存器为DS。
指令中给出的8位/16位偏移量用补码表示。在计算有效地址时,如果偏移量是8位,则进行符号扩展成16位。当所得的有效地址超过0FFFFH,则取其64K的模。
例:假设指令:MOV AX, ,在执行时,(DS)=1000H,(BX)=2100H,(SI)=0010H,内存单元12310H的内容为1234H。问该指令执行后,AX的值是什么?
解:根据相对基址加变址寻址方式的规则,在执行本例指令时,源操作数的有效地址EA为:
EA=(BX)+(SI)+200H=2100H+0010H+200H=2310H
该操作数的物理地址应由DS和EA的值形成,即:
PA=(DS)*16+EA=1000H*16+2310H=12310H
所以,该指令的执行效果是:把从物理地址为12310H开始的一个字的值传送给AX。其执行过程如图所示。
从相对基址加变址这种寻址方式来看,由于它的可变因素较多,看起来就显得复杂些,但正因为其可变因素多,它的灵活性也就很高。比如:
  
用D1
来访问一维数组D1的第i个元素,它的寻址有一个自由度,用D2来访问二维数组D2的第i行、第j列的元素,其寻址有二个自由度。多一个可变的量,其寻址方式的灵活度也就相应提高了。
相对基址加变址寻址方式有多种等价的书写方式,下面的书写格式都是正确的,并且其寻址含义也是一致的。
MOV AX,    MOV AX, 1000H
MOV AX, 1000H    MOV AX, 1000H
但书写格式BX 和SI等是错误的,即所用寄存器不能在“”之外,该限制对寄存器相对寻址方式的书写也同样起作用。
相对基址加变址寻址方式是以上7种寻址方式中最复杂的一种寻址方式,它可变形为其它类型的存储器寻址方式。下表列举出该寻址方式与其它寻址方式之间的变形关系。
-------------------------------------------------------------------------------------------------------------------------------------
http://www.cnblogs.com/lilongjiang/archive/2011/06/14/2080588.html
七种寻址方式(32位地址的寻址方式)
2011-06-14 14:10 by 李龙江, 2609 阅读, 0 评论, 收藏, 编辑
在32位微机系统中,除了支持前面的七种寻址方式外,又提供了一种更灵活、方便,但也更复杂的内存寻址方式,从而使内存地址的寻址范围得到了进一步扩大。
在用16位寄存器来访问存储单元时,只能使用基地址寄存器(BX和BP)和变址寄存器(SI和DI)来作为地址偏移量的一部分,但在用32位寄存器寻址时,不存在上述限制,所有32位寄存器(EAX、EBX、ECX、EDX、ESI、EDI、EBP和ESP)都可以是地址偏移量的一个组成部分。
当用32位地址偏移量进行寻址时,内存地址的偏移量可分为三部分:一个32位基址寄存器,一个可乘1、2、4或8的32位变址寄存器,一个8位/32位的偏移常量,并且这三部分还可进行任意组合,省去其中之一或之二。
32位基址寄存器是:EAX、EBX、ECX、EDX、ESI、EDI、EBP和ESP;
32位变址寄存器是:EAX、EBX、ECX、EDX、ESI、EDI和EBP(除ESP之外)。
下面列举几个32位地址寻址指令:
MOV AX, 
 MOV EAX,  
MOV EBX, 
 MOV EBX,  
MOV EDX, 
 MOV EBX,  
MOV EBX, 
 MOV AX,  
用32位地址偏移量进行寻址的有效地址计算公式归纳如公式所示。
由于32位寻址方式能使用所有的通用寄存器,所以,和该有效地址相组合的段寄存器也就有新的规定。具体规定如下: 
1、地址中寄存器的书写顺序决定该寄存器是基址寄存器,还是变址寄存器;
如:中的EBX是基址寄存器,EBP是变址寄存器,而中的EBP是基址寄存器,EBX是变址寄存器;
2、默认段寄存器的选用取决于基址寄存器;
3、基址寄存器是EBP或ESP时,默认的段寄存器是SS,否则,默认的段寄存器是DS;
4、在指令中,如果使用段前缀的方式,那么,显式段寄存器优先。
下面列举几个32位地址寻址指令及其内存操作数的段寄存器。
指令的举例	访问内存单元所用的段寄存器
MOV  AX, 	;默认段寄存器DS
MOV  EAX, 	;默认段寄存器DS
MOV  EBX, 	;默认段寄存器SS
MOV  EBX, 	;默认段寄存器DS
MOV  EDX, ES:	;显式段寄存器ES
MOV  , AX 	;默认段寄存器SS
MOV  EBX, GS:	;显式段寄存器GS
MOV  AX,  	;默认段寄存器SS
----------------------------------------------------------------------------------------------------------------------
http://www.cnblogs.com/lilongjiang/archive/2011/06/15/2081124.html
寄存器表
2011-06-15 07:55 by 李龙江, 1167 阅读, 2 评论, 收藏, 编辑
http://www.cnblogs.com/del/archive/2008/01/31/1059880.html转自万一的网志
类型	名称	二进制码	寄存器说明
多功能寄存器	AL	0	累加寄存器低八位
AH	100	累加寄存器低八位
AX	0	16 位累加寄存器
EAX	0	32 位累加寄存器
BL	11	基址寄存器低八位
BH	111	基址寄存器低八位
BX	11	16 位基址寄存器
EBX	11	32 位基址寄存器
CL	1	计数寄存器低八位
CH	101	计数寄存器低八位
CX	1	16 位计数寄存器
ECX	1	32 位计数寄存器
DL	10	数据寄存器低八位
DH	110	数据寄存器低八位
DX	10	16 位数据寄存器
EDX	10	32 位数据寄存器
指针寄存器	SP	100	16 位堆栈指针寄存器
ESP	100	32 位堆栈指针寄存器
BP	101	16位基址指针寄存器
EBP	101	32 位基址指针寄存器
变址寄存器	DI	111	16 位目标变址寄存器
EDI	111	32位目标变址寄存器
SI	110	16 位源变址寄存器
ESI	110	32位源变址寄存器
专用寄存器	IP	*	16 位指令指针寄存器
EIP	*	32 位指令指针寄存器
FLAGS	*	16 位标志寄存器
EFLAGS	*	32位标志寄存器
段寄存器	CS	1	代码段寄存器
DS	11	数据段寄存器
ES	0	附加段寄存器
SS	10	堆栈段寄存器
FS	100	标志段寄存器
GS	101	全局段寄存器
控制寄存器	CR0	0	控制寄存器零
CR1*	1	控制寄存器一
CR2	10	控制寄存器二
CR3	11	控制寄存器三
CR4	100	控制寄存器四
CR5*	101	控制寄存器五
CR6*	110	控制寄存器六
CR7*	111	控制寄存器七
调试寄存器	DR0	0	调试寄存器零
DR1	1	调试寄存器一
DR2	10	调试寄存器二
DR3	11	调试寄存器三
DR4*	100	调试寄存器四
DR5*	101	调试寄存器五
DR6	110	调试寄存器六
DR7	111	调试寄存器七
任务寄存器	TR0	0	任务寄存器零
TR1	1	任务寄存器一
TR2	10	任务寄存器二
TR3	11	任务寄存器三
TR4	100	任务寄存器四
TR5	101	任务寄存器五
TR6	110	任务寄存器六
TR7	111	任务寄存器七
浮点寄存器	ST0	0	浮点寄存器零
ST1	1	浮点寄存器一
ST2	10	浮点寄存器二
ST3	11	浮点寄存器三
ST4	100	浮点寄存器四
ST5	101	浮点寄存器五
ST6	110	浮点寄存器六
ST7	111	浮点寄存器七
多媒体寄存器	MM0	0	媒体寄存器零
MM1	1	媒体寄存器一
MM2	10	媒体寄存器二
MM3	11	媒体寄存器三
MM4	100	媒体寄存器四
MM5	101	媒体寄存器五
MM6	110	媒体寄存器六
MM7	111	媒体寄存器七
单指令流、多数据流寄存器	XMM0	0	单指令流、多数据流寄存器零
XMM1	1	单指令流、多数据流寄存器一
XMM2	10	单指令流、多数据流寄存器二
XMM3	11	单指令流、多数据流寄存器三
XMM4	100	单指令流、多数据流寄存器四
XMM5	101	单指令流、多数据流寄存器五
XMM6	110	单指令流、多数据流寄存器六
XMM7	111	单指令流、多数据流寄存器七
注: 英文名称有星号"*"的表示作为保留域, 实际并没有使用, 二进制码有星号"*"表示无需二进制数表示
---------------------------------------------------------------------------------------------------------------------------------------
http://www.cnblogs.com/lilongjiang/archive/2011/06/15/2081128.html
汇编指令速查
2011-06-15 08:01 by 李龙江, 544 阅读, 0 评论, 收藏, 编辑
http://www.cnblogs.com/del/archive/2010/03/16/1687665.html转自万一网志
指令	功能
AAA	调整加
AAD	调整除
AAM	调整乘
AAS	调整减
ADC	进位加
ADD	加
AND	与
ARPL	调整优先级
BOUND	检查数组
BSF	位右扫描
BSR	位左扫描
BSWAP	交换字节
BT	位测试
BTC	位测试求反
BTR	位测试清零
BTS	位测试置一
CALL	过程调用
CBW	转换字节
CDQ	转换双字
CLC	进位清零
CLD	方向清零
CLI	中断清零
CLTS	任务清除
CMC	进位求反
CMOVA	高于传送
CMOVB	低于传送
CMOVE	相等传送
CMOVG	大于传送
CMOVL	小于传送
CMOVNA	不高于传送
CMOVNB	不低于传送
CMOVNE	不等传送
CMOVNG	不大于传送
CMOVNL	不小于传送
CMOVNO	不溢出传送
CMOVNP	非奇偶传送
CMOVNS	非负传送
CMOVO	溢出传送
CMOVP	奇偶传送
CMOVS	负号传送
CMP	比较
CMPSB	比较字节串
CMPSD	比较双字串
CMPSW	比较字串
CMPXCHG	比较交换
CMPXCHG486	比较交换486
CMPXCHG8B	比较交换8字节
CPUID	CPU标识
CWD	转换字
CWDE	扩展字
DAA	调整加十
DAS	调整减十
DEC	减一
DIV	除
ENTER	建立堆栈帧
HLT	停
IDIV	符号整除
IMUL	符号乘法
IN	端口输入
INC	加一
INSB	端口输入字节串
INSD	端口输入双字串
INSW	端口输入字串
JA	高于跳转
JB	低于跳转
JBE	不高于跳转
JCXZ	计数一六零跳转
JE	相等跳转
JECXZ	计数三二零跳转
JG	大于跳转
JL	小于跳转
JMP	跳转
JMPE	跳转扩展
JNB	不低于跳转
JNE	不等跳转
JNG	不大于跳转
JNL	不小于跳转
JNO	不溢出跳转
JNP	非奇偶跳转
JNS	非负跳转
JO	溢出跳转
JP	奇偶跳转
JS	负号跳转
LAHF	加载标志低八
LAR	加载访问权限
LDS	加载数据段
LEA	加载有效地址
LEAVE	清除过程堆栈
LES	加载附加段
LFS	加载标志段
LGDT	加载全局描述符
LGS	加载全局段
LIDT	加载中断描述符
LMSW	加载状态字
LOADALL	加载所有
LOADALL286	加载所有286
LOCK	锁
LODSB	加载源变址字节串
LODSD	加载源变址双字串
LODSW	加载源变址字串
LOOP	计数循环
LOOPE	相等循环
LOOPNE	不等循环
LOOPNZ	非零循环
LOOPZ	为零循环
LSL	加载段界限
LSS	加载堆栈段
LTR	加载任务
MONITOR	监视
MOV	传送
MOVSB	传送字节串
MOVSD	传送双字串
MOVSW	传送字串
MOVSX	符号传送
MOVZX	零传送
MUL	乘
MWAIT	
NEG	求补
NOP	空
NOT	非
OR	或
OUT	端口输出
OUTSB	端口输出字节串
OUTSD	端口输出双字串
OUTSW	端口输出字串
POP	出栈
POPA	全部出栈
POPF	标志出栈
PUSH	压栈
PUSHA	全部压栈
PUSHF	标志压栈
RCL	进位循环左移
RCR	进位循环右移
RDMSR	读专用模式
RDPMC	读执行监视计数
RDSHR	
RDTSC	读时间戳计数
REP	重复
REPE	相等重复
REPNE	不等重复
RET	过程返回
RETF	远过程返回
RETN	近过程返回
ROL	循环左移
ROR	循环右移
RSM	恢复系统管理
SAHF	恢复标志低八
SAL	算术左移
SALC	
SAR	算术右移
SBB	借位减
SCASB	扫描字节串
SCASD	扫描双字串
SCASW	扫描字串
SETA	高于置位
SETB	低于置位
SETE	相等置位
SETG	大于置位
SETL	小于置位
SETNA	不高于置位
SETNB	不低于置位
SETNE	不等置位
SETNG	不大于置位
SETNL	不小于置位
SETNO	不溢出置位
SETNP	非奇偶置位
SETNS	非负置位
SETO	溢出置位
SETP	奇偶置位
SETS	负号置位
SGDT	保存全局描述符
SHL	逻辑左移
SHLD	双精度左移
SHR	逻辑右移
SHRD	双精度右移
SIDT	保存中断描述符
SLDT	保存局部描述符
SMI	
SMINT	
SMINTOLD	
SMSW	保存状态字
STC	进位设置
STD	方向设置
STI	中断设置
STOSB	保存字节串
STOSD	保存双字串
STOSW	保存字串
STR	保存任务
SUB	减
SYSCALL	系统调用
SYSENTER	系统进入
SYSEXIT	系统退出
SYSRET	系统返回
TEST	数测试
UD0	未定义指令0
UD1	未定义指令1
UD2	未定义指令2
UMOV	
VERW	校验写
WAIT	等
WBINVD	回写无效高速缓存
WRMSR	写专用模式
WRSHR	
XADD	交换加
XBTS	
XCHG	交换
XLAT	换码
XOR	异或
XSTORE	
指令	功能
EMMS	媒体空MMX状态
F2XM1	浮点栈顶绝对值
FADD	浮点加
FADDP	浮点加出栈
FBLD	浮点加载十数
FBSTP	浮点保存十数出栈
FCHS	浮点正负求反
FCLEX	浮点检查错误清除
FCMOVB	浮点低于传送
FCMOVBE	浮点不高于传送
FCMOVE	浮点相等传送
FCMOVNB	浮点不低于传送
FCMOVNBE	浮点高于传送
FCMOVNE	浮点不等传送
FCMOVNU	浮点有序传送
FCMOVU	浮点无序传送
FCOM	浮点比较
FCOMI	浮点比较加载标志
FCOMIP	浮点比较加载标志出栈
FCOMP	浮点比较出栈
FCOMPP	浮点比较出栈二
FCOS	浮点余弦
FDECSTP	浮点栈针减一
FDISI	浮点检查禁止中断
FDIV	浮点除
FDIVP	浮点除出栈
FDIVR	浮点反除
FDIVRP	浮点反除出栈
FENI	浮点检查禁止中断二
FFREE	浮点释放
FFREEP	浮点释放出栈
FIADD	浮点加整数
FICOM	浮点比较整数
FICOMP	浮点比较整数出栈
FIDIV	浮点除整数
FIDIVR	浮点反除
FILD	浮点加载整数
FIMUL	浮点乘整数
FINCSTP	浮点栈针加一
FINIT	浮点检查初始化
FIST	浮点保存整数
FISTP	浮点保存整数出栈
FISTTP	 
FISUB	浮点减整数
FISUBR	浮点反减整数
FLD	浮点加载数
FLD1	浮点加载一
FLDCW	浮点加载控制器
FLDENV	浮点加载环境
FLDL2E	浮点加载L2E
FLDL2T	浮点加载L2T
FLDLG2	浮点加载LG2
FLDLN2	浮点加载LN2
FLDPI	浮点加载PI
FLDZ	浮点加载零
FMUL	浮点乘
FMULP	浮点乘出栈
FNCLEX	浮点不检查错误清除
FNDISI	浮点不检查禁止中断
FNENI	浮点不检查禁止中断二
FNINIT	浮点不检查初始化
FNOP	浮点空
FNSAVE	浮点不检查保存状态
FNSTCW	浮点不检查保存控制器
FNSTENV	浮点不检查保存环境
FNSTSW	浮点不检查保存状态器
FPATAN	浮点部分反正切
FPREM	浮点部分余数
FPREM1	浮点部分余数二
FPTAN	浮点部分正切
FRNDINT	浮点舍入求整
FRSTOR	浮点恢复状态
FSAVE	浮点检查保存状态
FSCALE	浮点比例运算
FSETPM	浮点设置保护
FSIN	浮点正弦
FSINCOS	浮点正余弦
FSQRT	浮点平方根
FST	浮点保存
FSTCW	浮点检查保存控制器
FSTENV	浮点检查保存环境
FSTP	浮点保存出栈
FSTSW	浮点检查保存状态器
FSUB	浮点减
FSUBP	浮点减出栈
FSUBR	浮点反减
FSUBRP	浮点反减出栈
FTST	浮点比零
FUCOM	浮点无序比较
FUCOMI	浮点反比加载标志
FUCOMIP	浮点反比加载标志出栈
FUCOMP	浮点无序比较出栈
FUCOMPP	浮点无序比较出栈二
FWAIT	浮点等
FXAM	浮点检查
FXCH	浮点交换
FXTRACT	浮点分解
FYL2X	浮点求L2X
FYL2XP1	浮点求L2XP1
MOVED	媒体双字传送
MOVEQ	媒体四字传送
PACKSSDW	媒体符号双字压缩
PACKSSWB	媒体符号字压缩
PACKUSWB	媒体无符号字压缩
PADDB	媒体截断字节加
PADDD	媒体截断双字加
PADDSB	媒体符号饱和字节加
PADDSIW	 
PADDSW	媒体符号饱和字加
PADDUSB	媒体无符号饱和字节加
PADDUSW	媒体无符号饱和字加
PADDW	媒体截断字加
PAND	媒体与
PANDN	媒体与非
PAVEB	 
PCMPEQB	媒体字节比等
PCMPEQD	媒体双字比等
PCMPEQW	媒体字比等
PCMPGTB	媒体字节比大
PCMPGTD	媒体双字比大
PCMPGTW	媒体字比大
PDISTIB	 
PMACHRIW	 
PMADDWD	 
PMAGW	 
PMULHRIW	 
PMULHRWC	 
PMULHW	 
PMVGEZB	 
PMVLZB	 
PMVNZB	 
PMVZB	 
POR	媒体或
PSLLD	媒体双字左移
PSLLQ	媒体四字左移
PSLLW	媒体字左移
PSRAD	媒体双字算术右移
PSRAW	媒体字算术右移
PSRLD	媒体双字右移
PSRLQ	媒体四字右移
PSRLW	媒体字右移
PSUBB	媒体截断字节减
PSUBSB	媒体符号饱和字节减
PSUBSIW	 
PSUBSW	媒体符号饱和字减
PSUBUSB	媒体无符号饱和字节减
PSUBUSW	媒体无符号饱和字减
PSUBW	媒体截断字减
PUNPCKHBW	媒体字节高位解压
PUNPCKHDQ	媒体双字高位解压
PUNPCKHWD	媒体字高位解压
PUNPCKLBW	媒体字节低位解压
PUNPCKLDQ	媒体双字低位解压
PUNPCKLWD	媒体字低位解压
 Last edited by zzz19760225 on 2016-12-12 at 15:24 ] 
Seven Addressing Modes (Direct Addressing Mode)
2011-06-14 13:49 by Li Longjiang, 21651 views, 0 comments, favorites, edit
The operand required by the instruction is stored in memory, and the effective address of the operand is directly given in the instruction. This addressing mode is called the direct addressing mode.
Under normal circumstances, the operand is stored in the data segment, so its physical address will be directly formed by the data segment register DS and the effective address given in the instruction. But if a segment override prefix is used, the operand can be stored in other segments.
Example: Suppose there is an instruction: MOV BX, . When executed, (DS) = 2000H, and the value of the memory unit 21234H is 5213H. What is the value of BX after this instruction is executed?
Solution: According to the addressing rules of the direct addressing mode, the specific execution process of this instruction is represented by the following figure.
From the figure, it can be seen that executing this instruction is divided into three parts:
Since 1234H is a direct address, it follows immediately after the operation code of the instruction and is read along with fetching the instruction;
The segment register for accessing the data segment is DS, so the physical address of the storage unit is obtained by adding the value of DS and the offset 1234H: 21234H;
The value 5213H of the unit 21234H is taken and stored in the register BX according to the principle of "high high and low low".
Therefore, after executing this instruction, the value of BX is 5213H.
Since the segment register of the data segment is defaulted to DS, if you want to specify to access data in other segments, you can explicitly write it in the instruction in the form of a segment prefix.
The target operand of the following instruction is a direct addressing mode with a segment prefix.
MOV ES:, AX
The direct addressing mode is often used to process data in memory units. The operand is the value of the memory variable. This addressing mode can address within a segment of 64K bytes.
Note: The writing formats of the immediate addressing mode and the direct addressing mode are different. The address of the direct addressing should be written in the parentheses "". In the program, the direct address is usually represented by a memory variable name, such as: MOV BX, VARW, where VARW is a memory word variable.
Compare the addressing modes of the source operands in the following instructions (VARW is a memory word variable):
MOV AX, 1234H MOV AX,  ; The former is immediate addressing, the latter is direct addressing 
MOV AX, VARW MOV AX,  ; Both are equivalent, both are direct addressing
---------------------------------------------------------------------------------------------------------------------------------
http://www.cnblogs.com/lilongjiang/archive/2011/06/14/2080569.html
Seven Addressing Modes (Register Indirect Addressing Mode)
2011-06-14 13:57 by Li Longjiang, 7851 views, 1 comment, favorites, edit
The operand is in memory, and the effective address of the operand is specified by one of the four registers SI, DI, BX, and BP. This addressing mode is called the register indirect addressing mode. The calculation method of the physical address in this addressing mode is as follows:
The principle of reading a memory unit in the register indirect addressing mode is shown in the figure.
In the case of not using a segment override prefix, the following regulations apply:
If the effective address is specified by one of SI, DI, and BX, the default segment register is DS;
If the effective address is specified by BP, the default segment register is SS (that is, the stack segment).
Example: Suppose there is an instruction: MOV BX, . When executed, (DS) = 1000H, (DI) = 2345H, and the content of the memory unit 12345H is 4354H. What is the value of BX after executing the instruction?
Solution: According to the rules of the register indirect addressing mode, the value of register DI is not the operand when executing this example instruction, but the address of the operand. The physical address of the operand should be formed by DS and the value of DI, that is: 
PA = (DS) * 16 + DI = 1000H * 16 + 2345H = 12345H.
Therefore, the execution effect of this instruction is: transfer a word value starting from the physical address 12345H to BX.
The execution process is shown in the figure.
----------------------------------------------------------------------------------------------------------------------------------
http://www.cnblogs.com/lilongjiang/archive/2011/06/14/2080574.html
Seven Addressing Modes (Register Relative Addressing Mode)
2011-06-14 14:01 by Li Longjiang, 6500 views, 0 comments, favorites, edit
The operand is in memory, and its effective address is the sum of the content of a base register (BX, BP) or an index register (SI, D
I) and the 8-bit/16-bit offset in the instruction. The calculation formula of its effective address is as shown in the formula.
In the case of not using a segment override prefix, the following regulations apply:
 
    If the effective address is specified by one of SI, DI, and BX, the default segment register is DS;
 
    If the effective address is specified by BP, the default segment register is SS.
 
The 8-bit/16-bit offset given in the instruction is represented by two's complement. When calculating the effective address, if the offset is 8 bits, it is sign-extended to 16 bits. When the obtained effective address exceeds 0FFFFH, take its modulo of 64K.
Example: Suppose the instruction: MOV BX, . When executing it, (DS) = 1000H, (SI) = 2345H, and the content of the memory unit 12445H is 2715H. What is the value of BX after this instruction is executed?
Solution: According to the rules of the register relative addressing mode, when executing this example instruction, the effective address EA of the source operand is:
 
EA = (SI) + 100H = 2345H + 100H = 2445H
 
The physical address of the operand should be formed by DS and EA, that is:
 
PA = (DS) * 16 + EA = 1000H * 16 + 2445H = 12445H.
Therefore, the execution effect of this instruction is: transfer a word value starting from the physical address 12445H to BX.
The execution process is shown in the figure.
--------------------------------------------------------------------------------------------------------------
http://www.cnblogs.com/lilongjiang/archive/2011/06/14/2080576.html
Seven Addressing Modes (Base Plus Index Addressing Mode)
2011-06-14 14:03 by Li Longjiang, 6343 views, 0 comments, favorites, edit
The operand is in memory, and its effective address is the sum of the contents of a base register (BX, BP) and an index register (SI, DI). The calculation formula of its effective address is as shown in the formula.
In the case of not using a segment override prefix, the regulation is: If the effective address contains BP, the default segment register is SS; otherwise, the default segment register is DS.
Example: Suppose the instruction: MOV BX, . When executing, (DS) = 1000H, (BX) = 2100H, (SI) = 0011H, and the content of the memory unit 12111H is 1234H. What is the value of BX after this instruction is executed?
Solution: According to the rules of the base plus index addressing mode, when executing this example instruction, the effective address EA of the source operand is:
EA = (BX) + (SI) = 2100H + 0011H = 2111H
The physical address of the operand should be formed by DS and EA, that is:
PA = (DS) * 16 + EA = 1000H * 16 + 2111H = 12111H
Therefore, the execution effect of this instruction is: transfer a word value starting from the physical address 12111H to BX.
The execution process is shown in the figure.
-----------------------------------------------------------------------------------------------------------------------------------
http://www.cnblogs.com/lilongjiang/archive/2011/06/14/2080576.html
Seven Addressing Modes (Base Plus Index Addressing Mode)
2011-06-14 14:03 by Li Longjiang, 6343 views, 0 comments, favorites, edit
The operand is in memory, and its effective address is the sum of the contents of a base register (BX, BP) and an index register (SI, DI). The calculation formula of its effective address is as shown in the formula.
In the case of not using a segment override prefix, the regulation is: If the effective address contains BP, the default segment register is SS; otherwise, the default segment register is DS.
Example: Suppose the instruction: MOV BX, . When executing, (DS) = 1000H, (BX) = 2100H, (SI) = 0011H, and the content of the memory unit 12111H is 1234H. What is the value of BX after this instruction is executed?
Solution: According to the rules of the base plus index addressing mode, when executing this example instruction, the effective address EA of the source operand is:
EA = (BX) + (SI) = 2100H + 0011H = 2111H
The physical address of the operand should be formed by DS and EA, that is:
PA = (DS) * 16 + EA = 1000H * 16 + 2111H = 12111H
Therefore, the execution effect of this instruction is: transfer a word value starting from the physical address 12111H to BX.
The execution process is shown in the figure.
-------------------------------------------------------------------------------------------------------------------
http://www.cnblogs.com/lilongjiang/archive/2011/06/14/2080581.html
Seven Addressing Modes (Relative Base Plus Index Addressing Mode)
2011-06-14 14:07 by Li Longjiang, 5701 views, 0 comments, favorites, edit
The operand is in memory, and its effective address is the sum of the value of a base register (BX, BP), the value of an index register (SI, DI), and the 8-bit/16-bit offset in the instruction. The calculation formula of its effective address is as shown in the formula. 
In the case of not using a segment override prefix, the regulation is: If the effective address contains BP, the default segment register is SS; otherwise, the default segment register is DS.
The 8-bit/16-bit offset given in the instruction is represented by two's complement. When calculating the effective address, if the offset is 8 bits, it is sign-extended to 16 bits. When the obtained effective address exceeds 0FFFFH, take its modulo of 64K.
Example: Suppose the instruction: MOV AX, . When executing, (DS) = 1000H, (BX) = 2100H, (SI) = 0010H, and the content of the memory unit 12310H is 1234H. What is the value of AX after this instruction is executed?
Solution: According to the rules of the relative base plus index addressing mode, when executing this example instruction, the effective address EA of the source operand is:
EA = (BX) + (SI) + 200H = 2100H + 0010H + 200H = 2310H
The physical address of the operand should be formed by DS and EA, that is:
PA = (DS) * 16 + EA = 1000H * 16 + 2310H = 12310H
Therefore, the execution effect of this instruction is: transfer a word value starting from the physical address 12310H to AX. The execution process is shown in the figure.
From the perspective of the relative base plus index addressing mode, since it has more variable factors, it seems more complicated. But precisely because it has more variable factors, its flexibility is also very high. For example:
  
Use D1
 to access the i-th element of one-dimensional array D1. Its addressing has one degree of freedom. Use D2 to access the element of the i-th row and j-th column of two-dimensional array D2. Its addressing has two degrees of freedom. One more variable quantity increases the flexibility of the addressing mode accordingly.
There are multiple equivalent writing methods for the relative base plus index addressing mode. The following writing formats are all correct, and their addressing meanings are also consistent.
MOV AX,    MOV AX, 1000H
MOV AX, 1000H    MOV AX, 1000H
But writing formats such as BX  and SI are incorrect, that is, the used register cannot be outside "". This restriction also applies to the writing of the register relative addressing mode.
The relative base plus index addressing mode is the most complex addressing mode among the above 7 addressing modes. It can be transformed into other types of memory addressing modes. The following table lists the transformation relationships between this addressing mode and other addressing modes.
-------------------------------------------------------------------------------------------------------------------------------------
http://www.cnblogs.com/lilongjiang/archive/2011/06/14/2080588.html
Seven Addressing Modes (32-bit Address Addressing Mode)
2011-06-14 14:10 by Li Longjiang, 2609 views, 0 comments, favorites, edit
In a 32-bit microcomputer system, in addition to supporting the above seven addressing modes, a more flexible, convenient but also more complex memory addressing mode is provided, thereby further expanding the addressing range of memory addresses.
When using 16-bit registers to access memory units, only the base address registers (BX and BP) and index registers (SI and DI) can be used as part of the address offset. But when using 32-bit registers for addressing, there is no above restriction. All 32-bit registers (EAX, EBX, ECX, EDX, ESI, EDI, EBP, and ESP) can be a component of the address offset.
When addressing with a 32-bit address offset, the offset of the memory address can be divided into three parts: a 32-bit base register, a 32-bit index register that can be multiplied by 1, 2, 4, or 8, and an 8-bit/32-bit offset constant, and these three parts can also be arbitrarily combined, omitting one or two of them.
32-bit base registers are: EAX, EBX, ECX, EDX, ESI, EDI, EBP, and ESP;
32-bit index registers are: EAX, EBX, ECX, EDX, ESI, EDI, and EBP (except ESP).
The following lists several 32-bit address addressing instructions:
MOV AX, 
 MOV EAX,  
MOV EBX, 
 MOV EBX,  
MOV EDX, 
 MOV EBX,  
MOV EBX, 
 MOV AX,  
The calculation formula of the effective address for addressing with a 32-bit address offset is summarized as shown in the formula.
Since the 32-bit addressing mode can use all general-purpose registers, the segment registers combined with the effective address also have new regulations. The specific regulations are as follows: 
1. The writing order of registers in the address determines whether the register is a base register or an index register;
For example: In , EBX is the base register and EBP is the index register, while in , EBP is the base register and EBX is the index register;
2. The selection of the default segment register depends on the base register;
3. When the base register is EBP or ESP, the default segment register is SS; otherwise, the default segment register is DS;
4. In the instruction, if the segment prefix method is used, then the explicit segment register has priority.
The following lists several 32-bit address addressing instructions and the segment registers of their memory operands.
Instruction example	Segment register used to access memory units
MOV AX, 	;Default segment register DS
MOV EAX, 	;Default segment register DS
MOV EBX, 	;Default segment register SS
MOV EBX, 	;Default segment register DS
MOV EDX, ES:	;Explicit segment register ES
MOV , AX 	;Default segment register SS
MOV EBX, GS:	;Explicit segment register GS
MOV AX,  	;Default segment register SS
----------------------------------------------------------------------------------------------------------------------
http://www.cnblogs.com/lilongjiang/archive/2011/06/15/2081124.html
Register Table
2011-06-15 07:55 by Li Longjiang, 1167 views, 2 comments, favorites, edit
http://www.cnblogs.com/del/archive/2008/01/31/1059880.html Transferred from Wanyi's blog
Type	Name	Binary code	Register description
Multi-functional register	AL	0	Low eight bits of accumulator register
AH	100	Low eight bits of accumulator register
AX	0	16-bit accumulator register
EAX	0	32-bit accumulator register
BL	11	Low eight bits of base register
BH	111	Low eight bits of base register
BX	11	16-bit base register
EBX	11	32-bit base register
CL	1	Low eight bits of count register
CH	101	Low eight bits of count register
CX	1	16-bit count register
ECX	1	32-bit count register
DL	10	Low eight bits of data register
DH	110	Low eight bits of data register
DX	10	16-bit data register
EDX	10	32-bit data register
Pointer register	SP	100	16-bit stack pointer register
ESP	100	32-bit stack pointer register
BP	101	16-bit base pointer register
EBP	101	32-bit base pointer register
Index register	DI	111	16-bit destination index register
EDI	111	32-bit destination index register
SI	110	16-bit source index register
ESI	110	32-bit source index register
Special register	IP	*	16-bit instruction pointer register
EIP	*	32-bit instruction pointer register
FLAGS	*	16-bit flag register
EFLAGS	*	32-bit flag register
Segment register	CS	1	Code segment register
DS	11	Data segment register
ES	0	Extra segment register
SS	10	Stack segment register
FS	100	Flag segment register
GS	101	Global segment register
Control register	CR0	0	Control register zero
CR1*	1	Control register one
CR2	10	Control register two
CR3	11	Control register three
CR4	100	Control register four
CR5*	101	Control register five
CR6*	110	Control register six
CR7*	111	Control register seven
Debug register	DR0	0	Debug register zero
DR1	1	Debug register one
DR2	10	Debug register two
DR3	11	Debug register three
DR4*	100	Debug register four
DR5*	101	Debug register five
DR6	110	Debug register six
DR7	111	Debug register seven
Task register	TR0	0	Task register zero
TR1	1	Task register one
TR2	10	Task register two
TR3	11	Task register three
TR4	100	Task register four
TR5	101	Task register five
TR6	110	Task register six
TR7	111	Task register seven
Floating-point register	ST0	0	Floating-point register zero
ST1	1	Floating-point register one
ST2	10	Floating-point register two
ST3	11	Floating-point register three
ST4	100	Floating-point register four
ST5	101	Floating-point register five
ST6	110	Floating-point register six
ST7	111	Floating-point register seven
Multimedia register	MM0	0	Media register zero
MM1	1	Media register one
MM2	10	Media register two
MM3	11	Media register three
MM4	100	Media register four
MM5	101	Media register five
MM6	110	Media register six
MM7	111	Media register seven
Single instruction stream, multiple data stream register	XMM0	0	Single instruction stream, multiple data stream register zero
XMM1	1	Single instruction stream, multiple data stream register one
XMM2	10	Single instruction stream, multiple data stream register two
XMM3	11	Single instruction stream, multiple data stream register three
XMM4	100	Single instruction stream, multiple data stream register four
XMM5	101	Single instruction stream, multiple data stream register five
XMM6	110	Single instruction stream, multiple data stream register six
XMM7	111	Single instruction stream, multiple data stream register seven
Note: The English name with an asterisk "*" means it is a reserved field and is not actually used. The binary code with an asterisk "*" means no binary number needs to be represented
---------------------------------------------------------------------------------------------------------------------------------------
http://www.cnblogs.com/lilongjiang/archive/2011/06/15/2081128.html
Assembly Instruction Quick Reference
2011-06-15 08:01 by Li Longjiang, 544 views, 0 comments, favorites, edit
http://www.cnblogs.com/del/archive/2010/03/16/1687665.html Transferred from Wanyi's blog
Instruction	Function
AAA	Adjust addition
AAD	Adjust division
AAM	Adjust multiplication
AAS	Adjust subtraction
ADC	Carry addition
ADD	Add
AND	And
ARPL	Adjust priority
BOUND	Check array
BSF	Bit right scan
BSR	Bit left scan
BSWAP	Swap bytes
BT	Bit test
BTC	Bit test and invert
BTR	Bit test and clear
BTS	Bit test and set
CALL	Procedure call
CBW	Convert byte
CDQ	Convert double word
CLC	Clear carry
CLD	Clear direction
CLI	Clear interrupt
CLTS	Task clear
CMC	Complement carry
CMOVA	Transfer if above
CMOVB	Transfer if below
CMOVE	Transfer if equal
CMOVG	Transfer if greater
CMOVL	Transfer if less
CMOVNA	Transfer if not above
CMOVNB	Transfer if not below
CMOVNE	Transfer if not equal
CMOVNG	Transfer if not greater
CMOVNL	Transfer if not less
CMOVNO	Transfer if not overflow
CMOVNP	Transfer if not parity
CMOVNS	Transfer if not sign
CMOVO	Transfer if overflow
CMOVP	Transfer if parity
CMOVS	Transfer if sign
CMP	Compare
CMPSB	Compare byte string
CMPSD	Compare double word string
CMPSW	Compare word string
CMPXCHG	Compare and exchange
CMPXCHG486	Compare and exchange 486
CMPXCHG8B	Compare and exchange 8 bytes
CPUID	CPU identification
CWD	Convert word
CWDE	Extend word
DAA	Adjust addition decimal
DAS	Adjust subtraction decimal
DEC	Decrement by one
DIV	Divide
ENTER	Establish stack frame
HLT	Halt
IDIV	Signed divide
IMUL	Signed multiply
IN	Port input
INC	Increment by one
INSB	Port input byte string
INSD	Port input double word string
INSW	Port input word string
JA	Jump if above
JB	Jump if below
JBE	Jump if not above
JCXZ	Jump if CX is zero
JE	Jump if equal
JECXZ	Jump if ECX is zero
JG	Jump if greater
JL	Jump if less
JMP	Jump
JMPE	Jump extend
JNB	Jump if not below
JNE	Jump if not equal
JNG	Jump if not greater
JNL	Jump if not less
JNO	Jump if not overflow
JNP	Jump if not parity
JNS	Jump if not sign
JO	Jump if overflow
JP	Jump if parity
JS	Jump if sign
LAHF	Load flag low eight
LAR	Load access permission
LDS	Load data segment
LEA	Load effective address
LEAVE	Clear procedure stack
LES	Load extra segment
LFS	Load flag segment
LGDT	Load global descriptor
LGS	Load global segment
LIDT	Load interrupt descriptor
LMSW	Load status word
LOADALL	Load all
LOADALL286	Load all 286
LOCK	Lock
LODSB	Load source index byte string
LODSD	Load source index double word string
LODSW	Load source index word string
LOOP	Loop
LOOPE	Loop if equal
LOOPNE	Loop if not equal
LOOPNZ	Loop if not zero
LOOPZ	Loop if zero
LSL	Load segment limit
LSS	Load stack segment
LTR	Load task
MONITOR	Monitor
MOV	Move
MOVSB	Move byte string
MOVSD	Move double word string
MOVSW	Move word string
MOVSX	Sign extend move
MOVZX	Zero extend move
MUL	Multiply
MWAIT	
NEG	Negate
NOP	No operation
NOT	Not
OR	Or
OUT	Port output
OUTSB	Port output byte string
OUTSD	Port output double word string
OUTSW	Port output word string
POP	Pop
POPA	Pop all
POPF	Pop flag
PUSH	Push
PUSHA	Push all
PUSHF	Push flag
RCL	Rotate left through carry
RCR	Rotate right through carry
RDMSR	Read special model
RDPMC	Read execution monitor count
RDSHR	
RDTSC	Read time stamp count
REP	Repeat
REPE	Repeat if equal
REPNE	Repeat if not equal
RET	Procedure return
RETF	Far procedure return
RETN	Near procedure return
ROL	Rotate left
ROR	Rotate right
RSM	Restore system management
SAHF	Store flag low eight
SAL	Arithmetic left shift
SALC	
SAR	Arithmetic right shift
SBB	Borrow subtract
SCASB	Scan byte string
SCASD	Scan double word string
SCASW	Scan word string
SETA	Set if above
SETB	Set if below
SETE	Set if equal
SETG	Set if greater
SETL	Set if less
SETNA	Set if not above
SETNB	Set if not below
SETNE	Set if not equal
SETNG	Set if not greater
SETNL	Set if not less
SETNO	Set if not overflow
SETNP	Set if not parity
SETNS	Set if not sign
SETO	Set if overflow
SETP	Set if parity
SETS	Set if sign
SGDT	Save global descriptor
SHL	Shift left logical
SHLD	Shift left double precision
SHR	Shift right logical
SHRD	Shift right double precision
SIDT	Save interrupt descriptor
SLDT	Save local descriptor
SMI	
SMINT	
SMINTOLD	
SMSW	Save status word
STC	Set carry
STD	Set direction
STI	Set interrupt
STOSB	Store byte string
STOSD	Store double word string
STOSW	Store word string
STR	Store task
SUB	Subtract
SYSCALL	System call
SYSENTER	System enter
SYSEXIT	System exit
SYSRET	System return
TEST	Test number
UD0	Undefined instruction 0
UD1	Undefined instruction 1
UD2	Undefined instruction 2
UMOV	
VERW	Verify write
WAIT	Wait
WBINVD	Write back invalidate cache
WRMSR	Write special model
WRSHR	
XADD	Exchange and add
XBTS	
XCHG	Exchange
XLAT	Translate
XOR	Exclusive or
XSTORE	
Instruction	Function
EMMS	Media empty MMX state
F2XM1	Absolute value of top of floating-point stack
FADD	Floating-point add
FADDP	Floating-point add and pop
FBLD	Floating-point load ten number
FBSTP	Floating-point save ten number and pop
FCHS	Floating-point sign invert
FCLEX	Floating-point error clear
FCMOVB	Floating-point transfer if below
FCMOVBE	Floating-point transfer if not above
FCMOVE	Floating-point transfer if equal
FCMOVNB	Floating-point transfer if not below
FCMOVNBE	Floating-point transfer if above
FCMOVNE	Floating-point transfer if not equal
FCMOVNU	Floating-point transfer if ordered
FCMOVU	Floating-point transfer if unordered
FCOM	Floating-point compare
FCOMI	Floating-point compare and load flag
FCOMIP	Floating-point compare and load flag and pop
FCOMP	Floating-point compare and pop
FCOMPP	Floating-point compare and pop two
FCOS	Floating-point cosine
FDECSTP	Floating-point stack pointer decrement by one
FDISI	Floating-point check disable interrupt
FDIV	Floating-point divide
FDIVP	Floating-point divide and pop
FDIVR	Floating-point reciprocal divide
FDIVRP	Floating-point reciprocal divide and pop
FENI	Floating-point check enable interrupt
FFREE	Floating-point free
FFREEP	Floating-point free and pop
FIADD	Floating-point add integer
FICOM	Floating-point compare integer
FICOMP	Floating-point compare integer and pop
FIDIV	Floating-point divide integer
FIDIVR	Floating-point reciprocal divide integer
FILD	Floating-point load integer
FIMUL	Floating-point multiply integer
FINCSTP	Floating-point stack pointer increment by one
FINIT	Floating-point initialize
FIST	Floating-point save integer
FISTP	Floating-point save integer and pop
FISTTP	 
FISUB	Floating-point subtract integer
FISUBR	Floating-point reciprocal subtract integer
FLD	Floating-point load number
FLD1	Floating-point load one
FLDCW	Floating-point load control word
FLDENV	Floating-point load environment
FLDL2E	Floating-point load L2E
FLDL2T	Floating-point load L2T
FLDLG2	Floating-point load LG2
FLDLN2	Floating-point load LN2
FLDPI	Floating-point load PI
FLDZ	Floating-point load zero
FMUL	Floating-point multiply
FMULP	Floating-point multiply and pop
FNCLEX	Floating-point no error clear
FNDISI	Floating-point no check disable interrupt
FNENI	Floating-point no check enable interrupt
FNINIT	Floating-point no initialize
FNOP	Floating-point no operation
FNSAVE	Floating-point no save state
FNSTCW	Floating-point no save control word
FNSTENV	Floating-point no save environment
FNSTSW	Floating-point no save status word
FPATAN	Floating-point partial arctangent
FPREM	Floating-point partial remainder
FPREM1	Floating-point partial remainder two
FPTAN	Floating-point partial tangent
FRNDINT	Floating-point round and integer
FRSTOR	Floating-point restore state
FSAVE	Floating-point save state
FSCALE	Floating-point scale operation
FSETPM	Floating-point set protection
FSIN	Floating-point sine
FSINCOS	Floating-point sine and cosine
FSQRT	Floating-point square root
FST	Floating-point save
FSTCW	Floating-point save control word
FSTENV	Floating-point save environment
FSTP	Floating-point save and pop
FSTSW	Floating-point save status word
FSUB	Floating-point subtract
FSUBP	Floating-point subtract and pop
FSUBR	Floating-point reciprocal subtract
FSUBRP	Floating-point reciprocal subtract and pop
FTST	Floating-point compare with zero
FUCOM	Floating-point unordered compare
FUCOMI	Floating-point unordered compare and load flag
FUCOMIP	Floating-point unordered compare and load flag and pop
FUCOMP	Floating-point unordered compare and pop
FUCOMPP	Floating-point unordered compare and pop two
FWAIT	Floating-point wait
FXAM	Floating-point examine
FXCH	Floating-point exchange
FXTRACT	Floating-point extract
FYL2X	Floating-point compute L2X
FYL2XP1	Floating-point compute L2XP1
MOVED	Media double word move
MOVEQ	Media four word move
PACKSSDW	Media signed double word pack
PACKSSWB	Media signed word pack
PACKUSWB	Media unsigned word pack
PADDB	Media truncated byte add
PADDD	Media truncated double word add
PADDSB	Media signed saturated byte add
PADDSIW	 
PADDSW	Media signed saturated word add
PADDUSB	Media unsigned saturated byte add
PADDUSW	Media unsigned saturated word add
PADDW	Media truncated word add
PAND	Media and
PANDN	Media and not
PAVEB	 
PCMPEQB	Media byte compare equal
PCMPEQD	Media double word compare equal
PCMPEQW	Media word compare equal
PCMPGTB	Media byte compare greater
PCMPGTD	Media double word compare greater
PCMPGTW	Media word compare greater
PDISTIB	 
PMACHRIW	 
PMADDWD	 
PMAGW	 
PMULHRIW	 
PMULHRWC	 
PMULHW	 
PMVGEZB	 
PMVLZB	 
PMVNZB	 
PMVZB	 
POR	Media or
PSLLD	Media double word left shift
PSLLQ	Media four word left shift
PSLLW	Media word left shift
PSRAD	Media double word arithmetic right shift
PSRAW	Media word arithmetic right shift
PSRLD	Media double word right shift
PSRLQ	Media four word right shift
PSRLW	Media word right shift
PSUBB	Media truncated byte subtract
PSUBSB	Media signed saturated byte subtract
PSUBSIW	 
PSUBSW	Media signed saturated word subtract
PSUBUSB	Media unsigned saturated byte subtract
PSUBUSW	Media unsigned saturated word subtract
PSUBW	Media truncated word subtract
PUNPCKHBW	Media byte high unpack
PUNPCKHDQ	Media double word high unpack
PUNPCKHWD	Media word high unpack
PUNPCKLBW	Media byte low unpack
PUNPCKLDQ	Media double word low unpack
PUNPCKLWD	Media word low unpack
 Last edited by zzz19760225 on 2016-12-12 at 15:24 ]