Как создать файлы .com с помощью MASM 5.10? - PullRequest
1 голос
/ 24 апреля 2011
.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. Пожалуйста, скажите мне, как генерировать com-файлы, используя эту версию masm ...

Ответы [ 3 ]

4 голосов
/ 27 марта 2014

Я знаю, что это поднимает длинную мертвую ветку, но я думал, что я перезвоню здесь, так как я не мог найти ответ на этот вопрос очень легко.

Невозможно сделать с 5.1, однако вы можете использоватьEXE2BIN (просто поиск в Google), чтобы преобразовать его в com-файл.

Вы также можете использовать 6.11, который можно найти по адресу http://www.phatcode.net/downloads.php?id=175.

После того, как вы запустите, ваше приложение hello worldбудет:

.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)

Компилируется без предупреждений и ошибок, проверенных на MASM 6.11 под MS-DOS 6.22 в DOSBOX.

Надеюсь, это поможет кому-то, кто имел ту же проблему, что и я.

2 голосов
/ 08 января 2019

Это можно сделать в 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

Небольшая некромантия нити здесь, да.Я также не смог найти четкого, работающего примера этого в другом месте, так что, надеюсь, это поможет кому-то в будущем.

1 голос
/ 01 июля 2011

MASM 6.0 была первой версией MASM, способной использовать крошечную модель памяти, и, следовательно, первой версией MASM, способной генерировать COM-файлы.Нетрудно найти копии MASM 6.11 в Интернете, и MASM 6.11 по-прежнему можно использовать в чистом DOS, если это необходимо.

Источник: http://support.microsoft.com/kb/24954

...