如何使用masm 5.10创建.com文件?

时间:2011-04-23 22:21:51

标签: masm

.model tiny
.code

org 100h

host:
    mov ah,9
    mov dx,offset hi
    int 21h

    mov ax,4c00h
    int 21h

hi db 'HELLO'
end host

c:masm hello.asm

输出结果表示第1行的操作数。请告诉我如何使用此版本的masm生成com文件...

3 个答案:

答案 0 :(得分:4)

我知道这会引发一条长长的死路线,但我想我会在这里发出声音,因为我无法在网上轻易找到答案。

无法使用5.1,但您可以使用EXE2BIN(只需在谷歌搜索)将其转换为com文件。

您也可以使用6.11,可以在http://www.phatcode.net/downloads.php?id=175找到。

一旦你开始运行,你的世界应用程序将是:

.MODEL TINY
.DOSSEG     ; Make sure you are using dos segment CODE, DATA + STACK
.DATA
    MSG     DB  "Hello, World!", 0Dh, 0Ah, '$'
.CODE
.STARTUP    ; Setup the starting address otherwise you'll see:
            ; LINK : warning L4055: start address not equal to 0x100 for /TINY
    MOV     AH, 09h
    MOV     DX, OFFSET MSG
    INT     21h
    MOV     AH, 4Ch
    INT     21h
END

编译:ML / AT HELLO.ASM(/ AT启用.MODEL TINY)

它应该在没有警告或在DOSBOX中的MS-DOS 6.22下的MASM 6.11上测试错误的情况下进行编译。

希望这可以帮助那些遇到与我相同问题的人。

答案 1 :(得分:2)

可以在MASM 5.1(或更早版本)中完成。从MASM 5.0文档中,这是测试程序的基本外壳。

        TITLE COMFILE
_TEXT   SEGMENT
        ASSUME CS:_TEXT,DS:_TEXT,ES:_TEXT,SS:_TEXT
        ORG     100H

START:

    mov ah,9
    mov dx,offset hi
    int 21h

    mov ax,4c00h
    int 21h

    hi db 'HELLO','$'

_TEXT ENDS
END START

使用上述名为COMFILE.ASM的文件,请按照以下步骤组装并转换为.com:

A>MASM COMFILE;
Microsoft (R) Macro Assembler Version 5.00 
Copyright (C) Microsoft Corp 1981-1985, 1987.  All rights reserved.


  51668 + 464828 Bytes symbol space free

      0 Warning Errors
      0 Severe  Errors

A>LINK COMFILE;

Microsoft (R) Overlay Linker  Version 3.60
Copyright (C) Microsoft Corp 1983-1987.  All rights reserved.

LINK : warning L4021: no stack segment

A>EXE2BIN COMFILE.EXE COMFILE.COM

哪个应该产生:

A>DIR COMFILE.COM

 Volume in drive A has no label
 Directory of  A:\

COMFILE  COM       18  01-01-80   12:00p
        1 File(s)     30208 bytes free

A>COMFILE.COM
HELLO

是的,这里有些线程坏死了。我也无法在其他地方找到清晰,可行的示例,因此希望这对以后的人有所帮助。

答案 2 :(得分:1)

MASM 6.0是MASM的第一个版本,能够使用微型内存模型,因此能够生成COM文件的MASM的第一个版本。在互联网上找到MASM 6.11的副本并不是非常困难,如果需要,MASM 6.11仍然可以在纯DOS下使用。

来源:http://support.microsoft.com/kb/24954