汇编语言学习笔记(十二)-浮点指令
浮点数如何存储 浮点数的运算完全不同于整数,从寄存器到指令,都有一套独特的处理流程,浮点单元也称作x87 FPU。 现在看浮点数的表示方式,我们所知道的,计算机使用二进制存储数据,所表示的数字都具有确定性,那是如何表示浮点这种具有近似效果的 …
分类
浮点数如何存储 浮点数的运算完全不同于整数,从寄存器到指令,都有一套独特的处理流程,浮点单元也称作x87 FPU。 现在看浮点数的表示方式,我们所知道的,计算机使用二进制存储数据,所表示的数字都具有确定性,那是如何表示浮点这种具有近似效果的 …
在c语言中,宏作为一种预编译手段,可以在编译之前进行替换,汇编中的宏只是语法与c有所差别,在语言中所起到的作用非常相近。 先来看MASM中宏的语法规范:
这篇介绍一下c内联汇编的使用,准确的说,内联汇编不算是汇编的语法,而是c/c++的语法,虽然c/c++是有标准参考的,但是不同编译器使用的 汇编不同,导致内联汇编是编译器相关的。这里介绍vc和gcc下c的内联汇编使用,vc使用masm语法 …
编程语言为了不至于使代码过于庞大,便于管理,都提供了函数的功能,提供输入和输出接口,完成独立的功能,细分代码。汇编语言同样也有函数的概念, 但是这里函数有其本身的复杂性,像高级语言,直接提供声明格式,输入输出便可,而汇编需要透彻的理解堆栈, …
字符串处理可能是编程语言中最耗时以及最繁琐的操作,比较一个整数只需要比较32位,但是比较字符串却需要循环比较字符串的每一个字符,相关的复制 追加操作则需要很多的内存拷贝操作,可能各种语言都对应有一系列的字串处理库,对汇编来说,当然没有类似的 …
寻址一直以来都是汇编中的关键内容,但是在平坦内存模式下,汇编寻址的难度降低很多,不过Intel CPU必须经历段式内存模式后才可到达页式存储,所以如果系统底层编程,也可能会涉及到实模式下的程序设计,需要掌握段式寻址。
在上面几篇已经提到了一些数学运算功能,这篇再详细介绍之,数学运算无非是一些加减乘除,移位等等,就是这些简单的操作造就了丰富多彩的程序世界,可以说程序的根本就是计算。
程序不可能一顺到底的执行,需要有一些分支流程控制的语法,对高级语言来讲,有分支循环等,对于汇编,有一个“跳”,或者选择性跳,跳转指令本身非常简单,仅仅一个jmp指令,类似于c语言的goto,语法为:
汇编语言和高级语言不通,需要清晰掌握数据存储和机器相关的大量细节,高级语言会自动处理很多赋值的细节,有时甚至都不知道编译器给我创建了多少变 量,赋值了几次,但在汇编里,一切都变得很清晰了,你需要自己处理每个赋值的细节,这是通过mov指令实现 …
其实对于cpu来说,本没有什么类型之分,仅是一些内存,至于是什么,看你怎么去计算它们了,汇编是与机器码一一对应的,但是还是有些许区别,汇编毕竟还需要编译连接,为了给人使用方便,还是定义了不少数据类型(也有汇编除外,比如NASM,完全是对内存 …