2014-05-09 17 views
0

我有一個問題,我已經被賦予了一個任務來製作一個靜態庫,例如MASM,但是我在網上找到的所有教程對我來說都不完整或太難了解。我使用的是dosbox,因爲我有一個64位的窗口。 請幫忙一步一步 請和謝謝在使用dosbox時在MASM中創建一個庫

+1

我們幫助您解決特定問題,但是一步一步做。 – Jamal

回答

1

我建議只使用DosBox來運行最終的可執行文件。您不需要DosBox來生成此可執行文件,因爲Masm32在64位Windows下運行。但Masm32附帶的lib.exe不生成適用於link16.exe的OMF庫。所以你必須得到一個「說話」OMF的lib.exe,例如DigitalMars的lib.exehttp://www.digitalmars.com/ctg/lib.html)。

實施例:

main.asm中:

.MODEL small 

.code 
EXTERN sub1:NEAR 
main PROC 
    mov ax, @data 
    mov ds, ax 

    call sub1 

    mov ax, 4C00h 
    int 21h 
main ENDP 

.stack 1000h 

END main 

function.asm:

.MODEL small 

.data 
    text db "This is sub1.",13,10,"$" 

.code 
sub1 PROC 
    push ax 
    push dx 

    mov ah, 09h 
    mov dx, OFFSET text 
    int 21h 

    pop dx 
    pop ax 
    ret 
sub1 ENDP 

END 

build.cmd:

@ECHO OFF 
SET PATH=C:\masm32\bin 

ml.exe /c function.asm 
ml.exe /c main.asm 

<Path to DigitalMars>\dm\bin\lib.exe -c main.lib main.obj function.obj 
link16.exe main.lib ; 

在Windows的控制檯中構建它並在DosBox中運行main.exe

+0

謝謝你,先生,我現在要試試這個。 – user3621489

+0

本網站數字火星上的lib.exe文件不可下載。我對你的解釋的理解告訴我,如果沒有that.lib文件,我不能製作最終的庫,你能給我下載鏈接嗎? – user3621489

+0

@ user3621489:我的鏈接指向文檔。但整個C++套件的下載鏈接(使用lib.exe)位於相同的域上:。順便說一句:這是我發現的第一個,最終有更多的「libberers」在那裏:-) – rkhb