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语言中也是



原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 手机照片超过3m怎么办 小说大于3m看不了怎么办 携程订单删除了怎么办 绿叶会员密码忘了怎么办 账号对名错了怎么办 lv双肩包肩带短了怎么办 微信充q币被骗了怎么办 qq隐私密码忘了怎么办 qq锁屏密码忘了怎么办 qq手势密码忘记了怎么办 qq红包的密码忘了怎么办 qq密码被改了怎么办啊 手机qq密码忘了怎么办 腾讯安全中心冻结解冻进不去怎么办 qq钱包充值限额怎么办 qq没绑卡支付密码忘了怎么办 手机qq停止运行该怎么办 手机不支持qq软件运行怎么办 王者传奇冲元宝不到账怎么办 支付宝充值地下城点卷冲错了怎么办 dnf点券冲错了怎么办 百家号改了手机绑定找不到了怎么办 银行卡换了网银怎么办 qq没有银行卡转不出钱怎么办 qq钱包限制一万怎么办 qq余额超过20万怎么办 扣扣忘记了密码怎么办 qq钱包发不出来怎么办 qq支付密码忘了怎么办? 扣扣上转账错了怎么办 qq绑卡存在异常怎么办 微信没绑银行卡忘记支付密码怎么办 微信的自动扣费怎么办 不小心把钱充到微信财付通该怎么办 财付通用什么充值卡充值话费怎么办 苹果手机灯坏了怎么办 手机电灯不亮了怎么办? 苹果手机相机坏了怎么办 苹果5s手机背光灯不亮怎么办 苹果5s灯控坏了怎么办 微信q币冲错号码怎么办