Windows编程:(一)汇编Hello World

万事都讲究缘起,这次的缘起是要用WinDbg调试界面卡死。看不懂WinDbg的结果。以前都是靠猜,很受打击,索性学习一下。

主要学习了几个步骤:1. 什么是汇编?汇编的来龙去脉是啥?为什么需要汇编?它与C/C++有什么联系?2.跑一个汇编的Hello World。

前几个问题,我就直接摘抄了。

着重说一下跑Hello World,是跑通,不是编写。

1. 找一个汇编的Hello World。相信我,这个并不容易。程序虽多,满足我苛刻要求的需要仔细筛选。我需要:Windows,x64的。网上多是Linux的,或者x86。

;-----------------------------------
;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
View Code

 

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

 

posted @ 2024-03-13 16:46  Luke Zhang  阅读(17)  评论(0编辑  收藏  举报