出版時間:2009-12 出版社:東南大學出版社 作者:傅德勝,孫文靜 著 頁數(shù):318
前言
匯編語言是一種面向機器的程序設計語言。匯編語言直接映射系統(tǒng)硬件,使程序設計人員可以像使用自己的工具那樣,隨心地控制和使用計算機的基本資源,設計各種期望的軟件。同時,匯編語言占用的內存小、執(zhí)行速度快、效率高,因而是一種強有力的計算機語言。 在撰寫本書的過程中,筆者仔細研究了國家教育部頒發(fā)的計算機科學與技術專業(yè)的教學大綱要求,深入分析了當前計算機技術的發(fā)展,結合自己30多年來講授該課程的體會,以及筆者1999年3月出版的《宏匯編語言程序設計及應用》、2002年修訂出版的《80X86匯編語言程序設計及應用》兩書讀者的中肯建議,本著由淺入深、循序漸進、考慮專業(yè)、兼顧普及、注重實用的精神,反復醞釀和推敲?! ∪珪缮?、下篇組成。上篇為理論篇,其中第一部分為預備環(huán)節(jié)(第1,2章),介紹計算機中用到的數(shù)制、碼制和CPU的結構。第二部分為基礎環(huán)節(jié)(第3,4,5章),主要討論匯編語言的尋址方式、指令系統(tǒng)、偽指令、匯編語言源程序結構和匯編語言程序調試過程,為后面匯編語言程序設計的學習作準備。第三部分為程序設計環(huán)節(jié)(第6,7,8,9,10章),闡述匯編語言的順序結構程序、分支結構程序、循環(huán)結構程序及子程序與宏指令的設計方法,讓瀆者通過這方面的學習順利掌握基本的匯編語言程序設計。在此基礎上,研究CPU與外設之間數(shù)據(jù)傳送程序設計和模塊化程序設計,為讀者用匯編語言開發(fā)大型軟件做鋪墊。下篇為應用篇,展示了匯編語言在數(shù)據(jù)處理、圖像處理和接口及通信中的近30個應用示例,供讀者借鑒和移植。同時給出了上機實習指導,給出了實習目的、實習內容、實習要求、實習準備及參考程序?! ”緯某霭娴玫搅藮|南大學出版社的大力支持與幫助,在此致以深深的謝意。 本書可作為各種不同層次和類型高等院校計算機及其相關專業(yè)的教材,亦可作為計算機研究、生產(chǎn)和應用開發(fā)等人員的參考書?! ∫蛩接邢?,書中錯誤在所難免,敬請讀者指正。
內容概要
《高級匯編語言程序設計及應用》上篇全面介紹匯編語言程序設計的原理、方法和技巧,其中包括CPU結構、指令、偽指令、宏指令、匯編語言源程序結構、基本程序(順序,分支,循環(huán))設計、子程序設計、輸入/輸出程序設計和模塊化程序設計等,并配有例題200余道。下篇為應用篇,給出了匯編語言在數(shù)據(jù)處理、圖像處理以及接口與通信中的應用。同時,配有實習指導,給出了實習目的、實習內容、實習要求、實習準備及參考程序。全書具有明顯的特色和較強的實用性。 《高級匯編語言程序設計及應用》取材力求跟蹤計算機新技術的發(fā)展,具有重點突出、承上啟下、由淺入深、簡明易懂、示例豐富、方便自學等特點?! 陡呒墔R編語言程序設計及應用》可作為各種不同層次和類型高等院校計算機及相關專業(yè)的教材,亦可作為從事計算機研究、生產(chǎn)和開發(fā)等有關人員的培訓教材和參考書。
書籍目錄
上篇 理論篇1 計算機中數(shù)的表示1.1 計算機數(shù)據(jù)的表示1.1.1 數(shù)制、基數(shù)與“位權”1.1.2 二進制數(shù)1.1.3 十六進制數(shù)1.1.4 不同數(shù)制之間的轉換1.2 原碼、反碼與補碼1.2.1 無符號數(shù)與有符號數(shù)1.2.2 原碼1.2.3 反碼1.2.4 補碼1.3 數(shù)據(jù)存取方式1.3.1 字節(jié)數(shù)1.3.2 字數(shù)據(jù)1.3.3 雙字數(shù)據(jù)1.4 ASCIl碼1.5 BCD碼1.5.1 壓縮BCD碼1.5.2 非壓縮BCD碼1.6 擴展的鍵盤代碼習題12 Intel微處理器2.1 8086/8088微處理器2.1.1 8086/8088微處理器的結構2.1.2 8086/8088內存儲器的組織2.1.3 段概念的引入2.1.4 內存儲器的地址2.1.5 堆棧2.2 80386微處理器2.2.1 80386微處理器的主要性能2.2.2 80386CPU的結構2.2.3 80386寄存器及其功能2.3 80486微處理器2.3.1 80486的特點2.3.2 80486CPU的結構2.3.3 80486寄存器組2.4 80586(Pentium)微處理器2.5 80x86的工作方式習題23 尋址方式與指令系統(tǒng)3.1 8086/8088的尋址方式3.1.1 立即尋址3.1.2 直接尋址3.1.3 寄存器尋址3.1.4 寄存器間接尋址3.1.5 基址尋址3.1.6 變址尋址3.1.7 基址變址尋址3.1.8 相對基址變址尋址3.1.9 段默認與段跨越3.2 80x86擴展尋址方式3.3 匯編指令語句格式3.3.1 標號3.3.2 指令助記符3.3.3 目的操作數(shù)3.3.4 源操作數(shù)3.3.5 注釋3.4 8086/8088指令系統(tǒng)3.4.1 數(shù)據(jù)傳送指令3.4.2 算術運算指令3.4.3 邏輯運算與移位指令3.4.4 串操作指令3.4.5 控制轉移指令3.4.6 處理器控制指令3.4.7 十進制運算調整指令3.5 實方式32位指令3.5.1 32位數(shù)據(jù)傳送指令3.5.2 32位算術運算指令3.5.3 32位邏輯運算與移位指令3.5.4 32位串操作指令3.5.5 32位控制轉移指令3.5.6 32位位操作指令3.5.7 32位保護方式指令3.5.8 32位交換與比較指令3.6 Pentium微處理器新增指令習題34 操作數(shù)運算符與常用偽指令4.1 操作數(shù)運算符4.1.1 算術運算符(單目+,單目一,+,-,*,/,MOD)4.1.2 邏輯運算符(NOT,AND,OR,XOR)4.1.3 關系運算符(EQ,NE,LT,LE,GT,GE)4.1.4 數(shù)值回送運算符(sEG,0FFSET,TYPE,LENGrrH,SIZE)4.1.5 屬性運算符(PTR,SHORT,THIS,HIGH,LOW)4.1.6 移位運算符(SHL,SHR)4.1.7 運算符優(yōu)先級4.2 常用偽指令4.2.1 數(shù)據(jù)定義偽指令(DB,DW,DD,DF,DQ,DT,?,DuP)4.2.2 符號定義偽指令(EQU,=,LABLE)4.2.3 段定義偽指令(sEGMENT,ENDS,ASSUME)4.2.4 過程定義偽指令(PROC,ENDP)4.2.5 匯編控制偽指令(END,ORG,NAME)4.2.6 列表偽指令(TITLE,PAGE,SUBTTL,%OUT)4.3 80X86擴展偽指令4.3.1 方式選擇偽指令4.3.2 段定義偽指令習題45 匯編語言源程序結構與調試運行5.1 8086/8088匯編源程序結構5.1.1 EXE文件的匯編格式5.1.2 COM文件的匯編格式5.2 80X86匯編源程序結構5.3 匯編語言程序調試過程5.3.1 基本過程5.3.2 Windows環(huán)境下的上機步驟5.3.3 匯編列表文件、交叉引用文件、連接列表文件說明5.4 C0M文件的建立習題56 程序的基本結構與匯編語言程序設計6.1 程序設計的基本過程6.1.1 準備工作6.1.2 程序設計6.1.3 程序評價6.2 程序的基本結構6.3 順序結構程序設計6.4 分支結構程序設計6.4.1 利用比較和條件轉移指令實現(xiàn)程序分支6.4.2 利用跳轉表實現(xiàn)多路分支6.5 循環(huán)結構程序設計6.5.1 循環(huán)程序控制方法6.5.2 單重循環(huán)程序設計6.5.3 多重循環(huán)程序設計習題67 系統(tǒng)功能調用7.1 BIOS和DOS中斷7.2 調用BIOS和DOS中斷程序的基本方法7.3 BIOS中斷調用7.3.1 文本方式屬性7.3.2 INTIOH主要功能調用7.4 DOS中斷功能調用7.4.1 DOS中斷基本功能7.4.2 DOS系統(tǒng)功能(INT21H)調用示例習題78 子程序與宏指令8.1 子程序設計中的基本要素8.2 主程序與子程序的連接8.3 子程序調用中的數(shù)據(jù)保護與恢復8.4 主程序與子程序之間的參數(shù)傳遞8.4.1 寄存器傳遞8.4.2 存儲單元傳遞8.4.3 堆棧傳遞8.5 子程序嵌套與遞歸8.6 宏指令8.6.1 宏定義8.6.2 宏調用與宏擴展8.7 宏定義中的偽指令8.8 宏嵌套8.9 宏庫的建立與使用習題89 輸入/輸出控制方式及程序設計9.1 I/O端口的編址方式……下篇 應用篇11 匯編語言在數(shù)據(jù)處理中的應用12 匯編語言在圖像處理中的應用13 匯編語言在接口與通信中的應用14 實習指導附錄A 8086/80X86指令集附錄B MASM5.0出錯信息附錄C 系統(tǒng)中斷參考文獻
章節(jié)摘錄
2)內部寄存器陣列 8086/8088內部寄存器陣列共有4組:通用數(shù)據(jù)寄存器(簡稱數(shù)據(jù)寄存器)、指針及變址寄存器、段寄存器和控制寄存器。(1)數(shù)據(jù)寄存器數(shù)據(jù)寄存器包括4個16位的寄存器(Ax、BX、CX、DX)或8個8位寄存器(AH、AL、BH、BL、CH、cL、DH、DL)。這些寄存器都可以用來暫時存放操作數(shù)、運算結果及其他信息,但同時又具有某些專用用途?! x(Accumulator)累加器。是算術運算中的主要寄存器,在乘除運算中用來指定被乘數(shù)和被除數(shù),也是乘、除運算后積和商的默認存儲單元。另外I/O指令均使用該寄存器與I/O設備傳送信息。BX(Base Register)基址寄存器。指令尋址時存入偏移量或偏移量構成成分。CX(Count Register)計數(shù)寄存器。在循環(huán)指令操作或串處理指令中隱含計數(shù)。DX(Date Register)數(shù)據(jù)寄存器。在雙字長運算時,與Ax組合構成32位操作數(shù),DX為高16位。在某些I/0指令中,DX被用來存放端口地址。(2)指針及變址寄存器這一組寄存器共有4個:SP,BP,sI,DI。它們都是16位寄存器,可以用來存放16位的操作數(shù)或中間結果,但更經(jīng)常的用途是存放偏移量或位移量。SP(Stack Pointer)堆棧指針寄存器。始終指示棧頂位置,與ss寄存器一起組成棧頂數(shù)據(jù)的物理地址?! P(Base Pointer)基址指針寄存器。系統(tǒng)默認其指向堆棧中某一單元,即提供棧中該單元的偏移量。加段前綴后,BP可作為非堆棧段的地址指針?! I(Source Index)源變址寄存器。與DS聯(lián)用,指示數(shù)據(jù)段中某操作數(shù)的偏移量。在作串處理時,SI指示源操作數(shù)地址,并有自動增量(正反)或自動減量(反向)功能。變址尋址時,SI與某一位移量共同構成操作數(shù)的偏移量?! I(Destination Index)目的變址寄存器。與DS聯(lián)用,指示數(shù)據(jù)段中某操作數(shù)的偏移量,或與某一位移量共同構成操作數(shù)的偏移量。串處理操作時,DI指示附加段中的目的地址,并有自動增量(正向)或減量(反向)功能?! 。?)段寄存器 8086/8088微處理器將1MB的內存空間分成若干邏輯段(詳見2.1.2 小節(jié)),程序設計時,用戶最多可同時使用其中的四個段。這四個段分別為: 代碼段(C0de Segment)存放當前程序的指令代碼?! ?shù)據(jù)段(Date Segment)存放程序所涉及的源數(shù)據(jù)或結果?! 《褩6危╯tack Segment)以“先入后出”為原則的數(shù)據(jù)區(qū)?! 「郊佣危‥xtra Segment)輔助數(shù)據(jù)區(qū),存放串或其他數(shù)據(jù)。 在實地址方式下,代碼段寄存器CS、數(shù)據(jù)段寄存器DS、堆棧段寄存器SS、附加段寄存器Es分別保存當前四個段的段基址(20位的段的起始地址的高16位)。(4)控制寄存器控制寄存器含指令指針寄存器IP(Instruction Pointer)和標志寄存器FR(Flags Register)。IP寄存器始終指向當前將要執(zhí)行指令在代碼段中存放的偏移量。
圖書封面
評論、評分、閱讀與下載