Windows编程:(一)汇编Hello World
万事都讲究缘起,这次的缘起是要用WinDbg调试界面卡死。看不懂WinDbg的结果。以前都是靠猜,很受打击,索性学习一下。
主要学习了几个步骤:1. 什么是汇编?汇编的来龙去脉是啥?为什么需要汇编?它与C/C++有什么联系?2.跑一个汇编的Hello World。
前几个问题,我就直接摘抄了。
着重说一下跑Hello World,是跑通,不是编写。
1. 找一个汇编的Hello World。相信我,这个并不容易。程序虽多,满足我苛刻要求的需要仔细筛选。我需要:Windows,x64的。网上多是Linux的,或者x86。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
;----------------------------------- ;Descr : My First 64-bit MASM program ;ml64 prog.asm /c ;golink /console /entry main prog.obj msvcrt.dll, or ;gcc -m64 prog.obj -o prog.exe (main/ret). This needs 64-bit GCC. ;----------------------------------- extrn printf:proc extrn exit:proc .data hello db 'Hello 64-bit world!',0ah,0 .code main proc mov rcx,offset hello sub rsp,20h call printf add rsp,20h mov rcx,0 call exit main endp end
2. 使用ML64.exe编译生产obj文件。因为我安装了Visual Studio,不想另外安装MASM了。
命令如下:
ml64.exe /Fo HelloWorld.obj /c HelloWorld.asm
这里的注意事项是,要启动Visual Studio的64位命令行,截图如下:
3. 使用x64的gcc链接生产exe文件
命令如下:
gcc -m64 HelloWorld2.obj -o HelloWorld2.exe
4. 执行EXE
命令如下:
HelloWorld.exe