;以下是16位汇编 创建静态库,并调用静态库中的函数

;多文件汇编格式

;编译方法(此处用的是masm 5.0,如果是其他的编译器,有可能不能编译)

;第一种,编译方法

;1、masm main.asm  生成.obj文件

;2、masm lib.asm  生成.obj文件

;3、link main.obj lib.obj 生成.exe文件

;第二种,编译方法

;1、masm main.asm  生成.obj文件

;2、masm 16lib.asm  生成.obj文件

;3、lib 16lib.lib 16lib.obj  由.obj文件生成.lib文件,即静态库文件,可以做为函数库使用

;4、link main.obj  16lib.lib  由.obj .lib两个文件生成.exe文件

;=======================================

;(main.asm)

.model small

.stack 100h

.386

.data

  Msg db "in my world! you know?",0

.code

  extrn int21h_40h:far  ;引用外部函数,注意:masm5.0用的是extrn ,少一个e字符

main PROC

  mov ax,@data

  mov ds,ax

  push di

  mov di,offset Msg

  call int21h_40h

  pop di

  mov ax,4c00h

  int 21h main

  ENDP

END main

;==================================

;(16lib.asm)

.model small

.stack .data

.code

  public int21h_40h ;定义外部函数

;********MS-DOS 中断 int 21h功能调用***********************

;--------int 21h 功能号 40h事例-------------

;说明:在标准输出上显示字符串

;输入参数:di = 字符串地址

;输出参数:无

int21h_40h proc far

  xor cx,cx

  mov dx,di ;在循环前保存参数,由于后面循环会改变di

        ;此处也是功能 40h 的参数

L1:

  ;计算字符串长度

  cmp byte ptr[di],0

  je L2

   inc cx

  inc di

  jmp L1

L2:

  ;显示字符串到标准输出设备上

  mov ah,40h

  mov bx,1

   int 21h

   ret

int21h_40h endp

end

16位汇编 多文件 intel汇编 编译器masm5.0 调用子程序库即静态库的自定义函数 WINDOWS的更多相关文章

  1. 解决QZ-SDK静态库libRPToolLib.a中avfoundation.o文件和kxMovie依赖的ffmpeg静态库libavdevice.a函数重复定义的问题

    解决QZ-SDK静态库libRPToolLib.a中avfoundation.o文件和kxMovie依赖的ffmpeg静态库libavdevice.a函数重复定义的问题 在原来项目中导入全志v3相机的 ...

  2. bmp文件格式中rgb555与rgb888之间的转换,24位与16位位图的转换

    今日,有同事问我.rgb555模式下的位图文件的格式问题,于是花了一下午的时间通过推測与測试,分析出了例如以下bmp文件在rgb555模式下的文件存储规律: 1:bmp文件的文件信息头中的biBitC ...

  3. 链接(extern、static关键词\头文件\静态库\共享库)

    原文链接:http://www.orlion.ga/781/ 一. 多目标文件的链接 假设有两个文件:stack.c: /* stack.c */ char stack[512]; int top = ...

  4. iOS 创建静态库文件时去掉当中的Symbols

    在project中创建静态库文件时.默认会将一些Symbols加到静态库文件里.这样做有两个缺点: 1.假设引用静态库文件的project中发生了bug.就会直接跳转到静态库的源代码. 也许有人问:静 ...

  5. gcc编译器创建和使用静态库、动态库

    http://www.cnblogs.com/dyllove98/archive/2013/06/25/3155599.html 目录树结构: test/include/hello.h #ifdef ...

  6. Linux编译多个不同目录下的文件以及静态库、动态库的使用

    先看两篇博文,作为基础知识.如果对C/C++编译链接过程都了解的话,可以跳过不看. http://www.firedragonpzy.com.cn/index.php/archives/2556 ht ...

  7. C/C++ 关于生成静态库(lib)/动态库(dll)文件如何使用(基于windows基础篇)

    1. 首先,如何制作一个静态库(lib)? 额, 对于静态库,我们知道,里头是不应该有Main函数,它只是一个配合文件.之所以称之为lib静态库,其实就是指,我们需要用到lib里头的函数时,我们才会去 ...

  8. plist文件无法打包进.a静态库中

    问题: 之前一直在做静态库的编写与维护,也一直知道静态库的图片资源是没办法打进.a中的.可是突然有个想法.由于有非常多參数的配置是在一个plist文件里的.尽管也知道这是一个plist文件,可是想想和 ...

  9. 生成静态库.a文件和动态库.so文件

    转载来源:https://www.cnblogs.com/hookjc/ 静态库 在linux环境中, 使用ar命令创建静态库文件.如下是命令的选项: d -----从指定的静态库文件中删除文件 m ...

随机推荐

  1. 大毕设-MATLAB-FFT实现

    引用来自:http://blog.csdn.net/sinwel/article/details/8115673 %仿真参数中的含义 % Ts 表示间隔Ts时间采样,这个越小越接近连续信号,而实际上不 ...

  2. python之路-Day11

    引子 到目前为止,我们已经学了网络并发编程的2个套路, 多进程,多线程,这哥俩的优势和劣势都非常的明显,我们一起来回顾下 协程 协程,又称微线程,纤程.英文名Coroutine.一句话说明什么是线程: ...

  3. cell嵌套UIWebView遇到的几个问题

    一.防止死循环问题 方法一:使用动画块  [self.myTableView beginUpdates];[self.myTableView endUpdates];            在下面的代 ...

  4. 转 Visual C++ 将整合Clang

    原文见:http://www.solidot.org/story?sid=45898 微软在11月释出的Visual C++更新将整合Clang开源C和C++编译器,开发者将可以用Clang编译Win ...

  5. requireJS的引用

    main.js: require.config({ paths: { jquery: 'jquery-1.7.2', biz: 'biz', }}); require(['jquery', 'biz' ...

  6. Spring Framework------>version4.3.5.RELAESE----->Reference Documentation学习心得----->Spring Framework中web相关的知识(概述)

    Spring Framework中web相关的知识 1.概述: 参考资料:官网documentation中第22小节内容 关于spring web mvc:  spring framework中拥有自 ...

  7. iOS架构基础

    1.概念:架构其实是一个设计上的东西,它可以小到类类之间的交互,可以大到不痛的模块之间,可以说不痛的业务部门之间的交互都可以从架构的层面去理解它. 2.解耦 方法一:代理 方法二:通知

  8. thinkphp 验证

    //YongHuModel.class.php namespace Home\Model; use Think\Model; class YongHuModel exstends Model { pr ...

  9. img

    public BitmapImage BitmapToImage(System.Drawing.Bitmap bitmap) { System.Drawing.Bitmap bitmapSource ...

  10. Mongodb 服务(windows环境下)因被强制关闭,导致服务不能启动的处理办法

    环境:windows 8操作系统下 前置条件:因操作系统原因,没有先停止mongodb服务,直接重启操作系统. 导致结果:mongodb服务无法启动,弹出框报错. Windows 无法启动MongoD ...