问题标签 [fasm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
string - FASM - 简单:lstrcpy & lstrcat - 结果字符串不正确
我正在尝试在 FASM 中完成一项简单的任务,我已经为此苦苦挣扎了大约两个小时。
我已经用目标和问题评论了代码,但我会解释。
我正在尝试将特定文件的路径存储到变量中。该文件位于临时目录中。所以我必须先获取临时路径,然后将文件名附加到临时路径的末尾。
我正在尝试按顺序执行两次。但由于某种原因,我得到的字符串最终“搞砸了”。
我目前的代码如下:
任何解决此问题的帮助将不胜感激。谢谢!
winapi - FASM - 如果文件存在 - 使用 GetFileAttributes - INVALID_FILE_ATTRIBUTES 值?
我在 FASM 中使用 GetFileAttributesA 来确定文件是否存在。我知道如果文件不存在,则返回值将是 INVALID_FILE_ATTRIBUTES,但我不确定如何检查该值。
我的代码:
看到编译器无法将 INVALID_FILE_ATTRIBUTES 识别为值:
不管用。
有谁知道这个常量的值,以便我可以手动输入它?
任何帮助表示赞赏。谢谢
在 Jens Björnhager 回复后,以下是其他感兴趣的人的工作代码:
甚至:
再次感谢 Jens Björnhager!
if-statement - FASM - x64 与 x86
我在使用 windows vista x86 时在 FASM 中做了一个简单的应用程序。该应用程序编译并运行良好,没有任何错误。
然后,我将相同的源代码(实际上是相同的文件)移动到我的另一台运行 windows vista x64 的 PC 上。在编译源代码时,我收到了错误。
在 x86 上,我可以简单地开始:
在 x64 上编译时,我必须使用类似于以下内容的内容:
另一个问题(我主要关心的)是在 x86 上我可以使用:
但是在 x64 上编译相同的代码时,我得到“非法指令”,并突出显示以下行:
在 x64 上执行此操作是否有不同的方法?
另外,我如何编码到两者都兼容的地方?我想,如果我在 x86 上编译,那么结果输出会在 x64 上运行良好吗?
最后,这可能与架构之外的其他事情有关吗?
api - FASM - 添加启动 HKCU
我正在尝试通过在“SOFTWARE\Microsoft\Windows\CurrentVersion\Run”中添加一个条目来使我的 FASM 应用程序将自身添加到系统启动中
我正在使用以下 API:
RegOpenKeyExA
RegSetValueExA
RegCloseKey
在 advapi32.dll
运行我的代码时,永远不会创建该条目。这是我的代码:
我不明白为什么我的条目没有被添加到注册表中。对此问题的任何帮助将不胜感激。
尝试使用 OllyDbg 并提出以下建议:
不知道为什么我会收到拒绝访问错误。RegOpenKeyExA 返回 ERROR_SUCCESS
原来它正在将自己添加到启动中,但在 RegEdit 中不可见,仅在 MSConfig..weird..?
64-bit - FASM - IsWow64Process - 检查布尔结果
我正在尝试确定运行我的应用程序的 PC 是 x64 还是 x86。
这是我当前的代码:
它只是在执行时崩溃。
检查布尔值的正确方法是什么,我是否正确执行了该部分?
感谢您为解决此问题提供的任何帮助。
assembly - 环境变量 - 启动文件夹
启动文件夹是否有环境变量。
在 XP 上它位于 C:\Documents and Settings(user)\Start Menu\Programs\Startup 下,而在 vista 7 下它位于 Appdata\Microsoft\Windows\Start Menu\Programs\Startup\
所以我想知道这个文件夹是否有 EnVar?
delphi - FASM - 将字符串传递给 Delphi DLL
我有一个用 Delphi XE2 编码的 dll,代码如下:
现在,我在 FASM 应用程序中导入这个函数,如下所示:
使用方式如下:
但是生成的消息框出现扭曲的字符,如下所示:
这是函数调用的确切结果。
我该如何解决这个问题?
assembly - 如何使用 FASM 控制台进行编译
我正在尝试制作一个程序集 IDE,它允许用户输入代码并使用 NASM、FASM、YASM 等进行编译。但是,由于 FASM 带有 IDE,因此我找不到任何有关使用控制台编译的信息。例如,如果我有一个程序 test.asm,我会这样编译:
如果我这样做了,fasm.exe 必须与我假设的命令提示符运行在同一目录中。谢谢你的帮助。
windows - 从程序集中调用 Windows API 但没有硬编码地址
我在阅读 fasm 源代码时在 windows XP 环境中学习 fasm,我发现调用宏
并导入宏。
但我找不到 MessageBoxA 的任何硬编码地址,也找不到在汇编代码中加载 user32.dll 。只有宏定义标记字符串而不是地址。
我的假设是这样
有代码加载 user32.dll 并返回加载的 dll 的起始地址 => 这里,让我们调用返回的地址到位置 A
有硬编码地址和标签对(例如 MessageBoxA = 0x00000000)
所以指令'call'可以调用MessageBoxA标签(将转换为位置A + MessageBoxA偏移量)
我的假设错了吗?我想知道如何调用 API。
谢谢
winapi - FASM 中的 GdiGradientFill 存在问题
我正在尝试编写我最近开发的 Java 应用程序的 ASM 版本,作为 Win32 ASM 中的一个项目,但正如标题所述,我遇到了 GdiGradientFill 问题;目前,我更喜欢使用 FASM,并避免使用更高级别的 ASM 构造,例如 INVOKE 和使用 WIN32 包含。
我有什么,atm:
但是,代码只返回一个 FALSE,并且在通过两个 MSDN ( http://msdn.microsoft.com/en-us/library/windows/desktop/dd373585(v=vs.85).aspx )
和其他一些例子(http://www.asmcommunity.net/board/index.php?topic=4100.0),我仍然看不到我做错了什么,谁能看到这里的缺陷?
另一个问题是我尝试使用 Msimg32 的 GradientFill,因为这总是会导致崩溃,但是,我看到一些报告说 Win2K+ 操作系统只是将参数从 Msimg32 传递到 GDI32;这是准确的,还是有其他人遇到过这种表格的问题?
整个代码的 Pastebin 链接:http: //pastebin.com/GEHDw6Qe
谢谢你的帮助,SS
编辑:代码现在正在工作,老实说,我不知道发生了什么变化,除了将 PUSH / POP 序列更改为 MOV EAX,[rectClient.left] 之外,我看不出以前和现在的工作数据之间有什么不同,等(PUSH / POP 方法也有效) - 非常感谢那些提供帮助的人!