我決定學習彙編的今天,因爲它似乎這是一個非常強大的工具,但我不知道從哪裏開始學習它,所以我用Google搜索了一下,發現這樣的: https://www.tutorialspoint.com/assembly_programming不能執行彙編程序
它告訴我安裝NASM和MinGW進行編譯和鏈接,所以我下載並安裝了它並確保它們都正常工作。
我複製給定的代碼
section .text
global _start ;must be declared for linker (ld)
_start: ;tells linker entry point
mov edx,len ;message length
mov ecx,msg ;message to write
mov ebx,1 ;file descriptor (stdout)
mov eax,4 ;system call number (sys_write)
int 0x80 ;call kernel
mov eax,1 ;system call number (sys_exit)
int 0x80 ;call kernel
section .data
msg db 'Hello, world!', 0xa ;string to be printed
len equ $ - msg ;length of the string
,並通過編寫
nasm -f elf hello.asm
(later nasm -f win32 hello.asm)
事後
ld hello.o -o hello.exe
(later ld hello.obj -o hello.exe)
它粘貼到名爲 「hello.asm」 一個空文件和編譯它並且它成功地創建了一個.exe文件,但是當我試圖執行它時,它只能打開風運行命令提示符並打開一個新窗口,提示「hello.exe不再工作」。
我知道這不會輸出任何東西,但它不應該至少運行?
我做錯了什麼?
使用:
- Windows 7專業版64位
- AMD FX 4350
- NASM,02年2月12日
- MinGW
這是一個Linux教程,這不適用於Windows。 – tkausl
所以組裝是特定的嗎? –
不,但系統調用是('int 0x80') – tkausl