關(guān)于我們
書單推薦
新書推薦
|
匯編語(yǔ)言與接口技術(shù)
本書將微機(jī)原理、匯編語(yǔ)言、微機(jī)接口技術(shù)有機(jī)地融為一體。從整體入手, 先介紹微機(jī)系統(tǒng)的概念, 使讀者對(duì)微機(jī)系統(tǒng)組織有深入的了解; 之后詳細(xì)介紹控制和使用微機(jī)的軟件編程, 即匯編語(yǔ)言編程; 最后以常用可編程接口芯片的結(jié)構(gòu)和應(yīng)用為主介紹了微機(jī)硬件接口技術(shù)。在本書的編寫過程中把以上三個(gè)模塊逐漸融合滲透, 融會(huì)貫穿在一起, 避免了知識(shí)點(diǎn)間銜接不順暢, 也符合讀者知識(shí)結(jié)構(gòu)地構(gòu)建, 強(qiáng)化學(xué)習(xí)者對(duì)微機(jī)原理以及軟、硬件應(yīng)用能力的培養(yǎng)。
本書為普通高等教育“十二五”*規(guī)劃教材,普通高等教育“十一五”*規(guī)劃教材,是匯編語(yǔ)言與接口技術(shù)經(jīng)典教材,內(nèi)容全面,特色突出,被多所高校用作教材。
本書共10章,以16位微處理器8088/8086為主線,介紹微處理器的結(jié)構(gòu)、工作原理、指令系統(tǒng)等,同時(shí)兼顧32位以上微處理器80386、80486以及Pentium系列微處理器的相關(guān)內(nèi)容。匯編語(yǔ)言以MASM 6.0為主,同時(shí)介紹了與MASM 5.X的區(qū)別,詳細(xì)講解了基于80x86的匯編程序設(shè)計(jì)方法。書中詳細(xì)介紹了傳統(tǒng)的接口技術(shù),如并行、串行、定時(shí)、DMA、中斷、模/數(shù)及數(shù)/模等接口技術(shù)?紤]到信息類相關(guān)專業(yè)學(xué)生的學(xué)習(xí)需求,本書專門增加了一章介紹存儲(chǔ)器技術(shù)。第10章介紹*新的高速串行接口USB接口。 本書將微機(jī)原理、匯編語(yǔ)言、微機(jī)接口技術(shù)有機(jī)地融為一體,既適合課堂教學(xué),又能緊跟*新技術(shù),拓寬學(xué)生的知識(shí)面。本書條理清楚,深入淺出,有豐富的實(shí)例,便于自學(xué)。 本書可以作為高等學(xué)校本科信息類相關(guān)專業(yè)和計(jì)算機(jī)專業(yè)學(xué)生的教材或參考書,也可以供廣大工程技術(shù)人員參考。
微機(jī)原理、匯編語(yǔ)言和接口技術(shù)是各個(gè)高等學(xué)校計(jì)算機(jī)專業(yè)或信息類專業(yè)學(xué)生的專業(yè)基礎(chǔ)課程。匯編語(yǔ)言的顯著特點(diǎn)是可以直接控制硬件并充分發(fā)揮計(jì)算機(jī)硬件的功能,對(duì)于編寫高性能系統(tǒng)軟件和應(yīng)用軟件具有不可忽視的作用,微機(jī)接口技術(shù)則側(cè)重計(jì)算機(jī)硬件的結(jié)構(gòu)和I/O系統(tǒng)的組成。
隨著高校教學(xué)改革的深入,將匯編語(yǔ)言與微機(jī)接口技術(shù)結(jié)合起來,作為一門計(jì)算機(jī)基礎(chǔ)專業(yè)課程的教學(xué)方法已經(jīng)為許多高校采用。為了滿足在新形勢(shì)下計(jì)算機(jī)與信息類專業(yè)課程建設(shè)和教學(xué)內(nèi)容改革的需求,作者在多年匯編語(yǔ)言、微機(jī)接口技術(shù)教學(xué)實(shí)踐的基礎(chǔ)上編寫了本教材,將微機(jī)原理、匯編語(yǔ)言程序設(shè)計(jì)、微機(jī)接口技術(shù)融為一體,比較完整地介紹了微型計(jì)算機(jī)技術(shù),適合更多讀者的需求。 在前3版教材的基礎(chǔ)上,本書內(nèi)容進(jìn)行了很大的調(diào)整和改進(jìn),主要在以下幾個(gè)方面。 (1) 第1章作為全書的概括和匯編語(yǔ)言與接口技術(shù)的基礎(chǔ),涵蓋了基本知識(shí)的支撐要點(diǎn),如微型計(jì)算機(jī)的概念、微機(jī)系統(tǒng)總線等,使讀者對(duì)微型計(jì)算機(jī)的整體結(jié)構(gòu)有一個(gè)完整的認(rèn)識(shí)。另外,把第3版教材中接口技術(shù)的概念、輸入輸出傳輸控制方式等接口基礎(chǔ)知識(shí)分離出來單獨(dú)作為第6章,這樣使知識(shí)結(jié)構(gòu)更加合理。 (2) 第2章從8088/8086 CPU入手,首先詳細(xì)分析了16位微處理器的功能結(jié)構(gòu)、寄存器組、工作方式、總線操作及時(shí)序等。之后作為知識(shí)的提升,介紹了32位以上微處理器的結(jié)構(gòu)、寄存器組等相應(yīng)的知識(shí)點(diǎn)。這樣修改使教材層次分明,由淺入深,也符合讀者的知識(shí)結(jié)構(gòu)構(gòu)成規(guī)律。另外增加了Pentium系列微處理器及多核微處理器的發(fā)展概況。 (3) 第3章和第4章是匯編語(yǔ)言程序設(shè)計(jì)部分?紤]到從8086到80386以上至Pentium 4,只有16位到32位的區(qū)別,其80%以上的指令完全相同,因此,本書以16位微處理器的指令系統(tǒng)為基礎(chǔ),擴(kuò)展到32位微處理器匯編指令。另外,在知識(shí)點(diǎn)的組織上,把指令系統(tǒng)的講解融合在匯編語(yǔ)言編程設(shè)計(jì)中,這樣避免了單獨(dú)講解大量指令的枯燥,也使匯編語(yǔ)言程序設(shè)計(jì)的講解更源自基礎(chǔ)。例如,把分支結(jié)構(gòu)程序設(shè)計(jì)和條件判斷指令放在一起講解,使知識(shí)緊密銜接,使讀者學(xué)習(xí)循序漸進(jìn)。另外,為了滿足實(shí)際需要,在第4章增加了匯編語(yǔ)言與高級(jí)語(yǔ)言混合編程的內(nèi)容。 (4) 刪減了第3版的軟件接口技術(shù)一章,把本章中關(guān)于DOS和BIOS的接口調(diào)用的內(nèi)容作為第4章中的一節(jié)內(nèi)容,保證了內(nèi)容的完整。 (5) 修改了第5章存儲(chǔ)器技術(shù)的部分內(nèi)容。對(duì)于不同專業(yè)的學(xué)生,任課教師可以選擇本章的有關(guān)內(nèi)容講解。 (6) 修改了第10章的內(nèi)容,在重點(diǎn)介紹USB接口概念和基本方法的基礎(chǔ)上,強(qiáng)化了USB開發(fā)技術(shù)的應(yīng)用。 (7) 在第7~9章增加更多的工程應(yīng)用實(shí)例,使讀者更接近實(shí)際應(yīng)用,體現(xiàn)教材的實(shí)用性。(8) 修改了前3版教材中難理解的概念,用更通俗易懂的語(yǔ)言描述。修正了前3版教材中已經(jīng)發(fā)現(xiàn)的疏漏。 全書共10章,第1章和第2章是理論基礎(chǔ)部分,內(nèi)容包括微型計(jì)算機(jī)概述,接口技術(shù)及數(shù)據(jù)傳輸控制方式、系統(tǒng)總線、80x86微處理器原理。第3章和第4章是匯編語(yǔ)言部分,內(nèi)容主要包括80x86的指令系統(tǒng)、尋址方式、匯編語(yǔ)言程序設(shè)計(jì)。第5章主要介紹存儲(chǔ)器的基本概念,存儲(chǔ)器基本單元的構(gòu)建,由存儲(chǔ)單元構(gòu)成存儲(chǔ)陣列進(jìn)而構(gòu)成存儲(chǔ)器的方法,以及存儲(chǔ)器容量的擴(kuò)展方法,并介紹了Cache和虛擬存儲(chǔ)技術(shù)。第6章是輸入輸出接口及數(shù)據(jù)傳輸控制方式,主要介紹接口的概念、接口技術(shù)基礎(chǔ)知識(shí)以及CPU控制數(shù)據(jù)傳輸?shù)目刂品绞。?章是串并行接口技術(shù),主要內(nèi)容包括定時(shí)/計(jì)數(shù)器、串并行接口的基本原理及實(shí)際應(yīng)用。第8章是中斷和DMA技術(shù),主要內(nèi)容包括中斷和DMA的原理及中斷控制器和DMA控制器及其應(yīng)用。第9章是模擬接口技術(shù),主要包括A/D和D/A轉(zhuǎn)換技術(shù)及典型的芯片應(yīng)用。第10章是高速串行總線,介紹了*新的高速串行接口USB技術(shù)。 本書第1版由王讓定、陳金兒、葉富樂、史旭華共同編寫,其中第1、2章由史旭華執(zhí)筆,第3、4章由葉富樂執(zhí)筆,第5章由王讓定執(zhí)筆,其余各章由陳金兒執(zhí)筆,王讓定負(fù)責(zé)全書的統(tǒng)稿。本書第2版的修訂由參加課程建設(shè)的朱瑩執(zhí)筆,王讓定負(fù)責(zé)全書的統(tǒng)稿。本書第3版的修訂又加入了一線教師石守東和錢江波兩位老師的辛勤工作。 通過幾年的教學(xué)實(shí)踐,根據(jù)國(guó)內(nèi)相關(guān)教師的建議,在第1版、第2版和第3版的基礎(chǔ)上,在本書作者和相關(guān)老師的共同參與下,由王讓定和朱瑩執(zhí)筆全面修訂了本書內(nèi)容。王讓定負(fù)責(zé)全書的統(tǒng)稿。 本書的出版凝聚了許多同行的智慧和心血,這里非常感謝課程建設(shè)前期付出心血的陳金兒、葉富樂和史旭華老師,感謝清華大學(xué)出版社張民編輯。本書的出版得到了寧波大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)國(guó)家特色專業(yè)的支持,得到了浙江省高校重點(diǎn)教材建設(shè)項(xiàng)目的支持,得到了浙江省“十二五”“十三五”特色專業(yè)建設(shè)的支持,也得到了寧波市服務(wù)型重點(diǎn)建設(shè)專業(yè)的支持,在此一并表示感謝。 本書配有相應(yīng)的教學(xué)電子資源,讀者可登錄清華大學(xué)出版社網(wǎng)站下載。另外,作者為第4版教材編寫了配套的《匯編語(yǔ)言與接口技術(shù)(第4版)知識(shí)精要與實(shí)踐》。由于計(jì)算機(jī)技術(shù)的飛速發(fā)展,新的理論和技術(shù)層出不窮,本書難以囊括計(jì)算機(jī)技術(shù)的*新發(fā)展變化。同時(shí),書中難免有不足和不妥之處,懇請(qǐng)同行和讀者不吝批評(píng)指正。歡迎讀者,尤其是使用本書的教師和學(xué)生,共同探討相關(guān)教學(xué)內(nèi)容改革、教材內(nèi)容建設(shè)以及教學(xué)方法等問題。 作者 2016年11月
王讓定,博士,寧波大學(xué)教授、博士生導(dǎo)師,浙江省高校中青年學(xué)科帶頭人,“計(jì)算機(jī)科學(xué)與技術(shù)”國(guó)家特色專業(yè)建設(shè)點(diǎn)負(fù)責(zé)人,浙江省高等學(xué)校省級(jí)教學(xué)團(tuán)隊(duì)負(fù)責(zé)人,寧波大學(xué)教學(xué)名師,校計(jì)算機(jī)科學(xué)與技術(shù)教學(xué)團(tuán)隊(duì)負(fù)責(zé)人。現(xiàn)兼任中國(guó)體視學(xué)學(xué)會(huì)理事,中國(guó)計(jì)算機(jī)學(xué)會(huì)開放系統(tǒng)專委會(huì)委員,中國(guó)電子學(xué)會(huì)通信學(xué)會(huì)多媒體信息安全專委會(huì)委員,浙江省高校計(jì)算機(jī)教學(xué)研究會(huì)副理事長(zhǎng),浙江省計(jì)算機(jī)應(yīng)用與教育學(xué)會(huì)教育委員會(huì)副主任,浙江省物聯(lián)網(wǎng)專業(yè)委員會(huì)副主任,浙江省高校計(jì)算機(jī)教學(xué)指導(dǎo)委員會(huì)委員,浙江省大學(xué)生軟件設(shè)計(jì)競(jìng)賽組委會(huì)成員。主持了4項(xiàng)國(guó)家自然基金項(xiàng)目,獲省科技進(jìn)步獎(jiǎng)2項(xiàng)、浙江省高?蒲谐晒(jiǎng)3項(xiàng),獲國(guó)家發(fā)明專利授權(quán)6項(xiàng)。在發(fā)表學(xué)術(shù)或教學(xué)研究論文80多篇,其中被SCI/EI/ISTP檢索的論文有30多篇,主編國(guó)家“十一五”規(guī)劃教材1部,國(guó)家“十二五”規(guī)劃教材1部。
第1章微型計(jì)算機(jī)概述/1
1.1微型計(jì)算機(jī)概念/1 1.2微處理器的產(chǎn)生和發(fā)展/2 1.3計(jì)算機(jī)系統(tǒng)組成/4 1.3.1硬件系統(tǒng)/5 1.3.2軟件/6 1.4系統(tǒng)總線/8 1.4.1概述/8 1.4.2常用的微機(jī)系統(tǒng)總線技術(shù)/9 小結(jié)/10 習(xí)題/11第2章80x86微處理器/12 2.18086/8088微處理器/12 2.1.1內(nèi)部結(jié)構(gòu)/12 2.1.2寄存器組/15 2.1.3引腳信號(hào)及功能/18 2.1.4工作模式/22 2.1.5總線操作和時(shí)序/25 2.232位微處理器/32 2.2.1內(nèi)部結(jié)構(gòu)/32 2.2.2寄存器組/35 2.2.3引腳信號(hào)及功能/39 2.2.4工作模式/43 2.2.5總線操作/44 2.3Pentium微處理器/44 2.3.1Pentium微處理器的主要特點(diǎn)/45 2.3.2Pentium的發(fā)展/46 2.480x86存儲(chǔ)器組織/47 2.4.18086/8088的存儲(chǔ)器組織/472.4.232位微處理器存儲(chǔ)器系統(tǒng)簡(jiǎn)介/50 小結(jié)/51 習(xí)題/51第3章80x86指令系統(tǒng)和尋址方式/53 3.18086指令系統(tǒng)概述/53 3.1.1數(shù)據(jù)類型/53 3.1.280x86指令的基本組成/55 3.28086/8088的尋址方式和指令系統(tǒng)/56 3.2.18086/8088的尋址方式/56 3.2.28086/8088的常用指令/61 3.380386的尋址方式和指令系統(tǒng)/78 3.3.180386的尋址方式/78 3.3.280386指令系統(tǒng)/80 3.480486/Pentium微處理器新增指令/90 3.4.180486引入的有關(guān)指令/90 3.4.2Pentium引入的有關(guān)指令/91 小結(jié)/92 習(xí)題/93第4章80x86匯編語(yǔ)言程序設(shè)計(jì)/97 4.1MASM宏匯編語(yǔ)句結(jié)構(gòu)及開發(fā)過程/98 4.1.1匯編語(yǔ)言程序的語(yǔ)句類型和格式/98 4.1.2匯編語(yǔ)言的程序格式/99 4.1.3匯編語(yǔ)言程序的開發(fā)過程/101 4.2MASM匯編語(yǔ)言表達(dá)式和運(yùn)算符/107 4.2.1常量、運(yùn)算符及表達(dá)式/107 4.2.2變量及其屬性/111 4.3程序段的定義和屬性/119 4.3.1DOS的程序結(jié)構(gòu)/119 4.3.2簡(jiǎn)化段定義的格式及其偽指令/120 4.3.3完整段定義的格式及其偽指令/125 4.4復(fù)雜數(shù)據(jù)結(jié)構(gòu)/130 4.4.1結(jié)構(gòu)/130 4.4.2記錄/132 4.5宏匯編/133 4.5.1宏的定義和調(diào)用/134 4.5.2宏的參數(shù)/136 4.5.3與宏有關(guān)的偽指令/138 4.6常用的系統(tǒng)功能調(diào)用/140 4.6.1DOS的系統(tǒng)調(diào)用/140 4.6.2BIOS中斷調(diào)用及實(shí)現(xiàn)/144 4.6.3Windows系統(tǒng)功能調(diào)用/147 4.7匯編語(yǔ)言順序程序設(shè)計(jì)/149 4.8匯編語(yǔ)言分支程序設(shè)計(jì)/150 4.8.1無條件轉(zhuǎn)移指令和條件轉(zhuǎn)移指令/150 4.8.2分支結(jié)構(gòu)程序設(shè)計(jì)實(shí)例/153 4.9匯編語(yǔ)言循環(huán)程序設(shè)計(jì)/157 4.9.1循環(huán)指令/157 4.9.2循環(huán)程序設(shè)計(jì)實(shí)例/158 4.10串處理程序設(shè)計(jì)/162 4.10.18086/8088串操作指令/162 4.10.280386位串操作指令/165 4.10.3串操作程序設(shè)計(jì)實(shí)例/165 4.11子程序設(shè)計(jì)/167 4.11.1子程序的定義與調(diào)用/167 4.11.2子程序的參數(shù)傳遞/173 4.11.3子程序的嵌套、遞歸與重入/177 4.11.4子程序的應(yīng)用/179 4.12高級(jí)匯編語(yǔ)言程序設(shè)計(jì)/185 4.12.1條件控制偽指令/185 4.12.2循環(huán)控制偽指令/187 4.12.3過程聲明和過程調(diào)用偽指令/190 4.13匯編語(yǔ)言與C語(yǔ)言混合編程/193 4.13.1C語(yǔ)言程序內(nèi)嵌匯編指令/193 4.13.2匯編語(yǔ)言與C語(yǔ)言模塊連接/196 小結(jié)/201 習(xí)題/202第5章存儲(chǔ)器技術(shù)/209 5.1存儲(chǔ)器概述/209 5.1.1存儲(chǔ)器的發(fā)展及分類/209 5.1.2存儲(chǔ)器主要技術(shù)指標(biāo)/212 5.1.3存儲(chǔ)器的基本結(jié)構(gòu)框架/213 5.1.4存儲(chǔ)系統(tǒng)的層次結(jié)構(gòu)/213 5.2半導(dǎo)體隨機(jī)存取存儲(chǔ)器/215 5.2.1SRAM存儲(chǔ)器/215 5.2.2DRAM存儲(chǔ)器/217 5.2.3只讀存儲(chǔ)器/220 5.2.4新型存儲(chǔ)器芯片/222 5.2.5主存容量的擴(kuò)展/225 5.3高速緩沖存儲(chǔ)技術(shù)/230 5.3.1Cache的基本原理/230 5.3.2Cache的管理/231 5.4虛擬存儲(chǔ)技術(shù)/233 小結(jié)/235 習(xí)題/236第6章輸入輸出接口及數(shù)據(jù)傳輸控制方式/237 6.1接口概述/237 6.1.1接口的功能/237 6.1.2I/O端口及其編址方式/239 6.1.3I/O端口地址譯碼/239 6.1.4I/O操作指令/241 6.2CPU與外設(shè)數(shù)據(jù)的傳輸控制方式/242 6.2.1程序控制方式/242 6.2.2中斷控制方式/245 6.2.3DMA方式/246 6.2.4數(shù)據(jù)傳送控制方式的發(fā)展/246 小結(jié)/247 習(xí)題/247第7章串并行接口技術(shù)/248 7.1定時(shí)/計(jì)數(shù)器8253/8254/248 7.1.18253/8254的內(nèi)部結(jié)構(gòu)和引腳/248 7.1.28253/8254的工作方式/250 7.1.38253/8254的編程/254 7.1.48253/8254的應(yīng)用實(shí)例/257 7.2并行通信接口8255A/259 7.2.18255A的內(nèi)部結(jié)構(gòu)和引腳/259 7.2.28255A的工作方式/260 7.2.38255A的編程/264 7.2.48255A的應(yīng)用實(shí)例/266 7.3串行通信基礎(chǔ)/269 7.3.1串行通信基本概念/270 7.3.2串行通信接口標(biāo)準(zhǔn)/271 7.4串行通信芯片8251A/275 7.4.18251A的內(nèi)部結(jié)構(gòu)和引腳/275 7.4.28251A的工作方式/278 7.4.38251A的編程/279 7.4.48251A的應(yīng)用實(shí)例/284 小結(jié)/285 習(xí)題/286第8章中斷和DMA技術(shù)/288 8.180x86中斷系統(tǒng)/288 8.1.1中斷操作和中斷系統(tǒng)/288 8.1.2中斷調(diào)用與返回指令/289 8.1.38086中斷系統(tǒng)/290 8.1.480486的中斷/293 8.2中斷控制器8259A/294 8.2.18259A的內(nèi)部結(jié)構(gòu)和引腳/295 8.2.28259A的中斷過程/297 8.2.38259A的工作方式/298 8.2.48259A的初始化和控制命令字/301 8.2.58259A的應(yīng)用實(shí)例/308 8.3DMA控制器8237A/310 8.3.18237A的結(jié)構(gòu)和外部引腳/311 8.3.28237A的工作原理/314 8.3.38237A的內(nèi)部寄存器和命令/316 8.3.48237A的編程和應(yīng)用/321 小結(jié)/322 習(xí)題/323第9章模擬接口技術(shù)/325 9.1模擬輸入輸出系統(tǒng)/325 9.1.1微機(jī)與控制系統(tǒng)接口/325 9.1.2模擬輸入通道/326 9.1.3模擬輸出通道/327 9.2數(shù)/模轉(zhuǎn)換芯片及接口/327 9.2.1數(shù)/模轉(zhuǎn)換原理/327 9.2.28位數(shù)/模轉(zhuǎn)換器DAC0832/330 9.2.312位數(shù)/模轉(zhuǎn)換器AD567/333 9.3模/數(shù)轉(zhuǎn)換芯片及接口/336 9.3.1模/數(shù)轉(zhuǎn)換原理/336 9.3.28位模/數(shù)轉(zhuǎn)換器ADC0809/341 9.3.312位模/數(shù)轉(zhuǎn)換器AD574/343 9.4A/D、D/A器件的選擇/346 小結(jié)/348 習(xí)題/349第10章高速串行總線/350 10.1USB簡(jiǎn)介/350 10.2USB體系結(jié)構(gòu)/353 10.3USB通信協(xié)議/357 10.3.1通信模型/357 10.3.2數(shù)據(jù)格式/358 10.3.3事務(wù)處理/360 10.3.4數(shù)據(jù)傳輸模式/362 10.4PC的USB應(yīng)用及開發(fā)/363 10.4.1PDIUSBD12芯片特點(diǎn)/365 10.4.2PDIUSBD12芯片引腳/366 10.4.3PDIUSBD12的典型連接/367 10.4.4固件程序設(shè)計(jì)/367 10.4.5驅(qū)動(dòng)程序設(shè)計(jì)/372 10.4.6應(yīng)用程序設(shè)計(jì)/372 小結(jié)/374 習(xí)題/374 參考文獻(xiàn)/375
第3章80x86指令系統(tǒng)和尋址方式
指令是計(jì)算機(jī)能接受的軟件工作者命令的*小工作單元,它*終是由計(jì)算機(jī)內(nèi)的電器元件狀態(tài)來體現(xiàn)的,這一狀態(tài)為譯碼器所識(shí)別,并經(jīng)一定時(shí)間周期付諸實(shí)施,這種指令稱為機(jī)器指令。一條機(jī)器指令應(yīng)包含兩部分內(nèi)容: 一是要給出此指令要完成何種操作,這部分稱為指令操作碼;二是要給出參與操作的對(duì)象是什么,此部分稱為操作數(shù),在指令中可以直接給出操作數(shù)的值,或者操作數(shù)存放在何處,操作的結(jié)果應(yīng)送往何處等信息。處理器可根據(jù)指令字中給出的地址信息求出存放操作數(shù)的地址——稱為有效地址,然后對(duì)存放在有效地址中的操作數(shù)進(jìn)行存取操作。指令中關(guān)于如何求出存放操作數(shù)有效地址的方法稱為操作數(shù)的尋址方式。計(jì)算機(jī)按照指令給出的尋址方式求出操作數(shù)有效地址和存取操作數(shù)的過程稱為尋址操作。計(jì)算機(jī)的指令系統(tǒng)就是指該計(jì)算機(jī)能夠執(zhí)行的全部指令的集合。 本章首先介紹16位微處理器8086/8088的常用指令和尋址方式,在此基礎(chǔ)上以80386為對(duì)象講述32位微處理器的指令系統(tǒng)和尋址方式。對(duì)80x86的控制轉(zhuǎn)移類指令、串操作與重復(fù)前綴指令、子程序調(diào)用與返回指令以及中斷調(diào)用與返回指令的講解將穿插在第4章的匯編語(yǔ)言程序設(shè)計(jì)以及第8章的中斷和DMA技術(shù)中介紹,其目的就是為了使學(xué)習(xí)者更好地理解和應(yīng)用這些指令。 本章的主要內(nèi)容如下: 80386的尋址方式和指令系統(tǒng)。 80486/Pentium微處理器新增指令。 3.18086指令系統(tǒng)概述〖1〗3.1.1數(shù)據(jù)類型計(jì)算機(jī)中的數(shù)是用二進(jìn)制表示的,數(shù)的符號(hào)也是用二進(jìn)制表示的。把一個(gè)數(shù)連同其符號(hào)在機(jī)器中的表示加以數(shù)值化稱為機(jī)器數(shù),實(shí)際上機(jī)器數(shù)是將符號(hào)“數(shù)字化”所得到的數(shù)。計(jì)算機(jī)執(zhí)行指令過程中需要處理各種類型的機(jī)器數(shù),可處理的數(shù)據(jù)類型有7種。 1. 無符號(hào)二進(jìn)制數(shù) 無符號(hào)二進(jìn)制數(shù)是指不帶符號(hào)位的一個(gè)字節(jié)、字或雙字的二進(jìn)制數(shù)。2. 帶符號(hào)二進(jìn)制數(shù) 帶符號(hào)二進(jìn)制數(shù)有正、負(fù)之分,均以補(bǔ)碼形式表示。補(bǔ)碼由符號(hào)位加數(shù)值兩部分組成。帶符號(hào)數(shù)的*高位表示符號(hào)位,*高位為0表示為正,*高位為1表示為負(fù)。正數(shù)的補(bǔ)碼和原碼相同,負(fù)數(shù)的補(bǔ)碼是符號(hào)位保持不變(即為1),其余各位按位取反,再在*末位加1。 3. BCD碼 BCD碼是用二進(jìn)制數(shù)的形式表示的十進(jìn)制數(shù)。計(jì)算機(jī)中BCD碼有兩種,分別是非壓縮BCD碼和壓縮BCD碼兩種。前者用8位二進(jìn)制數(shù)表示一位十進(jìn)制數(shù),那么一個(gè)字節(jié)能表示的十進(jìn)制數(shù)的范圍是0~9;后者用4位二進(jìn)制數(shù)表示一位十進(jìn)制數(shù),那么一個(gè)字節(jié)能表示的十進(jìn)制數(shù)的范圍是0~99。例如,17的非壓縮BCD碼是0000000100000111B,即0107H;壓縮BCD碼是00010111B,即17H。 4. 定點(diǎn)數(shù)和浮點(diǎn)數(shù) 在計(jì)算機(jī)中,針對(duì)小數(shù)點(diǎn)的處理有兩種表示方法,分別是定點(diǎn)數(shù)表示法和浮點(diǎn)數(shù)表示法。 1) 定點(diǎn)數(shù)表示法 定點(diǎn)數(shù)表示法就是小數(shù)點(diǎn)固定在某個(gè)位置上。在定點(diǎn)計(jì)算機(jī)中,一般將小數(shù)點(diǎn)定在*高位(即純小數(shù))或?qū)⑿?shù)點(diǎn)定在*低位(即純整數(shù))。 2) 浮點(diǎn)數(shù)表示法 浮點(diǎn)表示法就是小數(shù)點(diǎn)的位置不固定。浮點(diǎn)數(shù)在計(jì)算機(jī)中通常的表示形式為“2的正/負(fù)階碼次方×尾數(shù)”,其中階碼是一個(gè)正整數(shù),尾數(shù)是一個(gè)小數(shù),尾數(shù)的區(qū)間為\[0.5,1\],如果尾數(shù)不在此區(qū)間,則要進(jìn)行規(guī)格化。規(guī)格化通過尾數(shù)左右移、階碼加減完成,其規(guī)則是: 尾數(shù)左移一次,階碼減1,尾數(shù)右移一次,階碼加1。 5. 串?dāng)?shù)據(jù) 計(jì)算機(jī)可以處理的串?dāng)?shù)據(jù)有以下幾種: 位串,一串連續(xù)的二進(jìn)制數(shù)。 字節(jié)串,一串連續(xù)的字節(jié)。 字串,一串連續(xù)的字。 雙字串,一串連續(xù)的雙字。 6. ASCII碼數(shù)據(jù) ASCII(American Standard Code for Information Interchange,美國(guó)信息交換標(biāo)準(zhǔn)碼)是一種字符數(shù)據(jù)的常用表示方法。包括ASCII碼字符、ASCII碼數(shù)和ASCII控制符等。 7. 指針類數(shù)據(jù) 指針類數(shù)據(jù)包括近程指針和遠(yuǎn)程指針。前者為16位的偏移量,用于段內(nèi)尋址、段內(nèi)數(shù)據(jù)訪問或轉(zhuǎn)移;后者由16位段值和16位的偏移量組成,用于段間尋址、段間數(shù)據(jù)訪問或段間轉(zhuǎn)移。 另外,在8086/8088處理機(jī)中,為了達(dá)到數(shù)據(jù)結(jié)構(gòu)的*大靈活性和*有效地使用內(nèi)存,字?jǐn)?shù)據(jù)不必定位于偶數(shù)地址,即允許不按2 的倍數(shù)邊界對(duì)齊。但是,對(duì)齊的字?jǐn)?shù)據(jù)可以一次傳送,而未對(duì)齊的字?jǐn)?shù)據(jù)則需要兩次傳送。為了獲得*佳性能,一般將字操作對(duì)齊于偶地址。 3.1.280x86指令的基本組成 80x86的匯編指令由操作碼和操作數(shù)兩部分組成。操作碼是指令的操作命令,操作數(shù)是指令的操作對(duì)象。匯編指令*后要翻譯成機(jī)器指令。 1. 指令的操作碼 80x86的機(jī)器指令的操作碼(OP)采用二進(jìn)制代碼表示本指令所執(zhí)行的操作。在大多數(shù)指令的操作碼中,常用某位指示圖3.18086操作碼格式 某些具體操作信息。圖3.1所示的8086操作碼含有3個(gè)特征位,分別為W位、D位和S位。它們的含義如下: (1) W位是字操作標(biāo)志位。當(dāng)W=1時(shí),表示當(dāng)前指令進(jìn)行字操作;當(dāng)W=0時(shí),表示當(dāng)前指令進(jìn)行字節(jié)操作。 (2) D位是對(duì)目標(biāo)操作數(shù)進(jìn)行寄存器尋址的標(biāo)志。對(duì)于雙操作數(shù)指令(立即數(shù)指令和串操作指令除外),其中一個(gè)操作數(shù)必定由寄存器指出。這時(shí),寄存器名通過后面的REG域指出,此外,要用D位指出寄存器所尋址的是源操作數(shù)還是目標(biāo)操作數(shù)。如D=1,則寄存器所尋址的是目標(biāo)操作數(shù);如D=0,則寄存器所尋址的是源操作數(shù)。 (3) S位是符號(hào)擴(kuò)展位。一個(gè)8位補(bǔ)碼可以擴(kuò)展為16位補(bǔ)碼。使所有高位等于低位字節(jié)的*高有效位(即符號(hào)位),這種擴(kuò)展叫符號(hào)擴(kuò)展,在加法指令、減法指令和比較指令中,S位和W位結(jié)合起來指出各種情況。例如,S=0,W=0時(shí),為8位操作數(shù);S=0,W=1時(shí),為16位操作數(shù)。 2. 機(jī)器指令格式 80x86的機(jī)器指令為1~6B。一般用指令的*個(gè)字節(jié)或者頭兩個(gè)字節(jié)表示指令的操作碼和尋址方式,通常稱為操作碼域。操作碼指出了執(zhí)行這條指令時(shí)CPU要做什么操作,尋址方式則表示執(zhí)行指令時(shí)所用的操作數(shù)的來源。圖3.2給出了8086指令格式。 圖3.28086指令格式 緊隨在操作碼域后的字節(jié)一般稱操作數(shù)域。至于操作數(shù)域?qū)儆趫D3.2中的哪一種情況,要由指令前半部分的操作碼和尋址方式確定。這里有幾點(diǎn)需要指出: (1) 一條指令可以包含一個(gè)操作數(shù),也可以包含一個(gè)以上的操作數(shù)。具有一個(gè)操作數(shù)的指令稱為單操作數(shù)指令,單操作數(shù)指令中的操作數(shù)可能由指令本身提供,也可能由指令隱含地指出。 (2) 若位移量或立即數(shù)為16位,那么在指令代碼中,將低位字節(jié)放在前面,高位字節(jié)放在后面。 (3) 80x86指令系統(tǒng)中大多數(shù)指令的操作碼安排在*個(gè)字節(jié),但有幾條指令是特殊的,其指令中的*個(gè)字節(jié)不但包含操作碼成分,而且還隱含地指出了寄存器名,從而整個(gè)指令只占一個(gè)字節(jié),成為單字節(jié)指令。這些指令字節(jié)數(shù)*少,執(zhí)行速度*快,用得也*頻繁。 3. 指令的執(zhí)行時(shí)間 指令執(zhí)行時(shí)間取決于時(shí)鐘周期長(zhǎng)短和執(zhí)行指令所需要的時(shí)鐘周期數(shù)。如果涉及內(nèi)存操作,那么執(zhí)行一條指令的時(shí)間為基本執(zhí)行時(shí)間加上計(jì)算有效地址所需要的時(shí)間。 8086的總線部件和執(zhí)行部件是并行工作的,因此在計(jì)算指令的基本執(zhí)行時(shí)間時(shí)都假定要執(zhí)行的指令已經(jīng)預(yù)先放在指令隊(duì)列中,也就是說,沒有計(jì)算取指時(shí)間。有些指令在執(zhí)行過程中要多次訪問內(nèi)存,因此,訪問內(nèi)存的次數(shù)也是考慮指令執(zhí)行總時(shí)間的重要因素。 可見,執(zhí)行一條指令所需的總時(shí)間為基本執(zhí)行時(shí)間、計(jì)算有效地址的時(shí)間和為了讀取操作數(shù)和存放操作結(jié)果需訪問內(nèi)存的時(shí)間之和。 3.28086/ 8088的尋址方式和指令系統(tǒng)〖1〗3.2.18086/8088的尋址方式在計(jì)算機(jī)的存儲(chǔ)器系統(tǒng)中存儲(chǔ)著兩類信息,一是數(shù)據(jù),二是程序。這里所說的程序就是指令序列。8086/8088的尋址方式包括程序?qū)ぶ贩绞胶蛿?shù)據(jù)尋址方式。數(shù)據(jù)尋址方式是指獲取指令所需的操作數(shù)或操作數(shù)地址的方式。程序的尋址方式是指在程序中出現(xiàn)轉(zhuǎn)移和調(diào)用時(shí)的程序定位方式。 1. 數(shù)據(jù)尋址方式 數(shù)據(jù)尋址方式就是尋找參加運(yùn)算的操作數(shù)的方式。80x86指令中所需的操作數(shù)來自以下3個(gè)方面。 (1) 操作數(shù)包含在指令中。在取指令的同時(shí),操作數(shù)也隨之得到,這種操作數(shù)稱為立即數(shù)。 (2) 操作數(shù)包含在CPU的某個(gè)內(nèi)部寄存器中,這種操作數(shù)稱為寄存器操作數(shù)。 (3) 操作數(shù)包含在存儲(chǔ)器中,這種操作數(shù)稱為存儲(chǔ)器操作數(shù)。 存儲(chǔ)器操作數(shù)存放在內(nèi)存單元中,在80x86微機(jī)系統(tǒng)中,任何內(nèi)存單元的地址均由段基址和偏移地址(又稱偏移量)組成,段基址由段寄存器提供,而偏移地址由以下4個(gè)基本部分組成。 (1) 基址,8086/8088系統(tǒng)的基址寄存器為BX和BP。 (2) 變址,8086/8088系統(tǒng)的變址寄存器為SI和DI。 (3) 比例因子,采用1、2、4或8幾種不同的比例因子。8086/8088系統(tǒng)中比例因子為1。 (4) 位移量,即相對(duì)于某個(gè)存儲(chǔ)單元的偏移量。 這4個(gè)部分稱為偏移地址的四元素。一般將這四元素按某種計(jì)算方法組合形成的偏移地址稱為有效地址(Effective Address,EA)。它們的組合和計(jì)算方法為 有效地址=基址+變址×比例因子+位移量 根據(jù)80x86系統(tǒng)的存儲(chǔ)器組織方式,指令中不能使用實(shí)際地址(即物理地址),而只使用邏輯地址或稱為操作數(shù)的線性地址,因此在求得有效地址后,可由有效地址和段首址形成邏輯地址。這4種元素可優(yōu)化組合出9種存儲(chǔ)器尋址方式。圖3.3給出這4種元素的優(yōu)化組合的尋址計(jì)算方法。 圖3.38086/8088的操作數(shù)尋址方式1) 立即尋址,操作數(shù)為立即數(shù) 8086/8088指令系統(tǒng)中,有一部分指令所用的8位或16位操作數(shù)由指令機(jī)器碼提供,這種方式稱為立即尋址方式,即操作數(shù)直接包含在指令機(jī)器碼中,它緊跟在操作碼的后面,與操作碼一起放在代碼區(qū)域中。 例3.10AH,AL=7FH MOVAL,5H ;AX←5H立即尋址方式主要用于給寄存器或存儲(chǔ)單元賦初值。因?yàn)椴僮鲾?shù)可以從指令中直接取得,不需要運(yùn)行總線周期,所以立即數(shù)尋址方式的顯著特點(diǎn)是執(zhí)行速度快。 2) 寄存器尋址,操作數(shù)為寄存器操作數(shù) 寄存器尋址是指操作數(shù)包含在CPU內(nèi)部的寄存器中。對(duì)于16位操作數(shù),寄存器可以是AX、BX、CX、DX、SI、DI、SP、BP,而對(duì)于8位操作數(shù),寄存器可以為AH、AL、BH、BL、CH、CL、DH、DL。寄存器尋址的指令本身存放在存儲(chǔ)器的代碼段,而操作數(shù)則在CPU寄存器中。由于指令執(zhí)行過程中不用訪問存儲(chǔ)器,因此執(zhí)行速度很快。 寄存器尋址可以進(jìn)行16位操作數(shù)操作,也可進(jìn)行8位操作數(shù)操作。 例3.2MOVAX,BX MOVAH,AL3) 存儲(chǔ)器尋址,操作數(shù)為存儲(chǔ)器操作數(shù) (1) 直接尋址。 直接尋址方式是在指令的操作碼后面直接給出操作數(shù)的16位偏移地址,這個(gè)偏移地址也稱有效地址(EA)。該有效地址與指令的操作碼一起存放在內(nèi)存的代碼段,也是低8位在前,高8位在后。操作數(shù)隱含數(shù)據(jù)段操作,存放在內(nèi)存的數(shù)據(jù)段(DS)區(qū)域中,在給定的16位有效地址的地方。 例3.33000H×10H+2000H=32000H 直接尋址一般多用于存取某個(gè)存儲(chǔ)單元中的操作數(shù),例如從一個(gè)存儲(chǔ)單元取操作數(shù),或者將一個(gè)操作數(shù)存入某個(gè)存儲(chǔ)單元。 (2) 寄存器間接尋址。 寄存器間接尋址方式是指令中的操作數(shù)存放在存儲(chǔ)器中,存儲(chǔ)單元的有效地址由寄存器指出,這些寄存器可以是BX、BP、SI、DI之一,即有效地址EA=基址寄存器的內(nèi)容或變址寄存器的內(nèi)容,對(duì)寄存器指向的存儲(chǔ)單元進(jìn)行數(shù)據(jù)操作。這些用來存放存儲(chǔ)器操作數(shù)偏移地址的寄存器稱為地址指針。 下面分別以BX、SI、DI進(jìn)行寄存器間接尋址(BX、SI、DI作為地址指針)的方式與以BP進(jìn)行寄存器間接尋址(BP作為地址指針)的方式為例進(jìn)行說明。在以BX、SI、DI進(jìn)行寄存器間接尋址時(shí),隱含的數(shù)據(jù)段寄存器為DS;而在以BP進(jìn)行寄存器間接尋址時(shí),隱含的數(shù)據(jù)段寄存器為SS。 例3.4DS×16+BX MOVBX,\[SI\] ;物理地址=DS×16+SI MOV\[DI\],DX ;物理地址=DS×16+DI例3.5SS×16+BP無論用BX、SI、DI或者BP作為間接寄存器,都允許段超越,即也可以使用上面所提到的約定情況以外的其他段寄存器。 例3.6ES×16+BX MOVDS:\[BP\],DX ;物理地址=DS×16+BP(3) 相對(duì)寄存器尋址。 相對(duì)寄存器尋址的有效地址EA=基址寄存器的內(nèi)容或變址寄存器的內(nèi)容±16位或8位位移量。以BX、SI、DI進(jìn)行寄存器間接尋址(BX、SI、DI作為地址指針)的方式,隱含的段寄存器為數(shù)據(jù)段寄存器DS;而以BP進(jìn)行寄存器間接尋址(BP作為地址指針)的方式,隱含的段寄存器為堆棧段寄存器SS。 ……
你還可能感興趣
我要評(píng)論
|