社区
汇编语言
帖子详情
关于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文件呢?
...全文
432
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
汇编集成开发环境 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 ...
masm
8.0
汇编编译器
微软最新的编译器,
MASM
8.0
, 其中的Link.exe是VS C++ 2005的版本, 如果单独编译汇编文件ML.exe应该就够了
MASM
8.0
.rar
MASM
8.0
简体中文版需要在安装VC2005下才能正常安装,如果没有装VC2005的话,无法安装,解决
方法
如下:用winrar解压缩
MASM
Setup.exe得到:setup.exe。继续用winrar解压缩setup.exe 得到:vc_
masm
1.cab。继续用winrar...
MASM
8.0
安装程序
x86 汇编语言的编译器
MASM
8.0
。也可以直接从这页下载 http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=7a1c9da0-0510-44a2-b042-7ef370530c64
MASM
8.0
下载 安装
方法
- 微风的日志 - 网易博客
MASM
8.0
下载 安装
方法
- 微风的日志 - 网易博客
汇编语言
21,459
社区成员
41,600
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章