汇编-vcIO.inc
之前写的汇编程序中都包含了一个叫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相关推荐
- GCC 编译 C++ 程序分步骤流程(预处理 gcc -E、编译 gcc -S、汇编 gcc -c 和链接 gcc 以及 gcc -o 选项)
C 或者 C++ 程序从源代码生成可执行程序的过程,需经历 4 个过程,分别是预处理.编译.汇编和链接. 同样,使用 GCC 编译器编译 C 或者 C++ 程序,也必须要经历这 4 个过程.但考虑在实 ...
- 实验四:使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用
贺邦+原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 实验目的: 使用库函数 ...
- 经常使用ARM汇编指令
一面学习,一面总结,一面记录. 以下是整理在网上找到的一些资料,简单整理记录一下,方便以后查阅. ARM处理器的指令集能够分为跳转指令.数据处理指令.程序状态寄存器(PSR)处理指令.载入/存储指令. ...
- 初学 Delphi 嵌入汇编[3] - 第一个 Delphi 与汇编的例子
前面知道了一个汇编的赋值指令(MOV), 再了解一个加法指令(ADD), 就可以做个例子了. 譬如: ADD AX,BX; 这相当于 Delphi 中的 AX := AX + BX; 另外提前来个列表 ...
- Linux 应用程序 嵌汇编,Linux下C语言嵌汇编
Using Assembly Language in Linux. Intel和AT&T汇编语法差异: 1.前缀: Intel汇编寄存器和立即数无需前缀.后者寄存器前缀为%,立即数前缀为$. ...
- arm linux 启动之一:汇编启动到start_kernel
描述arm linux启动的概要过程,以S5PV210(Cortex A8)为例,本文描述第一个阶段. 一.arm linux的引导 uboot在引导arm linux(uImage镜像)到SDRAM ...
- 32位汇编寄存器及汇编指令
32位CPU所含有的寄存器有: 4个数据寄存器(EAX.EBX.ECX和EDX) 2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP) 6个段寄存器(ES.CS.SS.DS.FS和 ...
- 祝贺《WCF邮件通信系统》在高阳市场研究汇编第五期发表
上次给公司的市场研究汇编投稿,只写了一个PPT格式的<WCF邮件通信系统>,编辑把它整理成了PDF格式的内容,感觉很好,所以我把PDF原文中的有关内容存储成了图片,发表在这里,庆贺一下. ...
- ATT汇编语言与GCC内嵌汇编简介
AT&T汇编语言与GCC内嵌汇编简介 1 AT&T 与INTEL的汇编语言语法的区别 1.1大小写 1.2操作数赋值方向 1.3前缀 1.4间接寻址语法 1.5后缀 1.6指令 2 G ...
- Linux下的ATT语法(即GNU as 汇编语法)入门
学习这么长时间,一直在C语言这一层面上钻研和打拼,日积月累,很多关于C的疑惑在书本和资料中都难以找到答案.程序员是追求完美的一个种群,其头 脑中哪怕是存在一点点的思维黑洞都会让其坐卧不宁.不久前在it ...
最新文章
- 如何自定义Shell登录组件
- 深度学习在图像超分辨率重建中的应用
- Python中使用高德API实现经纬度转地名
- How to use filter in Analytics Path Framework
- 【计蒜客 - 2019南昌邀请赛网络赛 - K】MORE XOR(数学,找规律,打表)
- 中文信息处理——分词评价程序(计算分词结果的准确率,召回率,F测度)
- CCF NOI1047 寻找鞍点
- 机器学习10-信用卡反欺诈模型
- 解决:如何利用ssh命令,免密登录远程服务器
- matlab中matconvnet,matlabR2016中配置matconvnet编译时出错
- uva 10780 分解质因数
- spring boot实现图片裁剪
- 一定要看:如何成为一名全栈工程师?
- 狮子,狼,羊群的故事
- userenv和sys_context函数
- babylon101| 09. Intersect Collisions - mesh(网格交叉碰撞)
- java 1.8下载_jre1.8官方下载-JAVA运行环境(jre8 64位)1.8.0.25 官网最新版【离线版】下载_东坡手机下载...
- 58同成前端面试分析
- flex-wrap: wrap 溢出换行但是父盒子没有被撑开的解决办法
- 西门子200smart模拟量滤波防抖PLC程序,能实现电流电压和热电阻模拟量信号的采集