专栏中心

EEPW首页 > 专栏 > GNU汇编总结3

GNU汇编总结3

发布人:0750long 时间:2010-02-06 来源:工程师 发布文章
GNU汇编总结3

 

 

################################################################################################
# 五,控制流程                                           
################################################################################################    
无条件跳转:
1, 跳转
     jmp    location 其中location为要跳转到的内存地址, 在汇编中为定义的标签

2,调用
     调用指令分为两个部分:
     1, 调用call address 跳转到指定位置
     2, 返回指令ret, 它没有参数紧跟在call指令后面的位置
   
     执行call指令时,它把EIP的值放到堆栈中, 然后修改EIP以指向被调用的函数地址, 当被调用
     函数完成后, 它从堆栈获取过去的EIP的值, 并把控制权返还给原始程序。
   
3,中断
     由硬件设备生成中断。 程序生成软件中断
     当一个程序产生中断调用时, 发出调用的程序暂停, 被调用的程序接替它运行, 指令指针被转移到
     被调用的函数地址, 当调用完成时使用中断返回指令可以返回调原始程序。
   
   
   
条件跳转:
条件跳转按照EFLAGS中的值来判断是否该跳转, 格式为:

jxx address, 其中xx是1-3个字符的条件代码, 取值如下:
a        大于时跳转
ae       大于等于
b        小于
be       小于等于
c        进位
cxz      如果CX寄存器为0
ecxz     如果ECS寄存器为0
e        相等
na       不大于
nae      不大于或者等于
nb       不小于
nbe      不小于或等于
nc       无进位
ne       不等于
g        大于(有符号)
ge       大于等于(有符号)
l        小于(有符号)
le       小于等于(有符号)
ng       不大于(有符号)
nge      不大于等于(有符号)
nl       不小于
nle      不小于等于
no       不溢出
np       不奇偶校验
ns       无符号
nz       非零
o        溢出
p        奇偶校验
pe       如果偶校验
po       如果奇校验
s        如果带符号
z        如果为零


条件跳转不支持分段内存模型下的远跳转, 如果在该模式下进行
程序设计必须使用程序逻辑确定条件是否存在, 然后实现无条件
跳转, 跳转前必须设置EFLAGS寄存器

 


################################################################################################
# 六,数字                                           
################################################################################################

IA-32平台中存储超过一字节的数都被存储为小尾数的形式但是把数字传递给寄存器时, 寄存器里面保存是按照大尾数
的形式存储


把无符号数转换成位数更大的值时, 必须确保所有的高位部分都被设置为零

把有符号数转换成位数更大的数时:
intel 提供了movsx指令它允许扩展带符号数并保留符号, 它与movzx相似, 但是它假设要传送的字节是带符号数形式


浮点数:
fld    指令用于把浮点数字传送入和传送出FPU寄存器, 格式:
fld source
其中source可以为32 64或者80位整数值


IA-32使用FLD指令用于把存储在内存中的单精度和双精度浮点值FPU寄存器堆栈中, 为了区分这两种长度GNU汇编器使用
FLDS加载单精度浮点数, FLDL加载双精度浮点数

类似FST用于获取FPU寄存器堆栈中顶部的值, 并且把这个值放到内存位置中, 对于单精度使用FSTS, 对于双精度使用FSTL

注:出处:http://tb.blog.csdn.net/TrackBack.aspx?PostId=1483505

再注:之所以转本文.主要是怕这么好的东西哪天一不小心找不到了,所以先帮自己放在这里.还是谢谢写这篇文章的兄弟

专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词:

相关推荐

本地设计和制造的Molex莫仕MX-DaSH模块化线对线连接器

《嵌入式系统设计》11-常见嵌入式硬件(其他硬件到结束)及系统级设计方法(开始到计算机设计)

视频 2010-02-02

DIY 3D-打印 String Shooter —— 深度技术解析与电机/摩擦/电路的工程原理

嵌入式系统 2025-12-12

《嵌入式系统设计》10-常见嵌入式硬件(典型的ARM系统到Boot ROM的制作)

视频 2010-02-02

新人的问题

dannz 2004-07-27

WinCE下的触控屏驱动程序源代码(MS提供)

《嵌入式系统设计》8-嵌入式系统介绍软件部分(依赖相关技术的发展到代码临界值)

视频 2010-02-02

用组装式思维重构 MES,打破“标准品”与“定制化”的终极悖论

EDA/PCB 2025-12-12

Windows NT下最负盛名的专用调试工具

Cincoze Din-Rail电脑(MD-3000)为机器视觉打造可靠的实时运算核心

中国汽车月度产量首次超过350万辆,车市消费热度持续上升

Windows下的最负盛名的专用调试工具

谷歌Gemini 3实战浏览器:AI整理标签页,生成交互式Web应用

借助TOLL GaN突破太阳能系统的界限

2025年第三季度,全球开放式耳机(OWS)出货量突破1,000万台,华为领跑,TWS市场逐渐转向价值创造

《嵌入式系统设计》12-系统级设计方法(计算机设计到系统资源安排)

视频 2010-02-02

《嵌入式系统设计》9-常见嵌入式硬件(开始到ARM家族)

视频 2010-02-02

Windows CE BSP 1.2

现代电源设计工具

电感器:TDK推出适用于汽车电源电路的功率电感器

更多 培训课堂
更多 焦点
更多 视频

技术专区