社区
汇编语言
帖子详情
关于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文件呢?
...全文
1429
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
5.0 下编辑的源代码文件命名问题
本文介绍了
使用
MASM
5.0进行汇编代码编译时遇到的文件名长度限制问题。由于
MASM
5.0运行在DOS环境下,对文件名长度有特殊要求,超过8个字符会导致编译失败。文章通过实例分享了解决这一问题的
方法
。
在VC 6.0中编译openssl-0.9.8l版本
本文详细介绍了在VC6.0环境下编译OpenSSL-0.9.8l版本的过程,包括安装Perl、
masm
32,设置编译环境及解决常见问题的
方法
。此外还提供了如何在VC中配置并
使用
OpenSSL库的具体步骤。
使用
VC6调试器源码级调试win32汇编程序
本文介绍了
使用
VC6调试器源码级调试win32汇编程序的
方法
。编程环境为VC6.0和
Masm
32v8,详细说明了新建工程、拷贝文件、配置IDE、制作makefile文件等步骤,完成后即可进行调试,还给出了参考资料和附件下载链接。
汇编语言学习-DOSBox-
MASM
-安装及
使用
教程
本文介绍了如何在DOSBox环境下安装
MASM
并编写、编译、连接及执行汇编语言程序。从下载DOSBox和
MASM
开始,详细讲解了配置DOSBox、创建汇编源程序、
使用
MASM
编译和LINK连接,并最终执行.exe文件的过程。
masm
5.0与
masm
32
本文澄清了
MASM
32开发环境与
MASM
汇编器版本之间的区别。
MASM
32是用于32位微软汇编的环境,常见版本如
8.0
和9.0,而
MASM
编译器(ML)版本如5.0、6.0及后续的6.11、6.13、6.14等。6.15版后,
MASM
不再单独发布开发工具包,而是包含在Visual Studio的不同版本中,包括支持64位CPU的ml64.exe。
汇编语言
21,500
社区成员
41,617
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章