选择“Win32汇编”的三大理由?
選擇Win32匯編的理由是什么呢?
? ?? 在DOS時代,學習匯編就是學習系統底層編程的代名詞,僅要成為一名入門級的匯編程序員,就需要學習從CPU結構、CPU工作方式、各種硬件的編程方法到DOS工作方式等范圍很廣的知識。隨著Windows時代的到來,Windows像一堵巨大的墻,把我們和計算機的硬件隔離開。對于DOS的匯編程序員來說,就像在一夜之間,我們發現自己曾經學過的幾乎所有的東西都被Windows封裝到內核中去了,由于保護模式的存在,我們又無法像在DOS下那樣闖入系統內核為所欲為。在Windows下用任何語言編程都必須遵循Windows的規范,匯編也不例外,也就是說,匯編不再是一種“有特權”的語言。面對洶涌而來的Visual C++,Visual Basic,PowerBuilder和Java等各個領域的猛將,從DOS時代“為所欲為”的“系統警察”崗位下崗,在其他領域又沒有一技之長,匯編語言似乎失去了生存的意義,有很多人在DOS轉向Windows的時候放棄了匯編語言。
??? 但是經過短暫的失落,擺正了自己在系統中的位置,我們發現從“系統警察”轉換到遵循Windows規范的“好市民”后,匯編語言又慢慢地在這個世界流行起來了。畢竟,不能為所欲為也可以有好的一面,我們可以不必再考慮一些老大難的問題,如程序運行時會面對什么樣的顯示卡,如何驅動不同的打印機,內存不夠了如何用磁盤交換,等等。我們也可以在了解更少硬件知識的情況下就可以掌握Win32的匯編編程。而且,我們驚喜地發現,做了“好市民”以后,我們反而擁有了和其他語言同樣的權利——為了做圖形和界面等方面的功能,匯編程序員在DOS時代連做夢都在羨慕C語言龐大的函數庫,而現在,Windows為我們提供了比這還要多得多的函數,以至于其他大部分語言可以做出來的功能,匯編都可以做,而其他語言做不到的功能,匯編照樣可以做!所以這就是理由之一:Win32匯編可以當做一種功能強大的開發語言使用,使用它完全可以開發出大型的軟件來。
??? 正因為Win32匯編看上去不再那樣低級,于是有讀者曾經提出:Win32匯編講的都是用API來寫程序,和高級語言差不多,以前在DOS下使用的中斷什么的都不能用,所以沒有什么新奇的了。還有讀者認為本書只不過是MSDN的匯編版本而已。言下之意就是:學匯編就是為了了解高級語言底下一層的功能,但現在Win32匯編卻使用和C++等語言相同的API接口,既然和高級語言處于同一個級別,我們為什么還要去和機器指令打交道呢,還不如去學Visual C++方便。
但是我們可以這樣問一問自己:
問:在DOS匯編中我們為什么用中斷功能?
答:為了使用DOS內核提供的功能。
問:在DOS中我們常常自己用操作I/O端口的方法讀寫硬盤或操作顯卡嗎?
答:不,我們用系統提供的int 13h和int 10h。
……
??? 同樣,在Win32匯編里使用API也是為了使用Windows內核提供的功能。只不過使用的方式不再是中斷方式而已,這不是Win32匯編語言“高級化”了,而是高級語言因為使用Windows的API接口而“低級化”了,其代價就是無法移植到其他系統,用Visual C++寫的程序是無法移植到其他操作系統平臺上的,只有和平臺無關的ANSI C++等才能算是真正意義上的高級語言。
??? 其實,任何匯編語言都是和操作系統密切相關的,不管是DOS匯編、Win32匯編,還是Linux匯編,都是基于特定的操作系統的,如果一定要繞過操作系統,那么就不會有DOS匯編和Win32匯編的區別了,但是這樣的話我們不是在學匯編,而是在自己開發操作系統。高級語言在不同的操作系統上看起來都差不多,但作為一種低級語言,不同操作系統上的匯編就是不同的世界。所以,既然Windows和DOS是兩個完全不同的操作系統,我們就必須拋棄DOS匯編中的大部分概念從頭開始學習Win32匯編。這就是理由之二:Win32匯編是Windows環境下一種全新的編程語言。
??? Win32環境下的很多高級語言,如Visual C++和Visual Basic等,一如既往地對實現的細節進行了或深或淺的封裝,就連最能表現Windows特征的部分,如消息循環和多線程的處理等內容也都被隱藏封裝,使我們在使用它們進行可視化編程的同時,無法全面了解Win32程序運行的具體方式。在學習Win32匯編以后,這些隱藏在高級語言后面的細節就暴露出來了。
??? 由于封裝的關系,各種高級語言或多或少存在某種“缺陷”,比如VB不支持指針,結果很多需要使用指針的API用起來就很不方便,像多線程一類的特征在VB中就無法實現,PowerBuilder也是如此;C語言已經是最靈活的高級語言了,但還是無法在代碼級別處理某些需求;而匯編語言見到的是一個最真實的操作系統,它可以用最靈活的方式使用各種系統功能,第13章中有關進程隱藏的內容就是最好的寫照。所以理由之三就是:使用Win32匯編語言是了解操作系統運行細節的最佳方式。
?
本文節選自《琢石成器——Windows環境下32位匯編語言程序設計》一書的前言
轉載于:https://www.cnblogs.com/myjavait/archive/2009/06/16/2142526.html
總結
以上是生活随笔為你收集整理的选择“Win32汇编”的三大理由?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jQuery教程(十三)jQuery L
- 下一篇: 轉:showModalDialog和sh