jjzjj

windows - 将数组传递给 x86 asm 中的函数

我正在学习x86asm并使用masm,并且正在尝试编写一个与以下c函数具有等效签名的函数:voidfunc(doublea[],doubleb[],doublec[],intlen);我不确定如何实现它?asm文件会被编译成win32DLL。为了让我明白如何做到这一点,有人可以帮我把这个非常简单的函数翻译成asm吗:voidfunc(doublea[],doubleb[],doublec[],intlen){//a,b,andchavethesamelength,givenbylenfor(inti=0;i我尝试用C语言编写一个这样的函数,编译它,然后使用OllyDbg查看exe中相应

windows - assembly :将某些东西打印到屏幕(到命令行)的最佳方法是什么

我一直在做一些研究,但我只是找到了越来越多的方法来做我想做的事,而我一个都不懂。我需要将什么代码组装成.exe才能将5返回到命令行?我想要一个exe,在调用时打印5。研究:printf"5",0它需要链接2个库,我想保持简单。moveebx,5;ormoveax,5ret为什么会打印5?这会加载一个值为5的寄存器并返回。没有别的。谁能给我解释一下这些返回5的方式之间的区别?什么最适合非常简单的WindowsEXE可执行文件?我无法在StackOverflow中已经提出的问题中得到答案。注意,我使用:Win7、WinAsam、MASM谢谢! 最佳答案

windows - 一个简单的 MASM32 程序的奇怪行为

我想编写类似于以下C++程序的MASM程序:#include#includetypedefUINT(_stdcall*FuncPtr)(LPCSTRlpCmdLine,UINTuCmdShow);intmain(void){HMODULEhDll=LoadLibrary(TEXT("Kernel32.dll"));FuncPtrfunc_addr=reinterpret_cast(GetProcAddress(hDll,"WinExec"));(*func_addr)("C:\\WINDOWS\\system32\\calc.exe",SW_SHOWDEFAULT);FreeLibra

windows - 如何更改 MASM32 中的链接器设置

我在Windows7(64位)中使用MASM32编辑器。默认情况下,我的链接器是“增量链接器版本5.12.8078”,它不链接我的程序。我想使用这个链接器“Microsoft(R)分段可执行链接器版本5.60.3391994年12月5日”。请告诉我如何更改我的MASM32设置并使其成为默认链接器 最佳答案 在编辑器中加载\masm32\menus.ini(您可以使用MASM32编辑器)。向下滚动到&RunProgram,"{b}.exe"[&Tools]插入两行:&RunProgram,"{b}.exe"-Build16-bit,c

windows - ReadConsoleInputA 引发访问冲突

我正在尝试学习如何使用Windowsapi(而不是仅仅使用C调用、irvine32或masm32)并且遇到了ReadConsoleInputA的问题(WriteConsoleA工作正常)。此外,我不明白为什么在函数的PROC原型(prototype)中,大多数示例在ReadConsoleInput/WriteConsole的末尾附加一个A或W,您能解释一下为什么吗?.dataconsoleOutHandledd?consoleInHandledd?bufferlendd?bufferdb?bufferSizeDWORD?messagedb"Enteranumber:",0lmessag

windows - 将字符串参数传递给 PROC

我想调用一个函数,该函数将对用户键入的字符串执行大写到小写的转换,同时保留特殊字符。这部分有效,但仅适用于前4个字符,之后的所有字符都会被截断。我相信这是因为我将参数定义为DWORD:我试过使用PAGE、PARA和BYTE。前两个不起作用,字节表示类型不匹配。upperToLowerproc,source:dword,auxtarget:dwordmoveax,source;Pointtostringmovebx,auxtarget;pointtodestinationL1:movdl,[eax];Getacharacterfrombuffercmpbyteptr[eax],0;End

windows - 使用 MASM 将寄存器输出到控制台

有一天我开始学习ASM,我已经完成了一些教程,甚至成功地修改了教程内容以使用jmp和cmp等代替MASM.if和.while宏。在我继续更高级的教程之前,我决定先尝试编写一些非常非常简单的东西。我正在写一个斐波那契数生成器。这是我到目前为止的来源:.386.modelflat,stdcalloptioncasemap:noneinclude\masm32\include\windows.incinclude\masm32\include\kernel32.incinclude\masm32\include\masm32.incincludelib\masm32\lib\kernel32

windows - 调用ExitProcess时应该如何准备堆栈?

我正在尝试学习如何在汇编中调用操作系统函数,并得到了一个示例,该示例将创建并关闭一个文件(在关闭时删除该文件)。在研究ExitProcess的用法时,我遇到了一些清理堆栈的示例,有些则没有;更令人困惑的是,不管有没有清理步骤,事情似乎都能正常工作……在这种情况下处理堆栈的正确方法是什么?externCloseHandle:procexternCreateFileA:procexternExitProcess:procincludeFileAccess.incincludeFileDisposition.incincludeFileFlag.incincludeFileShare.inc

微机原理与接口技术课内实验-NUAA-Masm for Windows

目录1、软件下载: MasmforWindows2015(友好的文本编辑器,但是运行和调试仍会调出dosbox。)2、 做亿点点说明3、命令行方式运行汇编:(实验四会用到,终究逃不过)4.实验报告1、软件下载: MasmforWindows2015(友好的文本编辑器,但是运行和调试仍会调出dosbox。)https://sm.myapp.com/original/Office/wasm2015.rar上来先下一步然后选择安装目录(非c盘就行!) 然后下一步安装  安装完成后打开文件 在非C盘新建一个工作区,如D盘  新建一个xxx.asm文件然后拖到软件里,然后输入上这串代码:(hellowo

windows - 汇编编程和过程调用的问题

我正在使用MASM进行一些汇编编程。当我尝试运行我的程序时,它会在遇到“callmyFunction”时立即崩溃,即使我已经从过程中删除了所有代码。这是我的代码,如有任何帮助,我们将不胜感激。.486.modelflat.stack100hExitProcessPROTONEAR32stdcall,dExitCode:DWORD.code_start:callmyFunctionINVOKEExitProcess,0PUBLIC_startmyFunctionprocnear32myFunctionendpEND 最佳答案 将myF