.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文件...
答案 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下使用。