关于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 打赏 收藏 转发到动态 举报
写回复
用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

21,459

社区成员

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

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