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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了16位汇编 多文件 intel汇编 编译器masm5.0 调用子程序库即静态库的自定义函数 WINDOWS相关的知识,希望对你有一定的参考价值。

;以下是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的主要内容,如果未能解决你的问题,请参考以下文章

MASM 32位汇编 32与16汇编区别

masm 16位汇编语法

masm 16位汇编语法

汇编语言16位环境搭建(Windows 7 32位)

masm 16位汇编 函数原理

masm 16位汇编 函数原理