在WINDOWS XP下 MASM8.0怎么用?

Miracle_lucy 2010-07-19 01:30:00
下了一个masm32 却不知道怎么用??/


我的文件
include irvine32.inc
.data


v1 dword 10000h
v2 dword 40000h
v3 dword 20000h
final dword ?

.code

main proc
mov eax,v1
add eax,v2
sub eax,v3
mov final,eax
call dumpregs
exit

main endp
end main

然后在Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.

C:\Documents and Settings\Administrator>


编译: ml /c /coff yourfile.asm
链接: link /subsystem:windows [/dll] yourfile.obj [yourres.res ...]


但是总是出错
E:\masm32>ml/c/coff 1.asm
'ml' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
怎么回事啊/?、????


[b]望大虾帮忙
...全文
355 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
budongC 2010-07-23
  • 打赏
  • 举报
回复
汇编越来越没用了
G_Spider 2010-07-23
  • 打赏
  • 举报
回复
如果你的软件包在:D:\masm32

--------------------
如果是下面的程序:
.386
.model flat, stdcall
option casemap :none ; case sensitive
include \masm32\include\windows.inc
include \masm32\include\masm32.inc
include \masm32\include\kernel32.inc
include \masm32\macros\macros.asm
includelib \masm32\lib\masm32.lib
includelib \masm32\lib\kernel32.lib
.code
start:
print "Hello world"
exit
end start
------------------
则只需要将命令行切换到D:即可。

-------------------------------

如果你的程序是:

.386
.model flat,stdcall
option casemap:none

include windows.inc
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib
.data
szCaption db 'A MessageBox !',0
szText db 'Hello,World !',0
.code
start:
invoke MessageBox,NULL,offset szText,\
offset szCaption,MB_OK
invoke ExitProcess,NULL
end start

------------------------

环境变量可设为:

@echo off
set include=d:\masm32\include
set lib=d:\masm32\lib
set path=d:\masm32\bin;%path%
echo on

保存为var.bat即可。在命令行运行编译程序时首先运行var.bat即可。

如何找到你的文件呢?

如果在D:\masm32\myfun\em1中

则可以在命令行中先输入D:回车(以切换到D:下)

再输入命令cd \masm32\myfun\em1 回车(以切换到D:\masm32\myfun\em1下)

此时如果你的em1文件夹中有一个foo.asm 文件(将上面的程序保存即可)

则ml /c /coff foo.asm 即可完成目标文件的创建。

再link /subsystem:console foo.obj (不包含res文件等的简单PE可执行文件创建完成)

再foo.exe (回车即可运行)

Miracle_lucy 2010-07-22
  • 打赏
  • 举报
回复
.386
.model flat, stdcall
option casemap :none ; case sensitive

include \masm32\include\Windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib

.data

szCaption db 'Win32汇编例子 ',0
szText db 'Win32汇编,Simple and powerful! ',0

.code

start:
invoke MessageBox,NULL,addr szText,addr szCaption,MB_OK
invoke ExitProcess,NULL

end start
在masm8.0中运行正确

Assembling: E:\masm32\BIN\4.asm
Microsoft (R) Incremental Linker Version 5.12.8078
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

驱动器 E 中的卷是 MEDIA
卷的序列号是 986A-98AA

E:\masm32\BIN 的目录

2010-07-22 21:35 550 4.ASM
2010-07-22 21:57 2,560 4.exe
2010-07-22 21:57 688 4.obj
3 个文件 3,798 字节
0 个目录 42,816,262,144 可用字节


但是去掉绝对路径后
.386
.model flat, stdcall
option casemap :none ; case sensitive

include Windows.inc
include user32.inc
include kernel32.inc
includelib user32.lib
includelib kernel32.lib

.data

szCaption db 'Win32汇编例子 ',0
szText db 'Win32汇编,Simple and powerful! ',0

.code

start:
invoke MessageBox,NULL,addr szText,addr szCaption,MB_OK
invoke ExitProcess,NULL

end start

编译显示 Assembling: E:\masm32\BIN\2.asm
E:\masm32\BIN\2.asm(5) : fatal error A1000: cannot open file : Windows.inc
驱动器 E 中的卷是 MEDIA
卷的序列号是 986A-98AA

E:\masm32\BIN 的目录


查过资料后我将环境设置里的 include设置为E:\masm32\include
lib设置为E:\masm32\\LIB
系统变量里Path设置为E:\masm32\BIN
但是还是不行,是我的解决方法有问题,还是大小写的问题,还是应该做什么批处理之类的???
求解啊。。。大虾
G_Spider 2010-07-22
  • 打赏
  • 举报
回复
难者不会,会者不难,,一个批处理搞定
Miracle_lucy 2010-07-19
  • 打赏
  • 举报
回复
烦躁啊,怎么一个masm32这么纠结啊,编译连接的时候还要输入那么长一串,有事要什么组文件啊,
dos下的masm多简单,就需要 /masm **.asm
/link **.exe
弄完之后直接-debug
又没简单一点的32位的汇编器啊,这么麻烦,怎一个纠结了得!
Miracle_lucy 2010-07-19
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 masmaster 的回复:]
生成列表文件需要加/FL
[/Quote]
不懂,
是不是 ml /c /coff /FL yourfile.asm
Miracle_lucy 2010-07-19
  • 打赏
  • 举报
回复

有出错了,是不是没有irvine32.inc的组文件啊,我加了一个组文件进去也不行啊,
怎么回事是??、?


E:\masm\BIN>ml /c /coff 1.asm
Microsoft (R) Macro Assembler Version 6.14.8444
Copyright (C) Microsoft Corp 1981-1997. All rights reserved.

Assembling: 1.asm
1.asm(1) : fatal error A1000: cannot open file : irvine32.inc
masmaster 2010-07-19
  • 打赏
  • 举报
回复
生成列表文件需要加/FL
zara 2010-07-19
  • 打赏
  • 举报
回复
编译时,/c 和 /coff 间要空格隔开;然后是 asm 文件名: ml /c /coff yourfile.asm
链接时,应该加 /subsystem:console 选项,因为 Irvine32 里的些输出,用的是控制台模式,而非窗口
Miracle_lucy 2010-07-19
  • 打赏
  • 举报
回复
编译了一下,出现错误提示,但是却没有生成.LST文件
为什么啊,
什么情况//???


E:\masm32>cd bin

E:\masm32\BIN>ml/c/coff
Microsoft (R) Macro Assembler Version 6.14.8444
Copyright (C) Microsoft Corp 1981-1997. All rights reserv

MASM : warning A4018: invalid command-line option : /c/cof
MASM : fatal error A1017: missing source filename
E:\masm32\BIN>

mochhk 2010-07-19
  • 打赏
  • 举报
回复
顶一个`~~~~~~~
masmaster 2010-07-19
  • 打赏
  • 举报
回复
如果是win32汇编的话, 用下面的批处理。
D:\MASM>type make32.bat
@echo off
REM make32.bat, for assembling and linking 32-bit Console programs (.EXE)
BIN\ML /c /coff %1.asm
if errorlevel 1 goto terminate
BIN\LINK32 /subsystem:console %1.obj
if errorlevel 1 goto terminate
DIR %1.*
:terminate
@echo on

D:\MASM>
Miracle_lucy 2010-07-19
  • 打赏
  • 举报
回复
怎么没人啊。。。自己顶一个
某人说的,顶贴是一种美德,顶自己的贴是一种情操

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧