为了满足协处理器和
cpu之间进行数据交流的需求,就需要实现
内存单元和协处理器之间进行数据传送的指令。协处理器的指令系统中有三大类数据传送指令:BCD传送指令、浮点数传送和整数传送指令。
一、BCD传送指令
1、FBLD
指令格式:FBLD MemBCD
(*)
指令功能:将内存中的BCD数据压入协处理器的堆栈中;
(*) MemType是指定数据类型Type的内存单元,如:MemBCD是BCD类型的存储单元。此后不再说明。
2、FBSTP
指令格式:FBSTP MemBCD
指令功能:将协处理器中的BCD数据存入内存,并进行堆栈的弹出操作。
例如:[table][tr][td=1,6][/td][td=3,1].387[/td][/tr][tr][td]data1[/td][td=2,1]DT 123, -543[/td][/tr][tr][td]data2[/td][td=2,1]DT 2.5[/td][/tr][tr][td=3,1]……[/td][/tr][tr][td]FBLD[/td][td]data1[/td][td];把BCD数据123压进栈[/td][/tr][tr][td]FBSTP[/td][td]data2[/td][td];把当前堆顶数据弹出,并传送给BCD型的内参单元[/td][/tr][/table]
二、浮点数传送指令[table][tr][td=3,1]1、FLD[/td][/tr][tr][td=1,2][/td][td]指令格式:[/td][td]FLD STReg
(*)/MemReal[/td][/tr][tr][td]指令功能:[/td][td]将浮点数据压入协处理器的堆栈中。当进行内存单元内容压栈时,系统会自动决定传送数据的精度。比如:用DD或REAL4定义的内存单元数值是单精度数等。[/td][/tr][/table]
(*) STReg是协处理器堆栈寄存器ST(0)~ST(7)。
例如:
2、FST
3、FSTP
4、FXCH
例如:FXCH ST(2)——栈顶数据与堆栈寄存器ST(2)进行数据交换。
三、整数传送指令
1、FILD
指令格式:FILD MemInt
其中:MemInt是定义为整型数据类型的内存单元,但不能是用DB定义的存储单元。下同,不再叙述。
2、FIST/FISTP
指令FIST和FISTP的区别在于堆栈操作,详细请见11.3.1中的命名规则说明。