请教一个问题

moplusplus 2008-03-09 04:22:01
我使用masmplus编写了如下语句:
.386
.model flat,stdcall
option casemap:none

include D:\MASMPlus\Include\Irvine32.inc

.data
string1 BYTE "enter:",0

.code
start:
mov edx,offset string1
call WriteString
END start

想输出一条语句.
运行时,系统报错.请教高手应该如何实现?
...全文
72 11 打赏 收藏 举报
写回复
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
UltraBejing 2008-05-01
  • 打赏
  • 举报
回复
好像没那么简单,呵呵.
meiZiNick 2008-04-30
  • 打赏
  • 举报
回复
不会,帮顶
zara 2008-03-11
  • 打赏
  • 举报
回复
编译时就出错, 首选需要确保 Irvine32.inc 文件的存在, 这个上面有朋友提到了的; 其次, 程序的最后还是要加上 ret 指令以确保最后能够正常第结束 (如果是使用楼上有朋友推荐的 invoke ExitProcess, 0 这样的方法来结束程序的话, 一般还需要在程序的开头加上 include kernel32.inc 和 includelib kernel32.lib 这样的语句). 或者, 将编译时的错误信息复制了贴上来看看?
moplusplus 2008-03-11
  • 打赏
  • 举报
回复
请高手推荐一种使用比较方便的汇编编译器
moplusplus 2008-03-10
  • 打赏
  • 举报
回复
回复楼上的高手,我的描述有误,我的程序在编译时报错,没有生成.exe文件.但是你的方法我试了,还是报错.
zara 2008-03-10
  • 打赏
  • 举报
回复
WriteString() 应该是由 Irvine.lib 中定义的, 所以需要 Irvine32.inc 和 Irvine32.lib 等文件的支持. 不过, 既然顶楼说是已经可以在运行了的话, 就不是这个问题吧. 如果缺少这两个文件, Masm32 一般不会给你创建成功最后的可执行程序文件的.
moplusplus 2008-03-09
  • 打赏
  • 举报
回复
但我看intel汇编语言程序设计上的范例并没有包括WriteString.inc,而是只包含Irvine32.inc
BAYNPU 2008-03-09
  • 打赏
  • 举报
回复
可能是缺少这个文件WriteString.inc吧.
moplusplus 2008-03-09
  • 打赏
  • 举报
回复
还有一个问题
为什么系统会说WriteString 无法使用呢?它不是系统的函数吗?
BAYNPU 2008-03-09
  • 打赏
  • 举报
回复
试一试吧:
.386
.model flat ,stdcall
NULL equ 0
MB_OK equ 0

ExitProcess PROTO :DWORD
MessageBoxA PROTO :DWORD,:DWORD,:DWORD,:DWORD
include Include\Irvine32.inc
includelib kernel32.lib
includelib user32.lib
.data
string1 db "enter:",0
.code
start:
push MB_OK
push eax
lea eax,string1
push eax
push NULL
call messageboxa
xor eax,eax
push eax
call exitprocess
end start
zara 2008-03-09
  • 打赏
  • 举报
回复
在 END start 语句前加上 ret 指令试试?
发帖
汇编语言

2.1w+

社区成员

汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
帖子事件
创建了帖子
2008-03-09 04:22
社区公告
暂无公告