汇编语言

转载 2012年03月27日 10:51:54

转载于:http://cs.fjzs.edu.cn/ketang/hbyy/11-3-2.htm

11.3.2 数据传送指令

为了满足协处理器和CPU之间进行数据交流的需求,就需要实现内存单元和协处理器之间进行数据传送的指令。协处理器的指令系统中有三大类数据传送指令:BCD传送指令、浮点数传送和整数传送指令。

一、BCD传送指令

1、FBLD

指令格式:FBLD MemBCD(*)
指令功能:将内存中的BCD数据压入协处理器的堆栈中;

(*) MemType是指定数据类型Type的内存单元,如:MemBCD是BCD类型的存储单元。此后不再说明。

2、FBSTP

指令格式:FBSTP MemBCD
指令功能:将协处理器中的BCD数据存入内存,并进行堆栈的弹出操作。

例如:

  .387
data1 DT 123, -543
data2 DT 2.5
……
FBLD data1 ;把BCD数据123压进栈
FBSTP data2 ;把当前堆顶数据弹出,并传送给BCD型的内参单元

二、浮点数传送指令

1、FLD

  指令格式: FLD STReg(*)/MemReal
指令功能: 将浮点数据压入协处理器的堆栈中。当进行内存单元内容压栈时,系统会自动决定传送数据的精度。比如:用DD或REAL4定义的内存单元数值是单精度数等。

(*) STReg是协处理器堆栈寄存器ST(0)~ST(7)。

例如:

  .387
data1 DD 123, -543
data2 REAL8 -321.5
data3 REAL10 2.5
……
FLD data1 ;压一个单精度数据进栈
FLD data2 ;压一个双精度数据进栈
FLD ST(0) ;把堆栈寄存器ST(0)的值再压进栈
FLD data3 ;压一个扩展精度数据进栈

2、FST

  指令格式: FST  STReg/MemReal
指令功能: 将协处理器堆栈栈顶的数据传送到目标操作数中。在进行数据传送时,系统自动根据控制寄存器中舍入控制位的设置把栈顶浮点数舍入成相应精度的数据。

3、FSTP

  指令格式: FSTP  STReg/MemReal
指令功能: 与FST相类似,所不同的是:指令FST执行完后,不进行堆栈的弹出操作,即:堆栈不发生变化,而指令FSTP执行完后,则需要进行堆栈的弹出操作,堆栈将发生变化。请见11.3.1节中的指令操作符命名规则的说明。

4、FXCH

  指令格式: FXCH [STReg]
指令功能: 将指定的寄存器中的浮点数与栈顶浮点数进行交换。如果不指定操作数,那么,默认ST和ST(1)二者之间交换数据。

例如:FXCH  ST(2)——栈顶数据与堆栈寄存器ST(2)进行数据交换。

三、整数传送指令

1、FILD

指令格式:FILD MemInt

其中:MemInt是定义为整型数据类型的内存单元,但不能是用DB定义的存储单元。下同,不再叙述。

2、FIST/FISTP

  指令格式: FIST MemInt
FISTP MemInt
其中: Mem是定义整型数据类型的内存单元,但不能是用DB定义的存储单元。
指令功能: 将协处理器堆栈栈顶的数据传送到目标存储单元中。在进行数据传送时,系统自动根据控制寄存器中舍入控制位的设置把栈顶浮点数舍入成整型数据。

指令FIST和FISTP的区别在于堆栈操作,详细请见11.3.1中的命名规则说明

 

另:一个学习汇编指令的站点:http://courses.engr.illinois.edu/ece390/archive/spr2002/books/labmanual/inst-ref.html

汇编语言学习系列 函数实现

以下代码示范交换a和b两个整数的函数,编译环境Ubuntu14.04(32位) 假如要实现以下C代码 #include void swap(int *xp, int *yp) { ...
  • csujiangyu
  • csujiangyu
  • 2015年03月01日 14:00
  • 686

汇编语言的种类

汇编语言的种类 汇编语言和CPU息息相关,但是不能把汇编语言完全等同于CPU的机器指令。不同架构的CPU指令并不相同,如x86,powerpc,arm各有各的指令系统;甚至同一种架构的CPU有几套...
  • u013234805
  • u013234805
  • 2014年04月30日 15:46
  • 2738

汇编语言经典书籍

此处用来整合我许久以来在互联网上多处寻得的关于学习汇编各个方面的书籍,由于可能对于初学者来说,从什么地方开始都是一个难题..(呵呵 有点自大了呢).. (1)16位入门经典书籍  王爽汇编语...
  • lch614730
  • lch614730
  • 2013年10月30日 12:34
  • 4017

汇编语言学习体会

在没有学习汇编语言以前,我可能会对汇编这门强大而又难学的程序设计语言产生怀疑,因为现在我们有那么多的高级编程语言可以学习,尤其是现在日益强大的面向对象语言。而且每种语言都要比汇编语言学起来容易,而且开...
  • bitsjx
  • bitsjx
  • 2010年06月11日 20:53
  • 6293

汇编语言的优缺点

汇编语言的介绍汇编语言(Assembly Language)是面向机器的程序设计语言。在汇编语言中,用助记符(Memoni)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。这样用...
  • nanos
  • nanos
  • 2007年07月20日 23:12
  • 1610

如何使用汇编语言实现冒泡排序?

怎么使用汇编语言实现冒泡排序    我们先想想C语言里是怎么实现的冒泡排序        #include int main() { int arr[10]; int br...
  • cqp_snow
  • cqp_snow
  • 2017年04月27日 20:54
  • 867

高级编程语言的发展历程(机器语言、汇编语言、高级语言)

目录   高级编程语言的发展历程(一)创始纪   高级编程语言的发展历程(二)虚拟机的前世今生   高级编程语言的发展历程(三)FORTRAN 语言是怎么来的   高级编程语言的发展历程(四)...
  • u012701023
  • u012701023
  • 2015年05月31日 17:52
  • 2713

汇编语言:简单图形界面的绘制教程

最近自己在学习汇编语言,看到了汇编语言绘制的图形界面,感觉很强大;自己以后的工作也要写一些小工具,于是,自己在看了网上很多的资料和别人分享的心得,也学习着自己绘制了一个图形界面。这里我要特别的鸣谢ev...
  • abzbi
  • abzbi
  • 2012年09月05日 12:20
  • 6710

汇编语言出现的历史背景

1、概述         汇编语言是为特定的计算机或计算机系列设计的一种面向机器的语言,由执行指令和伪指令组成。执行指令是机器指令的符号表示,其操作码用记忆符表示,地址码用标号、变量、常数(??)等...
  • shisiye15
  • shisiye15
  • 2012年06月27日 20:37
  • 2143

汇编语言指令大全最新发布完整版

汇编语言指令大全最新发布完整版 一、数据传输指令 ─────────────────────────────────────── 它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据.  1...
  • huangkangying
  • huangkangying
  • 2016年01月27日 22:05
  • 2106
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:汇编语言
举报原因:
原因补充:

(最多只允许输入30个字)