User interface 装配->;桂?
有没有办法将在TASM汇编中编程的应用程序链接到windows窗体应用程序或任何类型的GUIUser interface 装配->;桂?,user-interface,assembly,User Interface,Assembly,有没有办法将在TASM汇编中编程的应用程序链接到windows窗体应用程序或任何类型的GUI 谢谢您可以将汇编语言与C语言(可能还有其他语言)混合使用。 最通用的方法是在汇编中编写DLL,然后从GUI程序调用此DLL。 在C语言中,您还可以直接将程序与汇编程序生成的对象文件链接,只要遵循C约定即可 本教程很好地解释了C约定,但使用了NASM: 您应该注意到,TASM确实过时了,我怀疑除了教师之外,很少有人还在使用它。用汇编语言开发GUI应用程序是有价值的! 您可以在汇编中为Windows、Lin
谢谢您可以将汇编语言与C语言(可能还有其他语言)混合使用。 最通用的方法是在汇编中编写DLL,然后从GUI程序调用此DLL。 在C语言中,您还可以直接将程序与汇编程序生成的对象文件链接,只要遵循C约定即可 本教程很好地解释了C约定,但使用了NASM: 您应该注意到,TASM确实过时了,我怀疑除了教师之外,很少有人还在使用它。用汇编语言开发GUI应用程序是有价值的! 您可以在汇编中为Windows、Linux或任何其他具有图形用户界面的操作系统创建GUI应用程序 即使使用TASM,您也可以创建它们,尽管我不确定这到底要怎么做。请注意,您将需要支持32位/64位保护模式指令的TASM版本,以及一个可以将TASM生成的对象文件链接到PE可执行文件(Windows的可执行格式)的链接器 因此,如果您不必使用TASM,那么还有更简单的选择。从2000年开始,人们就在积极地为Windows和其他32位平台进行汇编编程。选择的汇编程序是,和 第一个——FASM——是我的最爱,因为:
include 'win32ax.inc'
.code
start:
invoke MessageBox,HWND_DESKTOP,"Hellow world!", "Hello!", MB_OK
invoke ExitProcess,0
.end start
; Template for program using standard Win32 headers
format PE GUI 4.0
entry start
include 'win32w.inc'
section '.text' code readable executable
start:
invoke GetModuleHandle,0
mov [wc.hInstance],eax
invoke LoadIcon,0,IDI_APPLICATION
mov [wc.hIcon],eax
invoke LoadCursor,0,IDC_ARROW
mov [wc.hCursor],eax
invoke RegisterClass,wc
test eax,eax
jz error
invoke CreateWindowEx,0,_class,_title,WS_VISIBLE+WS_DLGFRAME+WS_SYSMENU,128,128,256,192,NULL,NULL,[wc.hInstance],NULL
test eax,eax
jz error
msg_loop:
invoke GetMessage,msg,NULL,0,0
cmp eax,1
jb end_loop
jne msg_loop
invoke TranslateMessage,msg
invoke DispatchMessage,msg
jmp msg_loop
error:
invoke MessageBox,NULL,_error,NULL,MB_ICONERROR+MB_OK
end_loop:
invoke ExitProcess,[msg.wParam]
proc WindowProc uses ebx esi edi, hwnd,wmsg,wparam,lparam
cmp [wmsg],WM_DESTROY
je .wmdestroy
.defwndproc:
invoke DefWindowProc,[hwnd],[wmsg],[wparam],[lparam]
jmp .finish
.wmdestroy:
invoke PostQuitMessage,0
xor eax,eax
.finish:
ret
endp
section '.data' data readable writeable
_class TCHAR 'FASMWIN32',0
_title TCHAR 'Win32 program template',0
_error TCHAR 'Startup failed.',0
wc WNDCLASS 0,WindowProc,0,0,NULL,NULL,NULL,COLOR_BTNFACE+1,NULL,_class
msg MSG
section '.idata' import data readable writeable
library kernel32,'KERNEL32.DLL',\
user32,'USER32.DLL'
include 'api\kernel32.inc'
include 'api\user32.inc'
使用标准WinAPI创建UI。所有Windows C++将提供有关如何创建Windows和处理消息泵的简单示例。如果您真的需要一个代码位的疯狂性能,并且相信您可以击败一个优化的C编译器,那么只在汇编中只写关键位就更合理了。我可以确认,你也可以用Delphi编译器/liker将汇编程序生成的[某些]对象文件链接到GUI中。“沃斯”是什么意思?它是否有效,即是否可行?当然是。这值得做吗?我不同意。@MattiVirkkunen这意味着用汇编语言一制作应用程序可以提供最好的软件产品质量(高速、低资源利用率),而比用其他语言制作应用程序所需的工作量要少。如果您愿意接受次优质量,是的,其他一些语言可以提供更便宜的开发。同样,您可以在其他语言中提供最好的质量,但这将比在汇编语言中更难。