码迷,mamicode.com
首页 > Windows程序 > 详细

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

时间:2016-11-08 07:43:46      阅读:271      评论:0      收藏:0      [点我收藏+]

标签:win   定义   ***   world   5.0   自定义   code   字符串   标准   

;以下是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

标签:win   定义   ***   world   5.0   自定义   code   字符串   标准   

原文地址:http://www.cnblogs.com/ipv10/p/6041265.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!