之前写的汇编程序中都包含了一个叫vcIO.inc的头文件
今天将简单了解一下这个头文件都干了什么事情

为什么要使用这个头文件?

为了在汇编语言中使用c语言的printf和scanf等函数进行格式输出

这个头文件存放在哪里?

笔者的存放路径是:D:\Visual Studio 2015\VC\include
即你安装vs的目录下的VC下的include文件夹中

下面是头文件的内容:

; vcIO.inc declarations for standard I/O ,console I/O Function prototypes
; Copyright (c) FCL 2010. All rights reserved. .686.model flat,stdcalloption casemap:none        ;case sensitive
; ===========================================================
; 汇编语言可以调用C/C++语言所有的库函,只要对C语言库函数的原型进行说明就可以。includelib   msvcrt.lib ; C语言中的 stdio.h  conio.h 的动态链接库
;  C Run-Time Libraries (CRT)
;  C语言I/O库函数的原型说明
;  Function prototypes printf    PROTO C : dword,:vararg  ;vararg参数:变参,参数个数不确定scanf     PROTO C : dword,:vararg  ;dword参数 :格式描述串的有效地址。_getch    PROTO C : vararg         ;注意:所有的参数都是dword型!_kbhit    PROTO C : vararg
; ===========================================================

其中语句的含义:

  • .686 指定CPU的指令集
  • .model flat,stdcall 使用平坦内存模式,代码和数据使用同一个4GB,stdcall是指API调用时右边的参数先入栈
  • option casemap:none 指大小写不敏感
  • includelib msvcrt.lib 包含vc的运行库
  • 下来是函数的声明:
    格式为: 函数名 PROTO [语言类型] [,参数∶[类型]]…

之后再编写汇编时只需要使用INCLUDE vcIO.inc就可以省去之前的声明和定义,并在汇编程序中直接通过伪指令invoke就可以直接调用printf和scanf了。

汇编-vcIO.inc相关推荐

  1. GCC 编译 C++ 程序分步骤流程(预处理 gcc -E、编译 gcc -S、汇编 gcc -c 和链接 gcc 以及 gcc -o 选项)

    C 或者 C++ 程序从源代码生成可执行程序的过程,需经历 4 个过程,分别是预处理.编译.汇编和链接. 同样,使用 GCC 编译器编译 C 或者 C++ 程序,也必须要经历这 4 个过程.但考虑在实 ...

  2. 实验四:使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用

    贺邦+原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 实验目的: 使用库函数 ...

  3. 经常使用ARM汇编指令

    一面学习,一面总结,一面记录. 以下是整理在网上找到的一些资料,简单整理记录一下,方便以后查阅. ARM处理器的指令集能够分为跳转指令.数据处理指令.程序状态寄存器(PSR)处理指令.载入/存储指令. ...

  4. 初学 Delphi 嵌入汇编[3] - 第一个 Delphi 与汇编的例子

    前面知道了一个汇编的赋值指令(MOV), 再了解一个加法指令(ADD), 就可以做个例子了. 譬如: ADD AX,BX; 这相当于 Delphi 中的 AX := AX + BX; 另外提前来个列表 ...

  5. Linux 应用程序 嵌汇编,Linux下C语言嵌汇编

    Using Assembly Language in Linux. Intel和AT&T汇编语法差异: 1.前缀: Intel汇编寄存器和立即数无需前缀.后者寄存器前缀为%,立即数前缀为$. ...

  6. arm linux 启动之一:汇编启动到start_kernel

    描述arm linux启动的概要过程,以S5PV210(Cortex A8)为例,本文描述第一个阶段. 一.arm linux的引导 uboot在引导arm linux(uImage镜像)到SDRAM ...

  7. 32位汇编寄存器及汇编指令

    32位CPU所含有的寄存器有: 4个数据寄存器(EAX.EBX.ECX和EDX) 2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP) 6个段寄存器(ES.CS.SS.DS.FS和 ...

  8. 祝贺《WCF邮件通信系统》在高阳市场研究汇编第五期发表

    上次给公司的市场研究汇编投稿,只写了一个PPT格式的<WCF邮件通信系统>,编辑把它整理成了PDF格式的内容,感觉很好,所以我把PDF原文中的有关内容存储成了图片,发表在这里,庆贺一下. ...

  9. ATT汇编语言与GCC内嵌汇编简介

    AT&T汇编语言与GCC内嵌汇编简介 1 AT&T 与INTEL的汇编语言语法的区别 1.1大小写 1.2操作数赋值方向 1.3前缀 1.4间接寻址语法 1.5后缀 1.6指令 2 G ...

  10. Linux下的ATT语法(即GNU as 汇编语法)入门

    学习这么长时间,一直在C语言这一层面上钻研和打拼,日积月累,很多关于C的疑惑在书本和资料中都难以找到答案.程序员是追求完美的一个种群,其头 脑中哪怕是存在一点点的思维黑洞都会让其坐卧不宁.不久前在it ...

最新文章

  1. 如何自定义Shell登录组件
  2. 深度学习在图像超分辨率重建中的应用
  3. Python中使用高德API实现经纬度转地名
  4. How to use filter in Analytics Path Framework
  5. 【计蒜客 - 2019南昌邀请赛网络赛 - K】MORE XOR(数学,找规律,打表)
  6. 中文信息处理——分词评价程序(计算分词结果的准确率,召回率,F测度)
  7. CCF NOI1047 寻找鞍点
  8. 机器学习10-信用卡反欺诈模型
  9. 解决:如何利用ssh命令,免密登录远程服务器
  10. matlab中matconvnet,matlabR2016中配置matconvnet编译时出错
  11. uva 10780 分解质因数
  12. spring boot实现图片裁剪
  13. 一定要看:如何成为一名全栈工程师?
  14. 狮子,狼,羊群的故事
  15. userenv和sys_context函数
  16. babylon101| 09. Intersect Collisions - mesh(网格交叉碰撞)
  17. java 1.8下载_jre1.8官方下载-JAVA运行环境(jre8 64位)1.8.0.25 官网最新版【离线版】下载_东坡手机下载...
  18. 58同成前端面试分析
  19. flex-wrap: wrap 溢出换行但是父盒子没有被撑开的解决办法
  20. 西门子200smart模拟量滤波防抖PLC程序,能实现电流电压和热电阻模拟量信号的采集

热门文章

  1. 金庸群侠传5 自动化脚本 绝情谷大厅开宝箱按键游戏
  2. 营业执照生成_营业执照丢失补办要哪些资料?营业执照补办流程什么?你想知道的都在这里!...
  3. node2vec python_Node2vec和networkx
  4. EEGLAB教程-1.2通道定位
  5. KITTY数据集 下载 及 使用
  6. UGNX1957安装说明视频教程
  7. 倒向随机微分方程(BSDE)解对终端值的依赖性
  8. 幅频特性和相频特性的物理意义
  9. 计算机模拟的概念,湍流概念及数值模拟方法
  10. LDA算法——线性判别