黄色在线观看视频-黄色在线免费看-黄色在线视频免费-黄色在线视频免费看-免费啪啪网-免费啪啪网站

查看全部128種考試
計算機等級考試
 考試動態  報考指南  考試大綱  歷年真題  模擬試題  復習資料  心得技巧 等考論壇
 二級 | VB  VF  C  C++  JAVA  ACCESS 三級 | 網絡  數據庫  信息管理  PC技術 四級 | 一級
1
2
3
4
5
6
7
8
9
10
蕭雨  
【字體: 匯編語言教程之一
匯編語言教程之一
djks.exam8.com 來源:考試吧(Exam8.com) 更新:2004-8-16 23:08:00 計算機等級考試 考試論壇

x86匯編語言教程(1)

----獻給教PC技術的朋友!

第○章 寫在前面

我不想夸大或者貶低匯編語言。但我想說,匯編語言改變了20世紀的歷史。與前輩相比,我們這一代編程人員足夠的幸福,因為我們有各式各樣的編程語言,我們可以操作鍵盤、坐在顯示器面前,甚至使用鼠標、語音識別。我們可以使用鍵盤、鼠標來駕馭“個人計算機”,而不是和一群人共享一臺使用笨重的繼電器、開關去操作的巨型機。相比之下,我們的前輩不得不使用機器語言編寫程序,他們甚至沒有最簡單的匯編程序來把助記符翻譯成機器語言,而我們可以從上千種計算機語言中選擇我們喜歡的一種,而匯編,雖然不是一種“常用”的具有“快速原型開發”能力的語言,卻也是我們可以選擇的語言中的一種。

每種計算機都有自己的匯編語言——沒必要指望匯編語言的可移植性,選擇匯編,意味著選擇性能而不是可移植或便于調試。這份文檔中講述的是x86匯編語言,此后的“匯編語言”一詞,如果不明示則表示ia32上的x86匯編語言。

匯編語言是一種易學,卻很難精通的語言。回想當年,我從初學匯編到寫出第一個可運行的程序,只用了不到4個小時;然而直到今天,我仍然不敢說自己精通它。編寫快速、高效、并且能夠讓處理器“很舒服地執行”的程序是一件很困難的事情,如果利用業余時間學習,通常需要2-3年的時間才能做到。這份教材并不期待能夠教給你大量的匯編語言技巧。對于讀者來說,x86匯編語言"就在這里"。然而,不要僵化地局限于這份教材講述的內容,因為它只能告訴你匯編語言是“這樣一回事”。學好匯編語言,更多的要靠一個人的創造力于悟性,我可以告訴你我所知道的技巧,但肯定這是不夠的。一位對我的編程生涯產生過重要影響的人曾經對我說過這么一句話:

寫匯編語言程序不是匯編語言最難的部分,創新才是。

我想,愿意看這份文檔的人恐怕不會問我“為什么要學習匯編語言”這樣的問題;不過,我還是想說幾句:首先,匯編語言非常有用,我個人主張把它作為C語言的先修課程,因為通過學習匯編語言,你可以了解到如何有效地設計數據結構,讓計算機處理得更快,并使用更少的存儲空間;同時,學習匯編語言可以讓你熟悉計算機內部運行機制,并且,有效地提高調試能力。就我個人的經驗而言,調試一個非結構化的程序的困難程度,要比調試一個結構化的程序的難度高很多,因為“結構化”是以犧牲運行效率來提高可讀性與可調試性,這對于完成一般軟件工程的編碼階段是非常必要的。然而,在一些地方,比如,硬件驅動程序、操作系統底層,或者程序中經常需要執行的代碼,結構化程序設計的這些優點有時就會被它的低效率所抹煞。另外,如果你想真正地控制自己的程序,只知道源代碼級的調試是遠遠不夠的。

浮躁的人喜歡說,用C++寫程序足夠了,甚至說,他不僅僅掌握C++,而且精通STL、MFC。我不贊成這個觀點,掌握上面的那些是每一個編程人員都應該做到的,然而C++只是我們"常用"的一種語言,它不是編程的全部。低層次的開發者喜歡說,嘿,C++是多么的強大,它可以做任何事情——這不是事實。便于維護、調試,這些確實是我們的追求目標,但是,寫程序不能僅僅追求這個目標,因為我們最終的目的是滿足設計需求,而不是個人非理性的理想。

這份教材適合已經學習過某種結構化程序設計語言的讀者。其內容基于我在1995年給別人講述匯編語言時所寫的講義。當然,如大家所希望的,它包含了最新的處理器所支持的特性,以及相應的內容。我假定讀者已經知道了程序設計的一些基本概念,因為沒有這些是無法理解匯編語言程序設計的;此外,我希望讀者已經有了比較良好的程序設計基礎,因為如果你缺乏對于結構化程序設計的認識,編寫匯編語言程序很可能很快就破壞了你的結構化編程習慣,大大降低程序的可讀性、可維護性,最終讓你的程序陷于不得不廢棄的代碼堆之中。

基本上,這份文檔撰寫的目標是盡可能地便于自學。不過,它對你也有一些要求,盡管不是很高,但我還是強調一下。


學習匯編語言,你需要

  • 膽量。不要害怕去接觸那些計算機的內部工作機制。
  • 知識。了解計算機常用的數制,特別是二進制、十六進制、八進制,以及計算機保存數據的方法。
  • 開放。接受匯編語言與高級語言的差異,而不是去指責它如何的不好讀。
  • 經驗。要求你擁有任意其他編程語言的一點點編程經驗。
  • 頭腦。
     

祝您編程愉快!

第一章 匯編語言簡介

先說一點和實際編程關系不太大的東西。當然,如果你迫切的想看到更實質的內容,完全可以先跳過這一章。

那么,我想可能有一個問題對于初學匯編的人來說非常重要,那就是:

匯編語言到底是什么?
匯編語言是一種最接近計算機核心的編碼語言。不同于任何高級語言,匯編語言幾乎可以完全和機器語言一一對應。不錯,我們可以用機器語言寫程序,但現在除了沒有匯編程序的那些電腦之外,直接用機器語言寫超過1000條以上指令的人大概只能算作那些被我們成為“圣人”的犧牲者一類了。畢竟,記憶一些短小的助記符、由機器去考慮那些瑣碎的配位過程和檢查錯誤,比記憶大量的隨計算機而改變的十六進制代碼、可能弄錯而沒有任何提示要強的多。熟練的匯編語言編碼員甚至可以直接從十六進制代碼中讀出匯編語言的大致意思。當然,我們有更好的工具——匯編器和反匯編器。

簡單地說,匯編語言就是機器語言的一種可以被人讀懂的形式,只不過它更容易記憶。至于宏匯編,則是包含了宏支持的匯編語言,這可以讓你編程的時候更專注于程序本身,而不是忙于計算和重寫代碼。

匯編語言除了機器語言之外最接近計算機硬件的編程語言。由于它如此的接近計算機硬件,因此,它可以最大限度地發揮計算機硬件的性能。用匯編語言編寫的程序的速度通常要比高級語言和C/C++快很多--幾倍,幾十倍,甚至成百上千倍。當然,解釋語言,如解釋型LISP,沒有采用JIT技術的Java虛機中運行的Java等等,其程序速度更無法與匯編語言程序同日而語 。

永遠不要忽視匯編語言的高速。實際的應用系統中,我們往往會用匯編徹底重寫某些經常調用的部分以期獲得更高的性能。應用匯編也許不能提高你的程序的穩定性,但至少,如果你非常小心的話,它也不會降低穩定性;與此同時,它可以大大地提高程序的運行速度。我強烈建議所有的軟件產品在最后Release之前對整個代碼進行Profile,并適當地用匯編取代部分高級語言代碼。至少,匯編語言的知識可以告訴你一些有用的東西,比如,你有多少個寄存器可以用。有時,手工的優化比編譯器的優化更為有效,而且,你可以完全控制程序的實際行為。

我想我在羅嗦了。總之,在我們結束這一章之前,我想說,不要在優化的時候把希望完全寄托在編譯器上——現實一些,再好的編譯器也不可能總是產生最優的代碼。

轉帖于:計算機等級考試_考試吧
文章搜索  
看了本文的網友還看了:
計算機等級考試權威輔導教材: 訂書電話:010-62168566  更多>>>
網友評論
昵 稱: *  評 分: 1分 2分 3分 4分 5分
標題:   匿名發表    (共有條評論)查看全部評論>>
版權聲明 -------------------------------------------------------------------------------------
  如果計算機等級考試網所轉載內容不慎侵犯了您的權益,請與我們聯系,我們將會及時處理。如轉載本計算機等級考試網內容,請注明出處。
關于本站  網站聲明  廣告服務  聯系方式  付款方式  站內導航  客服中心  友情鏈接  考試論壇  網站地圖
Copyright © 2004-2008 考試吧計算機等級考試網 All Rights Reserved    
中國科學院研究生院權威支持(北京) 電 話:010-62168566 傳 真:010-62192699
百度大聯盟黃金認證  十佳網絡教育機構  經營許可證號:京ICP060677
主站蜘蛛池模板: 国产精品午夜在线播放a | 国内精品视频 在线播放 | 午夜影院色 | 麻豆射区 | 中国男女全黄大片一级 | 一区二区三区在线 | 日本 | 一区在线观看视频 | 成年人免费视频网站 | 黄色在线不卡 | 丁香六月 久久久 | 95香蕉视频| 一级毛片一级毛片一级毛片 | 久久99精品久久久久久青青91 | 2020天天干 | 操操操免费视频 | 国产欧美国产精品第二区 | 成人免费www在线高清观看 | 中文三 级 黄 色 片 | 国内小情侣一二三区在线视频 | 一区二区三区日韩免费播放 | 欧美精品亚洲精品日韩 | 操操操日日日 | 在线观看免费毛片 | 中文字幕在线观看 | 五月婷久久 | 六月婷婷综合 | 手机看片1024国产 | hdxxxxx中国老太 | 免费午夜网站 | 日韩综合网 | 一级片免费在线观看视频 | 看特级毛片 | 看a级片 | 亚洲欧洲精品国产区 | 97久久人人做人人爽人人澡 | 亚洲性夜夜综合久久麻豆 | 日本高清视频成人网www | 日韩美女一级片 | 欧美肥老妇 | 又黄又爽的视频 | 六度国产福利午夜视频黄瓜视频 |