经典汇编语言教程:11.3.2 数据传送类指令
10905 点击·0 回帖
![]() | ![]() | |||||||||||||||||||||||||||||||||||||||||||||||||||
![]() | 为了满足协处理器和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中的命名规则说明。 | |||||||||||||||||||||||||||||||||||||||||||||||||||
![]() | ![]() |