как создавать файлы .com с помощью masm 5.10?

.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 привет.asm

вывод этого говорит, что операнд ожидается в строке 1. Пожалуйста, скажите мне, как генерировать com-файлы, используя эту версию masm...


person pflz    schedule 23.04.2011    source источник


Ответы (3)


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

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

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

person Dave    schedule 27.03.2014

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

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

person 640KB    schedule 08.01.2019

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

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

person John Chadwick    schedule 01.07.2011