社区
汇编语言
帖子详情
关于masm 8.0的使用方法
linwu871105
2010-05-06 07:17:28
我汇编源文件名为 123.asm
我汇编成功了,接着连接,使用link命令:
link 123.obj
接着出现:
Run File [123.exe]:
我按Enter键,接着出现:
List File [NUL:MAP]:
我继续按Enter键,出现:
Libaries [.LIB]:
请问这三个冒号之后该填写什么,才能把123.obj连接成123.exe文件呢?
...全文
1244
6
打赏
收藏
关于masm 8.0的使用方法
我汇编源文件名为 123.asm 我汇编成功了,接着连接,使用link命令: link 123.obj 接着出现: Run File [123.exe]: 我按Enter键,接着出现: List File [NUL:MAP]: 我继续按Enter键,出现: Libaries [.LIB]: 请问这三个冒号之后该填写什么,才能把123.obj连接成123.exe文件呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
linwu871105
2010-05-07
打赏
举报
回复
那么用什么来调试呢?是ollydbg吗,我不会用,你有教程吗?
BAYNPU
2010-05-06
打赏
举报
回复
麻烦!还不如去下载一个集成环境编译器:
http://www.aogosoft.com/masmplus/idesetup.exe
linwu871105
2010-05-06
打赏
举报
回复
我的程序是32为汇编。源程序如下:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 这是一个模式对话框程序,该程序用于使用动态链接库程序.
;你也可以直接双击“实例11的程序运行结果”运行该程序的运行结果
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.386
.model flat, stdcall
option casemap:none
;**************头文件和导入库文件****************************
include windows.inc
include user32.inc
include kernel32.inc
includelib user32.lib
includelib kernel32.lib
;**************用于定义一个函数指针类型************
FUNPROTO typedef proto :DWORD, :DWORD
PFUN typedef ptr FUNPROTO
;**************equ******************************
IDD_DIALOG_APP equ 101
IDC_BUTTON_ADD equ 1000
IDC_BUTTON_DEC equ 1001
IDC_EDIT equ 1002
IDC_BUTTON_LOAD equ 1003
IDC_BUTTON_UNLOAD equ 1004
;**************data?****************************
.data?
hInstance HINSTANCE ?
CommandLine LPSTR ?
buffer db 512 dup(?)
hLib DWORD ?
dwFunctionAddr dd ?
pFun PFUN ? ;---定义一个函数指针类型的变量.---
;**************常量******************************
.const
AppName db "App1",0
szFunctionName2 db "DecVal",0
szFunctionName1 db "AddVal",0
szLibName db "MyDLL.dll",0
DllNotFound db "The MyDLL.dll could not be found.",0
FunctionNotFound db "The Function could not be found.",0
;**************代码段****************************
.code
DlgProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
.if uMsg == WM_INITDIALOG
invoke SetDlgItemInt, hWnd, IDC_EDIT, 11, FALSE
.elseif uMsg == WM_CLOSE
.if hLib
invoke FreeLibrary, hLib
.endif
invoke EndDialog, hWnd,NULL
.elseif uMsg == WM_COMMAND
mov eax, wParam
.if ax == IDC_BUTTON_ADD
;------------------------------------------------------
; 在得到了动态链接库的句柄后再把您要调用的函数的名称一起
; 传给GetProcAddress函数.
; 如果成功的话它:会返回想要的函数的地址,失败的话返回NULL。
; 除非卸载该动态链接库否则函数的地址是不会改变的,
; 所以您可以把它保存到一个全局变量中以备后用。
;------------------------------------------------------
invoke GetProcAddress, hLib , addr szFunctionName1
.if eax == NULL
invoke MessageBox,NULL,addr FunctionNotFound,addr AppName,MB_OK
.else
;-----------------------------------------------
; 调用函数时要先把函数的变量压栈,
; 并且要把包含函数地址信息的变量用方括号括起来。
; 由于这些函数没有经过原型定义,因此不能使用invoke宏来调用函数.
;-----------------------------------------------
mov dwFunctionAddr,eax
push IDC_EDIT
push hWnd
call [dwFunctionAddr]
.endif
.elseif ax == IDC_BUTTON_DEC
invoke GetProcAddress,hLib,addr szFunctionName2
.if eax == NULL
invoke MessageBox,NULL,addr FunctionNotFound,addr AppName,MB_OK
.else
mov pFun, eax
invoke pFun, hWnd, IDC_EDIT
.endif
.elseif ax == IDC_BUTTON_LOAD
;-----------------------------------------------
; 调用LoadLibrary,其参数是欲加载的动态链接库的名称。
; 如果调用成功,将返回该DLL的句柄。 否则返回NULL。
; 该句柄可以传给 :library函数和其它需要使用动态链接库句柄的函数。
;-----------------------------------------------
invoke LoadLibrary,addr szLibName
.if eax == NULL
invoke MessageBox,NULL,addr DllNotFound,addr AppName,MB_OK
.else
mov hLib,eax
.endif
.elseif ax == IDC_BUTTON_UNLOAD
;-----------------------------------------------
; 调用FreeLibrary卸载动态链接库。
;-----------------------------------------------
invoke FreeLibrary, hLib
mov hLib, 0
.endif
;-----------------------------------------------
; 如果送到该对话框过程的消息不是上面这些,
; 那么返回FALSE让系统的对话框管理器去处理这些消息,
; 否则返回TRUE来告诉系统已经处理过该消息。
;-----------------------------------------------
.ELSE
mov eax,FALSE
ret
.ENDIF
mov eax,TRUE
ret
DlgProc endp
;======================================================================
start:
;-----------------------------------------------
; 主程序段,程序的入口处
;-----------------------------------------------
invoke GetModuleHandle, NULL
invoke DialogBoxParam, eax, IDD_DIALOG_APP, NULL, DlgProc, NULL
invoke ExitProcess, NULL
;-----------------------------------------------
end start
linwu871105
2010-05-06
打赏
举报
回复
用楼上的方法,控制台显示:
LINK:fatal error L1002:SUBSYSTEM:unrecognized option name
linwu871105
2010-05-06
打赏
举报
回复
楼上,用你那方法,我电脑不能辨认“SUBSYSTEM"
大熊猫侯佩
2010-05-06
打赏
举报
回复
16位dos程序直接用: ml xxx.asm
32位程序 : ml /c /coff xxx.asm
link /subsystem:console xxx.obj
MASM
8.0
下载 安装
方法
- 微风的日志 - 网易博客
MASM
8.0
下载 安装
方法
- 微风的日志 - 网易博客
masm
8.0
汇编语言开发工具
在网上好不容易找到的学习汇编语言的好东西,现在拿来与大家分享,因为东西不容易找,就多要点分,希望大家原谅。
masm
8.0
汇编编译器
微软最新的编译器,
MASM
8.0
, 其中的Link.exe是VS C++ 2005的版本, 如果单独编译汇编文件ML.exe应该就够了
MASM
8.0
汇编集成开发环境
MASM
8.0
汇编集成开发环境 Many remember assembler as a complex and tedious necessity when a high level language failed to deliver in terms of capacity or performance yet it has always been capable of writing full size applications in elegant and efficient ways.
MASM
has the capacity to write proper modular code which becomes a necessity as a project becomes larger.
MASM
8.0
.rar
MASM
8.0
简体中文版需要在安装VC2005下才能正常安装,如果没有装VC2005的话,无法安装,解决
方法
如下:用winrar解压缩
MASM
Setup.exe得到:setup.exe。继续用winrar解压缩setup.exe 得到:vc_
masm
1.cab。继续用winrar解压缩vc_
masm
1.cab得到:FL_ml_exe__..... (很长的文件名,省略),将这个文件重命名为ml.exe。测试得到的ml.exe , 应该显示: Microsoft (R) Macro Assembler Version
8.0
0.50727.104。将ml.exe 拷贝到你的工作目录,即可正常
使用
。
汇编语言
21,498
社区成员
41,617
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章