Intel 汇编与C语言
来源:互联网 发布:云南师范大学校园网络 编辑:程序博客网 时间:2024/05/22 06:26
学到这里,突然对汇编与C预言的相似之处做一下比较:
8086的汇编是16位的,调用的是dos与bios的中断例程
intel的这本汇编是win32的,调用的是操作系统提供的API函数
但是我们直接去调用API函数编程,需要很了解API函数,对于初学者很难理解,所以作者编写了库文件Irvine32.lib,其中包含了许多常用的过程(调用API函数实现),然后把这些过程的原型(或者说是声明)放到Irvine32.inc文件中,这样我们调用Irvine32.lib中的过程之前需要用include伪指令把Irvine32.inc中的内容复制到.asm格式的源文件中,使得我们可以很方便的使用控制台的一些常用功能。
这一点与C语言很相似,C语言中讲述了大量的库文件.lib格式的,比如我们常用的printf与scanf函数就包含在这些库文件中,在使用printf与scanf函数之前我们需要用#include编译指令把stdio.h头文件中包含的有关函数声明复制到.c(.cpp)源文件中,这样我们想在控制台窗口中显示字符时就不需要编写大量的代码,大大简化了编写的效率。
Intel汇编语言程序设计的作者采用的就是这样一种思路,这样方便了程序的直接演示。
C语言中经常看到#define定义了一个字符常量,这很像win32汇编中的equ伪指令,都是在预处理阶段把字符替换成数字,预处理是在编译、连接之前对源文件中的代码数据进行处理的工作,为源文件的正常编译做准备,宏就是在预处理阶段进行展开的(源文件中调用宏的地方替换成指令),经过预处理后的源文件再经过编译生成机器可以识别的目标文件obj文件(也就是把各个指令翻译成机器可以识别的二进制文件),之后链接(包括连接目标程序和用于标准库函数的代码)。
提到预处理,也就想到条件编译,因为预处理在编译的前面,条件编译就是告诉编译器有选择的去编译指令,条件编译语句常出现在宏函数中,汇编中有关伪指令为if、endif
等。C语言中有段条件编译指令为#if、#endif等。
汇编中定义一个常量,也就是在数据区.data中包含一个常量,并为这个常量定义一个标号(标识符),所以这里的标号类似于C语言中为常量定义的标识符
汇编中的伪指令PROTO的功能是为调用的程序创建过程原型,其中包括这个过程的参数。类似于C语言中的函数声明
汇编中外部过程调用需要INVOKE伪指令,在主过程中使用,C语言中也是
- Intel 汇编与C语言
- C语言与汇编
- 汇编与C语言
- 汇编学习-汇编指令与C语言
- 64位Ubuntu中C与intel汇编混合编程
- c语言与汇编混编写法
- C语言与汇编混合编程
- ARM汇编与C语言对照
- C语言与汇编混合编程
- 如何C语言与汇编混编
- c语言与汇编的区别
- 一 汇编指令与C语言
- AT&T 与Intel 汇编语法比较
- AT&T 与Intel 汇编语法比较
- AT&T与Intel汇编风格比较
- [Intel汇编-MASM]与或以及乘除
- AT&T汇编与intel汇编的对比与不同
- AT&T汇编与Intel汇编的一些区别
- UVa 10763 - Foreign Exchange
- 失业的程序员(八):创业的要素
- openstack资料-陈沙克整理
- c++继承中的内存布局
- Oracle 索引 详解
- Intel 汇编与C语言
- android inflater 用法
- oracle误删除表数据后的恢复详解
- 均值滤波、中值滤波的matlab实现
- 在Activity和XML中设置屏幕的横竖屏幕
- cgic库的使用
- LA 5506 Eight
- iOS nil ,null ,NULL 的区别
- 【力出一孔,利出一孔】——任正非