2013-04-03 17 views
1

我一直在做一些研究,但我只找到越來越多的方法來做我想做的事,我不明白他們中的任何一個。裝配:什麼是最好的方式來打印屏幕(到命令行)

我需要將哪些代碼彙編到一個.exe文件中以將5返回到命令行?

我想要一個exe文件,當被調用時打印5

研究:

printf "5", 0 

它需要用2個庫鏈接,和我想保持簡單。

move ebx, 5 ; or move ax, 5 
ret 

爲什麼打印5?這將加載一個值爲5的寄存器並返回。沒有其他的。

有人可以解釋我返回5這些方法之間的區別嗎?

對於一個非常簡單的Windows EXE可執行文件,最適合什麼?

我無法在StackOverflow中已經提出的問題中得到答案。

注意,我用:Win 7的,WinAsam,MASM

謝謝!

+0

[將字符打印到組件x86中的標準輸出]的可能重複(http://stackoverflow.com/questions/8201613/printing-a-character-to-standard-output-in-assembly-x86) – Seki

回答

2

爲什麼不使用printf?在Windows上,它是現在屬於Windows的MS C運行時的一部分。

使用Windows API,你可以使用:

GetStdHandle

並執行下列操作之一:

WriteConsole

WriteConsoleOutput

WriteConsoleOutputAttribute

WriteConsoleOutputCharacter

WriteFile

一切都取決於你想如何做到這一點。

mov將東西寫入寄存器不會打印任何東西,您必須通知操作系統打印它。

如果您發現某些您不瞭解的內容,請對此進行一些研究,閱讀文檔,編寫註釋,使用代碼更改內容並查看它的工作原理。

相關問題