版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第二章計算機(jī)的基本工作原理與指令系統(tǒng)
本章主要內(nèi)容2.1計算機(jī)系統(tǒng)的硬件結(jié)構(gòu)計算機(jī)的五大主要部件計算機(jī)的總線結(jié)構(gòu)2.2CPU的組成與基本工作原理CPU的組成與基本工作原理計算機(jī)中數(shù)據(jù)信息的表示算術(shù)運(yùn)算與邏輯運(yùn)算的實現(xiàn)控制信號的產(chǎn)生典型CPU的總體結(jié)構(gòu)計算機(jī)硬件技術(shù)基礎(chǔ)第二章計算機(jī)的基本工作原理與指令系統(tǒng)
2.3內(nèi)存的組成及讀寫原理內(nèi)存組成和基本結(jié)構(gòu)內(nèi)存的讀寫典型微機(jī)的內(nèi)存接口內(nèi)存堆棧與堆棧操作
2.4指令系統(tǒng)
指令系統(tǒng)簡介
指令系統(tǒng)的發(fā)展2.5計算機(jī)的工作過程指令的執(zhí)行過程加速程序執(zhí)行的方法習(xí)題與思考題1—15、18、21、25、26、33、34計算機(jī)硬件技術(shù)基礎(chǔ)2.1.1計算機(jī)的主要部件
五大基本部件:輸入設(shè)備主存儲器輔助存儲器輸出設(shè)備運(yùn)算器控制器輸入輸出程序/原始數(shù)據(jù)運(yùn)算結(jié)果指令數(shù)據(jù)線控制信號線存儲器計算機(jī)硬件技術(shù)基礎(chǔ)2.1.1計算機(jī)的主要部件在計算機(jī)五大部分中,運(yùn)算器和控制器是最核心的部分,通常做在一個器件上,稱作CPU(CenterProcessingUnit)。
CPU=控制器+運(yùn)算器(+寄存器組)只有主存(內(nèi)存)可直接與CPU交換信息,它與CPU組合可實現(xiàn)計算機(jī)的基本功能。
主機(jī)=CPU+主存儲器輸入/輸出(Input/Output)設(shè)備和外存合稱“外圍設(shè)備”。
外設(shè)=I/O+輔助存儲器
計算機(jī)硬件技術(shù)基礎(chǔ)2.1.2計算機(jī)的總線結(jié)構(gòu)
總線是一組能為多個部件服務(wù)的公共信息傳送線路,分時地發(fā)送與接收各部件的信息。計算機(jī)的五大部件之間就是通過(Bus)連接實現(xiàn)信息交換的。根據(jù)總線所傳輸?shù)男畔⑼ǔ0芽偩€分為地址總線、數(shù)據(jù)總線和控制總線。簡稱三大總線。三大總線=數(shù)據(jù)總線+地址總線+控制總線地址總線(AB):單向,用于向內(nèi)存、輸入/輸出設(shè)備傳輸?shù)刂沸畔ⅰ?shù)據(jù)總線(DB):雙方,傳輸各種數(shù)據(jù)信息??刂瓶偩€(CB):傳輸控制信息計算機(jī)硬件技術(shù)基礎(chǔ)2.1.2計算機(jī)的總線結(jié)構(gòu)微型計算機(jī)通常把各大部件都連接在單一的一組總線上,各部件間的信息交換都經(jīng)過這組總線,因此稱其為系統(tǒng)總線。這種結(jié)構(gòu)提高了CPU的工作效率,而且外設(shè)連接靈活,易于擴(kuò)充。但由于所有部件都掛在同一組總線上,而總線又只能分時的工作,故同一時刻只允許一對設(shè)備(或部件)之間傳送信息,這使信息傳送的吞吐率受到限制,此外,總線的管理也比較復(fù)雜。系統(tǒng)總線CPU內(nèi)存接口外部設(shè)備接口外部設(shè)備….單總線結(jié)構(gòu)計算機(jī)硬件技術(shù)基礎(chǔ)2.2.1中央處理器的基本構(gòu)成指令寄存器(IR)指令譯碼器(ID)操作控制器(OC)寄存器組(IR)通用寄存器組堆棧指針(SP)程序計數(shù)器(PC)累加器(ACC)累加器鎖存器暫存器標(biāo)志寄存器(FR)地址緩存器數(shù)據(jù)緩存器內(nèi)部總線控制器運(yùn)算器控制總線(CB)地址總線(AB)數(shù)據(jù)總線(DB)ALU是運(yùn)算器的核心,它是以全加器為基礎(chǔ),輔以移位寄存器及相應(yīng)的控制邏輯組合而成的電路,在控制信號的作用下可完成加、減、乘、除幾各種邏輯運(yùn)算。累加器是一個特殊的通用寄存器,他總是提供送入ALU的兩個運(yùn)算操作數(shù)之一,且運(yùn)算后的結(jié)果又總是返回累加器。暫存器的作用保從將要送入ALU運(yùn)算的操作數(shù)器。寄存器組用于暫存數(shù)據(jù)、命令指令寄存器組用于存放要執(zhí)行的指令。根據(jù)指令內(nèi)容,發(fā)出控制信號。標(biāo)志寄存器主要用于存放ALU操作結(jié)果的狀態(tài)和特征:包括兩部分內(nèi)容:狀態(tài)標(biāo)志,如:進(jìn)位標(biāo)志、結(jié)果為零標(biāo)志等,大多數(shù)運(yùn)算類指令的執(zhí)行將會影響到這些標(biāo)志位??刂茦?biāo)志,如:中斷標(biāo)志、陷阱標(biāo)志等。。計算機(jī)硬件技術(shù)基礎(chǔ)2.2.1中央處理器的基本構(gòu)成1.運(yùn)算器⑴累加器A:N位的寄存器,用于保存運(yùn)算過程中的有關(guān)數(shù)據(jù)。⑵暫存器:N位寄存器,接收來自累加器和數(shù)據(jù)總線的數(shù)據(jù)。⑶加法器Σ:由N個全加器構(gòu)成。加法器的兩個輸入:累加器A、暫存器加法器的輸出:送入累加器A,也可以發(fā)送給數(shù)據(jù)總線DB。計算機(jī)硬件技術(shù)基礎(chǔ)2.2.1中央處理器的基本構(gòu)成2.控制器⑴程序計數(shù)器PC,又稱指令計數(shù)器⑵指令寄存器IR,存放從內(nèi)存中取出的待執(zhí)行的指令。⑶指令譯碼器ID,又稱操作碼譯碼器或指令功能分析解釋器。⑷地址形成部件⑸微操作信號發(fā)生器
指令的執(zhí)行都可分解成一系列微操作控制信號。微操作信號發(fā)生器的根據(jù)指令譯碼器的輸出和時序部件提供的定時信號,確定完成該指令所需要的步驟以及完成每一步驟所需要的控制信號組合。⑹時序部件,給出定時信號以確定產(chǎn)生控制信號的具體時間。計算機(jī)硬件技術(shù)基礎(chǔ)2.2.2計算機(jī)中數(shù)據(jù)信息的表示數(shù)字化信息編碼的概念:在計算機(jī)中,數(shù)字是以一串“0”或“1”的二進(jìn)制代碼來表示的,這是一種計算機(jī)唯一能識別的機(jī)器語言。所有需要計算機(jī)加以處理的數(shù)、字字母、文字、圖形、圖象、聲音等信息以及控制操作等命令(人讀數(shù)據(jù))都必須采用二進(jìn)制編碼(機(jī)讀數(shù)據(jù))來表示和處理。也就是說:在計算機(jī)內(nèi)一切信息必須進(jìn)行數(shù)字化編碼(即用二進(jìn)制代碼形式),才能在機(jī)內(nèi)傳送、存儲和處理。
人們輸入到計算機(jī)中的各種信息,都要通過系統(tǒng)自動轉(zhuǎn)換成計算機(jī)能處理的二進(jìn)制數(shù),處理完成后,系統(tǒng)把這些處理過的二進(jìn)制數(shù)再自動還原成各種信息。即:輸入→處理→輸出
(多類型信息1)(二進(jìn)制)(多類型信息2)計算機(jī)硬件技術(shù)基礎(chǔ)2.2.2計算機(jī)中數(shù)據(jù)信息的表示進(jìn)位計數(shù)制:
按進(jìn)位的方法進(jìn)行計數(shù),稱為進(jìn)位計數(shù)制。也就是數(shù)字累計到最大計數(shù)(進(jìn)制數(shù))時,數(shù)碼長度就增加一位或數(shù)碼高位數(shù)值增1。任意進(jìn)制數(shù)的表示基數(shù)(K):是最大進(jìn)位數(shù)(進(jìn)制數(shù)),例如:十進(jìn)制基數(shù)為10;六十進(jìn)制(時間)的基數(shù)為60等。系數(shù)(m):每個數(shù)位上的值,取值范圍0—k-1【例】數(shù)32343.43可以分解為:
3×104+2×103+3×102+4×101+3×100+4×10-1+3×10-2位權(quán)位權(quán)位權(quán)位權(quán)位權(quán)位權(quán)位權(quán)計算機(jī)硬件技術(shù)基礎(chǔ)可用數(shù)碼進(jìn)位基數(shù)0…K-10123456789ABCDEF01234567010123456789逢K進(jìn)1逢16進(jìn)1逢8進(jìn)1逢2進(jìn)1逢10進(jìn)1K168210K進(jìn)制十六進(jìn)制八進(jìn)制二進(jìn)制十進(jìn)制常用數(shù)制2.2.2計算機(jī)中數(shù)據(jù)信息的表示K進(jìn)制數(shù)的某些性質(zhì):小數(shù)點(diǎn)右移n位——相當(dāng)于乘以Kn(增加Kn倍)小數(shù)點(diǎn)左移n位——相當(dāng)于除以Kn(為Kn份之一)思考:m位K進(jìn)制數(shù),其最大數(shù)值是多少?最小數(shù)值是多少?計算機(jī)硬件技術(shù)基礎(chǔ)十進(jìn)制數(shù)轉(zhuǎn)換為K進(jìn)制數(shù)將整數(shù)部份和小數(shù)部份分開來算,位權(quán)展開法整數(shù)部份:除以K取余數(shù),直到商為0,余數(shù)從自下而上排列小數(shù)部份:以小數(shù)部分乘以K取積的整數(shù),并將其自上而下排列,直
計算機(jī)中數(shù)據(jù)信息的表示到小數(shù)部份為0或規(guī)定精度為止【例】將(100.345)10轉(zhuǎn)換為二進(jìn)制除2取余余數(shù)整數(shù)乘2取整2|23710.6252|1180取×22|59111.2502|291值0.252|140×2
轉(zhuǎn)換結(jié)果為:11101101.1012|71方00.502|31×22|11向11.00計算機(jī)硬件技術(shù)基礎(chǔ)2.2.2計算機(jī)中數(shù)據(jù)信息的表示除8取余余數(shù)整數(shù)乘8取整8|2375取0.6258|295值×88|33方55.0000向計算機(jī)硬件技術(shù)基礎(chǔ)2.2.2計算機(jī)中數(shù)據(jù)信息的表示除16取余余數(shù)整數(shù)乘16取整16|237D(13)取0.62516|14E(14)值×16
0方A10.000向計算機(jī)硬件技術(shù)基礎(chǔ)2.2.2計算機(jī)中數(shù)據(jù)信息的表示十六進(jìn)制數(shù)→二進(jìn)制數(shù)方法:將每位十六進(jìn)制數(shù)用其對應(yīng)的4位二進(jìn)制數(shù)代替即可。例:1E.4H=00011110.0100B=11110.01B7D.2H=01111101.0010B=1111101.001B計算機(jī)硬件技術(shù)基礎(chǔ)2.2.2計算機(jī)中數(shù)據(jù)信息的表示總結(jié):十進(jìn)制數(shù)與二進(jìn)制數(shù)之間的轉(zhuǎn)換需計算,不直觀;二進(jìn)制表示的數(shù)位多不便于書寫、閱讀;八進(jìn)制、十六進(jìn)制數(shù)與二進(jìn)制數(shù)間轉(zhuǎn)換方便、直觀,相對于二進(jìn)制數(shù),八進(jìn)制、十六進(jìn)制數(shù)書寫、閱讀相對方便計算機(jī)硬件技術(shù)基礎(chǔ)2.2.2計算機(jī)中數(shù)據(jù)信息的表示1.二進(jìn)制數(shù)的表示無符號數(shù):正整數(shù)。帶符號數(shù):正數(shù)或負(fù)數(shù)。最高位為符號位,“0”表示“+”,“1”表示“–”。這種表示數(shù)的形式稱為機(jī)器數(shù)。原碼、反碼、補(bǔ)碼。⑴原碼高位為符號位,如:八位的原碼X1=+9=+1001B[X1]原=00001001X2=–9=–1001B[X2]原=10001001在原碼表示中,0有兩種不同的表示形式:[+0]原=00000000[–0]原=10000000設(shè)字長為n+1位(含1位符號位),原碼的表示范圍為:–(2n–1)~(2n–1)。若字長為8位,則表示范圍為–127~127。計算機(jī)硬件技術(shù)基礎(chǔ)例:機(jī)器字長8位,[-46]補(bǔ)碼=?[46]補(bǔ)碼=001011101101000111010010=D2H機(jī)器字長16位,[-46]補(bǔ)碼=FFD2H
[+0]補(bǔ)碼=000000001111111100000000=00H=
[-0]補(bǔ)碼0的表示唯一按位求反末位加一按位求反末位加一2.2.2計算機(jī)中數(shù)據(jù)信息的表示(3)補(bǔ)碼:正數(shù)的補(bǔ)碼:同原碼負(fù)數(shù)的補(bǔ)碼:(1)寫出與該負(fù)數(shù)相對應(yīng)的正數(shù)的補(bǔ)碼
(2)按位求反
(3)末位加一計算機(jī)硬件技術(shù)基礎(chǔ)2.2.2計算機(jī)中數(shù)據(jù)信息的表示2.三種機(jī)器數(shù)的比較主要區(qū)別有以下幾點(diǎn):⑴對于正數(shù)它們相等,而對于負(fù)數(shù)各有不同的表示。⑵補(bǔ)碼和反碼的符號位可作為數(shù)值位的一部分看待,但原碼的符號位不允許和數(shù)值位同等看待。⑶原碼和反碼各有兩種零的表示法,而補(bǔ)碼具有唯一的一種零的表示法。⑷
原碼、反碼表示的正、負(fù)數(shù)范圍相對零來說是對稱的,但補(bǔ)碼負(fù)數(shù)表示范圍較正數(shù)表示范圍寬。計算機(jī)硬件技術(shù)基礎(chǔ)2.2.2計算機(jī)中數(shù)據(jù)信息的表示⑸符號擴(kuò)展:將低精度數(shù)轉(zhuǎn)換為高精度數(shù),如將8位轉(zhuǎn)換為16位。原碼的符號擴(kuò)展正數(shù):00101001→0000000000101001負(fù)數(shù):10101001→
1000000000101001反碼的符號擴(kuò)展正數(shù):00101001→
0000000000101001負(fù)數(shù):10101001→
1111111110101001補(bǔ)碼的符號擴(kuò)展正數(shù):00101001→
0000000000101001負(fù)數(shù):10101001→
1111111110101001
80X86有符號擴(kuò)展的專用指令。計算機(jī)硬件技術(shù)基礎(chǔ)2.2.2計算機(jī)中數(shù)據(jù)信息的表示⑵浮點(diǎn)表示法
小數(shù)點(diǎn)的位置不固定,根據(jù)需要而浮動。任何一個數(shù)N的浮點(diǎn)表示形式為:N=M×2E
式中:E和M都是帶符號的定點(diǎn)數(shù),E為階碼部分,M為尾數(shù)部分。在大多數(shù)計算機(jī)中,尾數(shù)為純小數(shù),階碼為純整數(shù)。階碼部分的符號位為es,階碼的大小反映了在數(shù)N中小數(shù)點(diǎn)的實際位置;尾數(shù)部分的符號位為ms,它是整個浮點(diǎn)數(shù)的符號位,表示了該浮點(diǎn)數(shù)的正負(fù)。浮點(diǎn)表示法與定點(diǎn)表示法比較,在相同字長下前者所能表示數(shù)的范圍要大得多,且可以不取比例因子,使用比較方便。計算機(jī)硬件技術(shù)基礎(chǔ)2.2.2計算機(jī)中數(shù)據(jù)信息的表示4.十進(jìn)制數(shù)的表示BCD碼:二進(jìn)制編碼的十進(jìn)制數(shù)(Binary-CodeDecimal),一般用四位二進(jìn)制代碼來表示一位十進(jìn)制數(shù),使用最廣泛的是8421碼,通常稱其為標(biāo)準(zhǔn)BCD碼(NBCD碼),在80X86微處理器中干脆就稱之為BCD碼。8421碼的主要特點(diǎn):簡單直觀。從高到低各位的權(quán)分別為8、4、2、1。不允許出現(xiàn)1010~1111。這六個代碼在8421碼中是非法碼。
BCD碼與二進(jìn)制數(shù)之間轉(zhuǎn)換沒有直接關(guān)系, 必須先轉(zhuǎn)換成十進(jìn)制,然后轉(zhuǎn)換成二進(jìn)制。例:1111111B=255D=0010,0101,0101BCD 0010,0101,0101BCD=255D=11111111B計算機(jī)硬件技術(shù)基礎(chǔ)2.2.2計算機(jī)中數(shù)據(jù)信息的表示
5.非數(shù)值數(shù)據(jù)的表示
通常是指字符、字符串、圖形符號和漢字等各種數(shù)據(jù),它們通常不用來表示數(shù)值的大小,因此又稱為非數(shù)值數(shù)據(jù),一般情況下不對它們進(jìn)行算術(shù)運(yùn)算。(1)ASCⅡ目前在微機(jī)上使用最廣泛的是ASCⅡ(美國標(biāo)準(zhǔn)信息交換碼,以被ISO認(rèn)定為國際標(biāo)準(zhǔn)),可表示128種字符的7位基本ASCⅡ碼(國際通用)和可表示256種字符的8位擴(kuò)充ASCⅡ碼(可重新定義)。ASCⅡ碼可分為:顯示字符(例如鍵盤字符鍵的編碼,“0”為48,“A”為65)和控制字符(例如return、backspace鍵的編碼分別為13、8)。計算機(jī)硬件技術(shù)基礎(chǔ)2.2.2計算機(jī)中數(shù)據(jù)信息的表示計算機(jī)硬件技術(shù)基礎(chǔ)2.2.2計算機(jī)中數(shù)據(jù)信息的表示(2)漢字編碼漢字是一種象形文字,無法直接用標(biāo)準(zhǔn)西文鍵盤輸入,必須經(jīng)過轉(zhuǎn)換間接輸入;漢字的字?jǐn)?shù)也較多,不能用單字節(jié)的ASCⅡ(256個字符)來表示。因此,按照不同的目的和需要,產(chǎn)生了多種漢字編碼系統(tǒng)與漢字輸入方法。目前采用兩個字節(jié)(可以表示64K字符)的漢字編碼方案。由于漢字的應(yīng)用范圍較廣(東南亞國家),漢字的編碼字符集不相同,中國大陸常用GB/GBK碼,臺灣BIG5。計算機(jī)硬件技術(shù)基礎(chǔ)2.2.2計算機(jī)中數(shù)據(jù)信息的表示漢字處理過程漢字系統(tǒng)對每個漢字預(yù)先規(guī)定輸入計算機(jī)中的代碼,即漢字的外部碼(例如拼音輸入碼)。計算機(jī)為了識別漢字,要把漢字的外部碼轉(zhuǎn)換成內(nèi)部碼(二進(jìn)制代碼)進(jìn)行存儲和處理。輸出時,還將漢字的內(nèi)部碼轉(zhuǎn)換成漢字的字形碼。計算機(jī)處理漢字的總過程如下:鍵盤管理程序漢字處理程序外部(輸入)碼→機(jī)內(nèi)碼→字形(輸出)碼
(鍵盤)(計算機(jī)存儲、傳輸)(計算機(jī)輸出漢字)↑↓↑↓漢字信息交換碼(國標(biāo)碼)漢字信息↓↑其它系統(tǒng)代碼計算機(jī)硬件技術(shù)基礎(chǔ)2.2.2計算機(jī)中數(shù)據(jù)信息的表示交換碼
用于計算機(jī)與其他系統(tǒng)或設(shè)備之間進(jìn)行漢字代碼信息交換的標(biāo)準(zhǔn)漢字代碼,目前最常使用的是國標(biāo)碼1981年的GB2312-80,7445;2000年的GB18030-2000,27000
特點(diǎn)每個漢字(圖形符號)用兩個字節(jié)表示,每個字節(jié)只用低7位,即最高位為0的二進(jìn)制碼。在128種編碼表示中,有94種用來表示漢字的編碼。此標(biāo)準(zhǔn)的漢字編碼表有94行、94列,分別為區(qū)號和位號。漢字編碼使用的高字節(jié)稱為區(qū)碼,低字節(jié)稱為位碼。漢字分為兩級:一級為使用頻度高的常用漢字;二級為次常用的漢字;2.2.2計算機(jī)中數(shù)據(jù)信息的表示內(nèi)部碼
也稱漢字內(nèi)碼或漢字機(jī)內(nèi)碼,是計算機(jī)對漢字進(jìn)行存儲、運(yùn)算、傳碼的實際代碼。
特點(diǎn)是由0和1組成的二進(jìn)制代碼。一個漢字對應(yīng)一個機(jī)內(nèi)碼,即漢字?jǐn)?shù)目=機(jī)內(nèi)碼數(shù)目;一般用兩個字節(jié)表示一個漢字的內(nèi)碼且每個字節(jié)最高位為1。還有少數(shù)三字節(jié)、四字節(jié)等內(nèi)部碼最多能表示128×128=16384個漢字和圖形符號;機(jī)內(nèi)碼目前雖未完全統(tǒng)一,但已趨于標(biāo)準(zhǔn)化。內(nèi)部碼與國標(biāo)碼的對應(yīng)關(guān)系:內(nèi)碼=國標(biāo)碼+8080即國標(biāo)碼每個字節(jié)最高位為1→內(nèi)部碼。例如:國標(biāo)碼3B7A→0011101101111010那么,機(jī)內(nèi)碼BBFA→1011101111111010外部碼
也叫漢字輸入編碼,主要是從鍵盤(語音、手寫、光電)輸入計算機(jī)中的代表漢字的編碼。鍵盤輸入方式目前漢字輸入方案有數(shù)百種,基本上是直接利用西文標(biāo)準(zhǔn)鍵盤進(jìn)行漢字輸入,每一種漢字輸入法都各自提供相應(yīng)的鍵盤碼與漢字機(jī)內(nèi)碼(碼表),編碼方案大致可分以下四類:數(shù)碼(如電報碼,區(qū)位碼,國標(biāo)碼等)音碼(如全拼碼,簡拼碼,雙拼碼等)形碼(如五筆字型,大眾碼,倉吉碼等)音形碼(如自然碼,首尾碼等)2.2.2計算機(jī)中數(shù)據(jù)信息的表示各種輸入碼交換碼(國標(biāo)碼)內(nèi)碼字形碼顯示漢字打印漢字漢字代碼交換流程2.2.2計算機(jī)中數(shù)據(jù)信息的表示計算機(jī)硬件技術(shù)基礎(chǔ)2.2.2計算機(jī)中數(shù)據(jù)信息的表示6.現(xiàn)代微機(jī)系統(tǒng)中的數(shù)據(jù)類型舉例支持浮點(diǎn)運(yùn)算的浮點(diǎn)部件(FPU)。8086—80386對應(yīng)8087—80387,80486以后嵌入于CPU內(nèi)部。⑴無符號二進(jìn)制數(shù)字節(jié):8位數(shù),存放在任何邏輯地址上的8位二進(jìn)制數(shù)。字:16位數(shù),存放在任何字節(jié)地址開始的2個相鄰字節(jié)。雙字:32位數(shù),存放在任何字節(jié)地址開始的2個相鄰字(4個相鄰字節(jié))。⑵帶符號的二進(jìn)制定點(diǎn)整數(shù)所有帶符號的數(shù)都以補(bǔ)碼形式表示,符號位是最高位(MSB)。字節(jié):補(bǔ)碼表示的8位帶符號數(shù)。字整數(shù)(字):補(bǔ)碼表示的16位帶符號數(shù)。短整數(shù)(雙字):補(bǔ)碼表示的32位帶符號數(shù)。長整數(shù)(四倍字):補(bǔ)碼表示的64位帶符號數(shù)。CPU支持前3種,浮點(diǎn)部件(FPU)支持后3種。計算機(jī)硬件技術(shù)基礎(chǔ)2.2.2計算機(jī)中數(shù)據(jù)信息的表示⑶浮點(diǎn)數(shù)由FPU支持,數(shù)據(jù)格式基于IEEE754標(biāo)準(zhǔn),它與前面介紹的浮點(diǎn)數(shù)格式有一些差別。⑷BCD數(shù)BCD數(shù)分成壓縮的BCD數(shù)(BCD數(shù))和非壓縮的BCD數(shù)(UBCD數(shù))兩種。壓縮的BCD數(shù)是每個字節(jié)包含兩位十進(jìn)制數(shù),其低位在0~3位上,高位在4~7位上;而非壓縮的BCD數(shù)每個字節(jié)僅包含一位十進(jìn)制數(shù),在0~3位上。CPU支持兩種BCD數(shù),而FPU只支持壓縮的BCD數(shù)。計算機(jī)硬件技術(shù)基礎(chǔ)2.2.2計算機(jī)中數(shù)據(jù)信息的表示⑸串?dāng)?shù)據(jù)包括字節(jié)串、字符串和雙字符串,串長度為0到232-1字節(jié)。只有CPU支持串?dāng)?shù)據(jù)。⑹指針數(shù)據(jù)包括近指針和遠(yuǎn)指針兩種。近指針即32位指針,是一個32位的段內(nèi)偏移量,用于段內(nèi)單元訪問。遠(yuǎn)指針即48位指針,由16位選擇符和32位偏移量組成,用于段間單元訪問。計算機(jī)硬件技術(shù)基礎(chǔ)2.2.3算術(shù)運(yùn)算與邏輯運(yùn)算的實現(xiàn)1.二進(jìn)制加減運(yùn)算用原碼進(jìn)行加法運(yùn)算時必須根據(jù)兩數(shù)的符號和數(shù)值大小來決定運(yùn)算結(jié)果的符號,這將增加機(jī)器的復(fù)雜性和運(yùn)算時間。補(bǔ)碼加減法運(yùn)算是最簡單的加法:[X+Y]補(bǔ)=[X]補(bǔ)+[Y]補(bǔ)減法:[X-Y]補(bǔ)=[X+(-Y)]補(bǔ)=[X]補(bǔ)+[-Y]補(bǔ)
已知[Y]補(bǔ)求[-Y]補(bǔ)的方法:將[Y]補(bǔ)連同符號位一起求反,末尾加“1”。[-Y]補(bǔ)稱為[Y]補(bǔ)的機(jī)器負(fù)數(shù)。計算機(jī)硬件技術(shù)基礎(chǔ)2.2.3算術(shù)運(yùn)算與邏輯運(yùn)算的實現(xiàn)補(bǔ)碼加減運(yùn)算規(guī)則
①
參加運(yùn)算的兩個操作數(shù)均用補(bǔ)碼表示;
②
符號位作為數(shù)的一部分參加運(yùn)算;③
若做加法,則兩數(shù)直接相加,若做減法,則將被減數(shù)與減數(shù)的機(jī)器負(fù)數(shù)相加;
④
運(yùn)算結(jié)果用補(bǔ)碼表示。
例1:64(-46)18+010000001101001000010010+計算機(jī)硬件技術(shù)基礎(chǔ)2.2.3算術(shù)運(yùn)算與邏輯運(yùn)算的實現(xiàn)例2:A=+01011,B=-01110,求[A+B]補(bǔ)。01011[A]補(bǔ)+10010[B]補(bǔ)11101[A+B]補(bǔ)例3:A=+01011,B=-00010,求[A-B]補(bǔ)。01011[A]補(bǔ)+00010[-B]補(bǔ)01101[A-B]補(bǔ)
A=11B=-14A+B=-3[A+B]原=10011(B)A=11B=-2A-B=13[A+B]原=01101(B)計算機(jī)硬件技術(shù)基礎(chǔ)2.2.3算術(shù)運(yùn)算與邏輯運(yùn)算的實現(xiàn)2.溢出的產(chǎn)生和判斷當(dāng)所得的結(jié)果超過機(jī)器允許的額定位數(shù),就會出現(xiàn)錯誤,這種情況被稱為溢出。兩個符號相同的數(shù)相加,和的符號相反;兩個符號不同的數(shù)相減,差的符號和減數(shù)相同;將符號位擴(kuò)充為兩位(Ss1、Ss2),既能判別是否溢出,又能指出結(jié)果的符號。兩個符號位作為數(shù)的一部分參加運(yùn)算。
Ss1、Ss2=00結(jié)果為正數(shù),無溢出11結(jié)果為負(fù)數(shù),無溢出01結(jié)果正溢出
10結(jié)果負(fù)溢出80X86CPU中根據(jù)標(biāo)志位OF來判斷。無符號數(shù)在運(yùn)算時也可能產(chǎn)生,如8位數(shù)相加,128+128=256,而8位變?yōu)?。80X86CPU中可根據(jù)標(biāo)志位CF來判斷。計算機(jī)硬件技術(shù)基礎(chǔ)2.2.3算術(shù)運(yùn)算與邏輯運(yùn)算的實現(xiàn)00,1011(+11)11,0101(-11)+00,0111(+7)+11,1001(-7)01,0010(正溢出)10,1110(負(fù)溢出)00,1011(+11)11,0101(-11)+11,1001(-7)+00,0111(7)00,0100(+4)11,1100(-4)計算機(jī)硬件技術(shù)基礎(chǔ)2.2.3算術(shù)運(yùn)算與邏輯運(yùn)算的實現(xiàn)3.其它算術(shù)運(yùn)算簡介⑴二進(jìn)制乘除運(yùn)算二進(jìn)制的乘除運(yùn)算可以由專用的乘法器或除法器來實現(xiàn),也可以用一個加法器經(jīng)過多次迭代來實現(xiàn)。⑵十進(jìn)制數(shù)的算術(shù)運(yùn)算在許多通用性較強(qiáng)的計算機(jī)中都可采用BCD碼進(jìn)行算術(shù)運(yùn)算。十進(jìn)制數(shù)相加時是“逢十進(jìn)一”,而BCD數(shù)運(yùn)算卻是“逢十六進(jìn)一”,兩者在進(jìn)位時相差6(即0110),必須要做相應(yīng)的調(diào)整。如:用8421碼數(shù)進(jìn)行加法運(yùn)算時,當(dāng)和數(shù)大于9或向高位有進(jìn)位時,必須對該位加校正值(0110)調(diào)整,才能得到正確的結(jié)果。十進(jìn)制數(shù)在進(jìn)行減法、乘法和除法運(yùn)算時,也需要做相應(yīng)的調(diào)整。計算機(jī)硬件技術(shù)基礎(chǔ)2.2.3算術(shù)運(yùn)算與邏輯運(yùn)算的實現(xiàn)例:A=00010111(17BCD),B=00010011(13BCD),求A+B(BCD)。00010111+00010011001010101010≥10(D),需調(diào)整。+0000011000110000例:A=00010111(18BCD),B=00010011(19BCD),求A+B(BCD)。00011000+0001100100110001有進(jìn)位,需調(diào)整。+0000011000110111計算機(jī)硬件技術(shù)基礎(chǔ)2.2.3算術(shù)運(yùn)算與邏輯運(yùn)算的實現(xiàn)4.邏輯運(yùn)算(按位操作)與、或、非、異或等。邏輯運(yùn)算是按位進(jìn)行的,位與位之間沒有進(jìn)位/借位的關(guān)系。“與”運(yùn)算(AND)“或”運(yùn)算(OR)ABABABAB000000010011100101111111“非”運(yùn)算(NOT)“異或”運(yùn)算(XOR)AAABAB0100010011101110計算機(jī)硬件技術(shù)基礎(chǔ)2.2.3算術(shù)運(yùn)算與邏輯運(yùn)算的實現(xiàn)例:X=10111101,Y=11011110
X=10111101Y=11011110
10011100
X=10111101Y=11011110
11111111
X=10111101
X=01000010
X=10111101
Y=11011110
01100011計算機(jī)硬件技術(shù)基礎(chǔ)2.2.4控制信號的產(chǎn)生1.時序系統(tǒng)時序系統(tǒng)是控制器的心臟,其功能是為指令的執(zhí)行提供各種定時信號。時序系統(tǒng)是有周期性的時鐘脈沖信號組成。其中包括:時鐘周期:時鐘脈沖信號的間隔時間稱為時鐘周期,CPU的任何操作都是在時鐘脈沖的統(tǒng)一控制下一步一步地進(jìn)行的。機(jī)器周期:每個機(jī)器周期完成一個任務(wù)。機(jī)器周期由若干時鐘周期組成。指令周期:一條指令從取出、分析、取數(shù)到執(zhí)行完該指令所需的全部時間。指令周期與指令的操作功能有關(guān),若干個機(jī)器周期組成一個指令周期。總線周期:在微型計算機(jī)中,CPU與外部系統(tǒng)(內(nèi)存或外設(shè))的信息交換都是通過總線進(jìn)行的,將CPU一次訪問(即讀或?qū)懀﹥?nèi)存或外設(shè)所花費(fèi)的時間,稱為總線周期。計算機(jī)硬件技術(shù)基礎(chǔ)2.2.4控制信號的產(chǎn)生在8086微處理器中,一個最基本的總線周期由4個時鐘周期組成,在T4結(jié)束后,又開始新的總線周期。如果內(nèi)存或外設(shè)的讀寫速度跟不上CPU的訪問速度時,可以在第三個時鐘周期T3之后插入等待時鐘周期TW,插入TW的個數(shù)與READY信號低電平的持續(xù)時間長短有關(guān)。
計算機(jī)硬件技術(shù)基礎(chǔ)2.2.4控制信號的產(chǎn)生2.控制電路的硬件實現(xiàn)方法微操作信號發(fā)生器是整個控制器的核心,它的輸入是譯碼后的指令操作碼,輸出是微操作控制命令??刂破骺煞譃橛膊季€控制器和微程控器,根本區(qū)別在于微操作信號發(fā)生器的實現(xiàn)方法不同。⑴
硬布線控制器硬布線控制器(組合邏輯控制器),采用組合邏輯技術(shù)來實現(xiàn),微操作信號發(fā)生器由門電路組成。特點(diǎn)指令執(zhí)行速度快微操作信號發(fā)生器的結(jié)構(gòu)不規(guī)整,設(shè)計、調(diào)試、維修較困難,難以實現(xiàn)設(shè)計自動化。計算機(jī)硬件技術(shù)基礎(chǔ)2.2.4控制信號的產(chǎn)生⑵
微程控器把微操作控制命令代碼化,每條機(jī)器指令轉(zhuǎn)化成為一段微程序(指令的微程序)。特點(diǎn)設(shè)計規(guī)整、調(diào)試、維修以及更改、擴(kuò)充指令方便,易于實現(xiàn)自動化設(shè)計。增加了一級控制內(nèi)存,指令的執(zhí)行速度比硬布線控制器慢。3.微程控原理指令微程序化將指令分解為基本操作(微操作)。將同時發(fā)出的控制信號所執(zhí)行的一組微操作稱為一條微指令,一條指令對應(yīng)于若干個微指令。微程序固化在微程控器的只讀控制內(nèi)存中計算機(jī)硬件技術(shù)基礎(chǔ)2.2.5典型CPU的總體結(jié)構(gòu)1.8086的內(nèi)部結(jié)構(gòu)計算機(jī)硬件技術(shù)基礎(chǔ)2.2.5典型CPU的總體結(jié)構(gòu)
⑴執(zhí)行部件EUEU負(fù)責(zé)執(zhí)行全部指令從BIU的指令隊列中取得指令,經(jīng)控制單元譯碼、產(chǎn)生完成該指令所需的各種控制信號,完成規(guī)定的操作。ALU進(jìn)行算術(shù)、邏輯運(yùn)算,或計算出存儲單元的16位偏移地址送給BIU,由BIU生成20位的實際物理地址,再與外部總線交換數(shù)據(jù)。EU的通用寄存器組暫存指令所要求的操作數(shù)據(jù)。計算機(jī)硬件技術(shù)基礎(chǔ)2.2.5典型CPU的總體結(jié)構(gòu)⑵總線接口部件BIU負(fù)責(zé)CPU與內(nèi)存、I/O端口之間的信息傳送。BIU從內(nèi)存取指令送到指令隊列CPU執(zhí)行指令時,BIU要配合EU的請求,完成EU與內(nèi)存單元或者I/O端口中間的數(shù)據(jù)傳送。BIU根據(jù)EU計算出來的16位偏移地址及段寄存器提供的段首址,通過地址產(chǎn)生器生成20位的物理地址。BIU的指令隊列緩沖器由6個8位的寄存器組成,采用“先進(jìn)先出”的原則,順序存放6個字節(jié)的指令碼,每當(dāng)指令隊列中空出兩個字節(jié)后,BIU便自動地執(zhí)行取指令操作。
EU和BIU是兩個獨(dú)立的工作部件,在大多數(shù)情況下,它們能并行重疊操作,在EU執(zhí)行指令的同時,BIU也在進(jìn)行取指令、讀操作數(shù)或存入結(jié)果數(shù)據(jù)的操作。計算機(jī)硬件技術(shù)基礎(chǔ)2.2.5典型CPU的總體結(jié)構(gòu)2.8086的寄存器結(jié)構(gòu)⑴
通用寄存器組⑵
段寄存器組⑶
專用寄存器組狀態(tài)標(biāo)志位有6個:CF:進(jìn)位標(biāo)志AF:是輔助進(jìn)位標(biāo)志OF:溢出標(biāo)志ZF:零標(biāo)志SF:符號標(biāo)志PF:奇偶標(biāo)志??刂茦?biāo)志位有3個:DF:方向標(biāo)志IF:中斷允許標(biāo)志TF:陷阱標(biāo)志。
計算機(jī)硬件技術(shù)基礎(chǔ)2.3.1內(nèi)存組成存儲單元的地址和內(nèi)容:
存儲器以字節(jié)(8bit)為單位存儲信息
每個字節(jié)單元有一個地址,從0編號,順序加1
地址用二進(jìn)制數(shù)表示(無符號整數(shù),寫成十六進(jìn)制)
一個字要占用相繼的兩個字節(jié)
低位字節(jié)存入低地址,高位字節(jié)存入高地址
機(jī)器以偶地址訪問(讀/寫)存儲器
字單元地址用它的低地址來表示計算機(jī)硬件技術(shù)基礎(chǔ)2.3.1內(nèi)存組成1.三級存儲系統(tǒng)
計算機(jī)系統(tǒng)中,規(guī)模較大的存儲器往往分成若干級,稱為存儲系統(tǒng)。內(nèi)存儲器(主存儲器)外存儲器(輔助存儲器)高速緩沖存儲器(Cache)
Cache通常在CPU的外部,80386以上的微處理器中為了進(jìn)一步提高CPU的運(yùn)行效率,在CPU的內(nèi)部又設(shè)置了一個Cache。Cache對用戶是透明的。CPU內(nèi)部的Cache稱為一級Cache(L1Cache)CPU外部的Cache稱為二級Cache(L2Cache)計算機(jī)硬件技術(shù)基礎(chǔ)2.3.1內(nèi)存組成2.內(nèi)存儲器的的基本結(jié)構(gòu)⑴存儲體2k個存儲單元(n位)組成,全部存儲單元統(tǒng)一編號。⑵地址寄存器AR⑶地址譯碼器⑷數(shù)據(jù)寄存器DR⑸讀/寫電路⑹控制邏輯電路使內(nèi)存在嚴(yán)格的時序邏輯中執(zhí)行讀或?qū)懖僮?。計算機(jī)硬件技術(shù)基礎(chǔ)2.3.1內(nèi)存組成3.內(nèi)存的存儲單元存儲字:作為一個整體存入或取出的數(shù)稱為存儲字。存儲單元:存放存儲字或存儲字節(jié)的內(nèi)存空間。地址:存儲單元的編號稱為地址,地址和存儲單元之間有一對一的對應(yīng)關(guān)系。一個存儲單元可能存放一個字,也可能存放一個字節(jié),這是由計算機(jī)的結(jié)構(gòu)確定的。存儲單元是CPU對主存可訪問操作的最小存儲單位。字節(jié)編址:最小尋址單位是一個字節(jié),相鄰的存儲單元地址指向相鄰的存儲字節(jié)。字編址:最小尋址單位是一個字,相鄰的存儲單元地址指向相鄰的存儲字。計算機(jī)硬件技術(shù)基礎(chǔ)2.3.1內(nèi)存組成10011111
1000H(1000H)=9FH00100110
1001H
00011110
1002H(1002H)=1EH11010111
1003H
(1000H)=269FH(1002H)=D71EH(1001H)=1E26H訪問兩次存儲器(1001H)=26H(1003H)=D7H存儲器計算機(jī)硬件技術(shù)基礎(chǔ)2.3.1內(nèi)存組成存儲器的分段:20根地址線:地址范圍00000H~FFFFFH機(jī)器字長16位:僅能表示地址范圍0000H~FFFFH小段:每16個字節(jié)為一小段,共有64K個小段
小段的首地址
00000H~0000FH
00010H~0001FH
00020H~0002FH
…
FFFF0H~FFFFFH
段起始地址:小段首地址段的大?。?4K范圍內(nèi)的任意字節(jié)計算機(jī)硬件技術(shù)基礎(chǔ)2.3.1內(nèi)存組成物理地址=16d段地址+偏移地址16位段地址16位偏移地址0000+20位物理地址物理地址:每個存儲單元唯一的20位地址段地址:段起始地址的高16位
偏移地址:段內(nèi)相對于段起始地址的偏移值(16位)
(有效地址EA)計算機(jī)硬件技術(shù)基礎(chǔ)2.3.1內(nèi)存組成存儲器的邏輯分段:
存儲器64K代碼01500H42000H1CD00H0150H4200H1CD0H段寄存器CSDSSSES64K堆棧64K數(shù)據(jù)64K附加數(shù)據(jù)B0000HB000H計算機(jī)硬件技術(shù)基礎(chǔ)2.3.1內(nèi)存組成
存儲器8K代碼2K數(shù)據(jù)256堆棧02000H04800H04000H0200H0400H0480HCSDSSS例:(DS)=0400H,EA=1234H,
物理地址=16d(DS)+EA=05234H計算機(jī)硬件技術(shù)基礎(chǔ)2.3.2內(nèi)存的讀寫1.內(nèi)存和CPU之間的連接2.CPU對內(nèi)存的基本操作⑴讀:地址→AB→AR、Read、等待MFC、(M)→DR→DB。⑵寫:地址→AB→AR、數(shù)據(jù)→DB→DR、Write、等待MFC。同步內(nèi)存存取和異步內(nèi)存存取。異步內(nèi)存存取:CPU和內(nèi)存間沒有統(tǒng)一的時鐘,由MFC通知CPU內(nèi)存工作已完成。同步內(nèi)存存取:CPU和內(nèi)存采用統(tǒng)一時鐘,同步工作,不需要MFC。計算機(jī)硬件技術(shù)基礎(chǔ)2.3.3典型微機(jī)的內(nèi)存接口1.內(nèi)存編址:最常用的編址方式是字節(jié)編址。字/雙字/四倍字的地址是最低地址字節(jié)的地址。一個字存放在從偶數(shù)開始的兩個地址中,稱為規(guī)則存放(規(guī)則字);反之稱為非規(guī)則存放(非規(guī)則字)。一個雙字存放在從4的整倍數(shù)開始的四個地址中,稱為規(guī)則雙字,一個四倍字存放在從8的整倍數(shù)開始的八個地址中,稱為規(guī)則四倍字。讀寫規(guī)則字/雙字/四倍字只需一個總線周期,而讀寫非規(guī)則字/雙字/四倍字則需要兩個存儲周期。2.內(nèi)存接口數(shù)據(jù)總線一次能并行傳送的位數(shù),稱為數(shù)據(jù)通路寬度。對于字節(jié)編址的內(nèi)存來說,存在著一個內(nèi)存與數(shù)據(jù)總線之間的寬度匹配和內(nèi)存接口問題。計算機(jī)硬件技術(shù)基礎(chǔ)2.3.4內(nèi)存堆棧與堆棧操作1.堆棧結(jié)構(gòu)堆棧是一種按特定順序{“后進(jìn)先出”(LIFO)或“先進(jìn)后出”(FILO)}進(jìn)行存取的存儲區(qū)。一般在內(nèi)存中劃出一段區(qū)域來作堆棧,這種堆棧稱為軟堆棧。堆棧的大小可變,棧底固定,棧頂浮動,用一個專門的寄存器作為堆棧棧頂指針(SP)。在80X86中,堆棧的棧底地址大于棧頂?shù)刂贰P
堆棧常用來暫存一些重要的數(shù)據(jù)中斷時的斷點(diǎn)返回地址參數(shù)的傳遞計算機(jī)硬件技術(shù)基礎(chǔ)2.3.4內(nèi)存堆棧與堆棧操作2.堆棧操作:進(jìn)棧堆棧指針SP的內(nèi)容需要先自動減1,然后再將數(shù)據(jù)壓入堆棧:
(SP)-1→SP修改棧指針
(A)→(SP)將A中的內(nèi)容壓入棧頂單元出棧先將堆棧中的數(shù)據(jù)彈出,然后SP的內(nèi)容再自動加1:
((SP))→A將棧頂單元內(nèi)容彈出送入A中
(SP)+1→SP修改棧指針
堆棧操作既不是在堆棧中移動它所存儲的內(nèi)容,也不是把已存儲在棧中的內(nèi)容從棧中抹掉,而是通過調(diào)整堆棧指針而給出新的棧頂位置,以便對位于棧頂位置的數(shù)據(jù)進(jìn)行操作。計算機(jī)硬件技術(shù)基礎(chǔ)2.3.4內(nèi)存堆棧與堆棧操作8086微處理器的堆棧位置由堆棧寄存器SS和堆棧指針SP規(guī)定;棧操作都是字(16位)操作;數(shù)據(jù)的源/目的不能是立即數(shù)、目的不能為CS。進(jìn)棧SP的內(nèi)容先自動減2,然后將放在寄存器中的數(shù)據(jù)壓入:①(SP)-1→SP,然后把高位字節(jié)送到SP所指的存儲單元;②(SP)-1→SP,然后把低位字節(jié)送到SP所指的存儲單元。出棧先將數(shù)據(jù)彈出至寄存器,然后SP的內(nèi)容自動加2:①先將棧頂內(nèi)容送入寄存器的低位字節(jié)(如AL),(SP)+1→SP;②再將棧頂內(nèi)容送入寄存器的高位字節(jié)(如AH),(SP)+1→SP。計算機(jī)硬件技術(shù)基礎(chǔ)2.3.4內(nèi)存堆棧與堆棧操作PUSHAXPOPBX計算機(jī)硬件技術(shù)基礎(chǔ)2.4.1指令系統(tǒng)簡介指令是微處理器執(zhí)行某種操作的命令,微處理器全部指令的集合稱為指令系統(tǒng)。指令有兩種書寫格式:機(jī)器指令和符號指令。機(jī)器指令——指令的二進(jìn)制數(shù)描述硬件只能識別機(jī)器指令,用機(jī)器指令書寫的程序可以直接運(yùn)行符號指令——用規(guī)定的助記符和規(guī)定的書寫格式書寫的指令與機(jī)器指令一一對應(yīng),需要翻譯成機(jī)器指令才能運(yùn)行10110MOVAL,1計算機(jī)硬件技術(shù)基礎(chǔ)2.4.1指令系統(tǒng)簡介1.指令的組成操作碼字段(OP),用來指明操作的性質(zhì)及功能。地址碼字段(A),操作數(shù)的地址或直接給出操作數(shù)。機(jī)器語言:用二進(jìn)制代碼表示的指令,是唯一可以被CPU直接識別和執(zhí)行的程序。匯編程序:賦予每條指令一種利于記憶的符號(助記符),用助記符指令編寫的程序就是匯編程序。OPA操作碼字段地址碼字段計算機(jī)硬件技術(shù)基礎(chǔ)2.4.1指令系統(tǒng)簡介2.指令的操作碼指令的操作碼字段表明了所執(zhí)行的操作。讀出指令→經(jīng)過譯碼→產(chǎn)生執(zhí)行本指令操作所需的微操作控制信號,控制計算機(jī)的各部件完成規(guī)定的操作。指令系統(tǒng)中的每一條指令都有一個唯一確定的操作碼。如果指令系統(tǒng)共有m條指令,指令中操作碼字段的位數(shù)為N位,則有如下關(guān)系式:m≤2N;N≥log2m3.地址碼結(jié)構(gòu)對于一般的指令來說,除去操作碼(OP)之外,指令還應(yīng)包含以下信息:參加運(yùn)算的操作數(shù)存放的地址;執(zhí)行某種操作的結(jié)果存放的地址。指令地址碼字段的結(jié)構(gòu)又可以有三地址指令、二地址指令和一地址指令等幾種。計算機(jī)硬件技術(shù)基礎(chǔ)2.4.1指令系統(tǒng)簡介4.指令的格式8086的指令通常由1~6個字節(jié)組成,指令的第一個字節(jié)或前兩個字節(jié)存放指令的操作碼和尋址方式。指令的第一個字節(jié)稱為操作碼字節(jié)其中高6位是操作碼OP,用來指明指令執(zhí)行的操作。第1位說明數(shù)據(jù)流動的方向第0位說明數(shù)據(jù)長度是字節(jié)還是字第二個字節(jié)稱為模式字節(jié)高2位MOD域選擇尋址類型及其是否存在位移量REG域(中間3位)和R/M域(低3位),表示寄存器的分配和內(nèi)存尋址方式。操作碼字節(jié)和模式字節(jié)后面跟著的字節(jié),用來指明該內(nèi)存操作數(shù)地址的位移量(8位或16位),或者直接給出操作數(shù)。計算機(jī)硬件技術(shù)基礎(chǔ)2.4.1指令系統(tǒng)簡介5.指令類型通常CPU的指令系統(tǒng)可以有上百條指令,按功能可以分成:⑴數(shù)據(jù)傳送類指令⑵算術(shù)、邏輯運(yùn)算類指令⑶程控類指令⑷輸入/輸出類指令
計算機(jī)硬件技術(shù)基礎(chǔ)2.4.2指令的尋址方式每種CPU的指令系統(tǒng)都有自己的一套尋址方式與數(shù)據(jù)有關(guān)的尋址方式:尋找操作數(shù)的地址與轉(zhuǎn)移地址有關(guān)的尋址方式:尋找指令的轉(zhuǎn)移地址數(shù)據(jù)有關(guān)的尋址方式:以MOV指令為例:
立即尋址MOVAX,3069H寄存器尋址MOVAL,BH直接尋址MOVAX,[2000H]寄存器間接尋址MOVAX,[BX]寄存器相對尋址MOVAX,COUNT[SI]基址變址尋址MOVAX,[BP][DI]相對基址變址尋址MOVAX,MASK[BX][SI]計算機(jī)硬件技術(shù)基礎(chǔ)2.4.2指令的尋址方式1.立即尋址立即尋址是將操作數(shù)直接傳送給寄存器的一種尋址方式操作數(shù)緊跟在操作碼之后,作為指令的一部分。立即數(shù)可以是字節(jié)(8位)、字(16位)、雙字(32位),其低位字節(jié)放在低地址單元,高位字節(jié)放在高地址單元。例如:MOVAX,1234H低地址高地址操作碼34H12H12HAX34H計算機(jī)硬件技術(shù)基礎(chǔ)2.4.2指令的尋址方式2.寄存器尋址寄存器尋址是用于寄存器之間的數(shù)據(jù)傳送,源和目的寄存器必須使用相同的位數(shù)。例如:
MOVAX,BXMOVAL,BHMOVAX,3064H*字節(jié)寄存器只有AHALBHBLCHCLDHDL*SRC和DST的字長一致MOVAH,BX*CS不能用MOV指令改變MOVCS,AX計算機(jī)硬件技術(shù)基礎(chǔ)2.4.2指令的尋址方式3.內(nèi)存尋址內(nèi)存尋址是寄存器與內(nèi)存之間傳送數(shù)據(jù)操作數(shù)存放在代碼段之外的存儲區(qū)指令中給出的是存儲單元地址或產(chǎn)生存儲單元地址的有關(guān)信息。
X86系列處理器對內(nèi)存采用分段式管理,程序員在指令中使用的是邏輯地址,邏輯地址由兩部分組成——存儲單元所在段的基地址:段內(nèi)偏移地址(偏移量)段的基地址一般由操作系統(tǒng)將程序裝入內(nèi)存時設(shè)置,程序員在編程時主要使用段內(nèi)偏移地址,段內(nèi)偏移地址也稱為有效地址(EA)MOVES:[3000H],ALES:稱為段超越前綴(可選),指示處理器訪問哪個邏輯段3000H為段內(nèi)偏移地址(有效地址)計算機(jī)硬件技術(shù)基礎(chǔ)2.4.2指令的尋址方式(1)直接尋址方式*——指令中的操作數(shù)部分直接給出操作數(shù)的有效地址EA,操作數(shù)可以是16位或32位整數(shù),操作數(shù)默認(rèn)在DS段中。MOVAX,[3000H]低地址高地址CS段操作碼00H30H34H12H34H12HAXDS段5000053000DS50000300053000+計算機(jī)硬件技術(shù)基礎(chǔ)2.4.2指令的尋址方式(2)寄存器間接尋址——EA在基址寄存器(BX/BP)或
變址寄存器(SI/DI)中
MOVAX,[BX]PA=16d(DS)+(BX)MOVAX,ES:[BX]PA=16d(ES)+(BX)MOVAX,[BP]PA=16d(SS)+(BP)*不允許使用AX、CX、DX存放EAMOVAX,[CX]*SRC和DST的字長一致
MOVDL,[BX];[BX]指示一個字節(jié)單元MOVDX,[BX];[BX]指示一個字單元*適于數(shù)組、字符串、表格的處理計算機(jī)硬件技術(shù)基礎(chǔ)2.4.2指令的尋址方式低地址高地址CS段操作碼34H12H34H12HAXSS段7000073000SS70000300073000+MOVAX,[BP]BP計算機(jī)硬件技術(shù)基礎(chǔ)2.4.2指令的尋址方式(3)寄存器相對尋址方式*
例:MOVAX,COUNT[SI]或MOVAX,[COUNT+SI]假設(shè)(DS)=3000H,(SI)=2000H,COUNT=3000H,那么PA=35000H假設(shè)(35000H)=1234H,那么(AX)=1234H*適于數(shù)組、字符串、表格的處理
有效地址=(BX)(BP)8位(SI)16位(DI)+位移量計算機(jī)硬件技術(shù)基礎(chǔ)2.4.2指令的尋址方式低地址高地址CS段操作碼00H15H34H12H34H12HAXFS段7000073500BX150073500+MOVDX,[BX+1500]DS700002000計算機(jī)硬件技術(shù)基礎(chǔ)2.4.2指令的尋址方式(4)基址變址尋址方式*
MOVAX,[BX][DI]
或MOVAX,[BX+DI]MOVAX,ES:[BX][SI]*適于數(shù)組、字符串、表格的處理*必須是一個基址寄存器和一個變址寄存器的組合MOVAX,[BX][BP]MOVAX,[SI][DI]有效地址=(BX)(SI)(BP)(DI)+計算機(jī)硬件技術(shù)基礎(chǔ)+2.4.2指令的尋址方式例如:MOVCX,[BX][SI](DS)=2000H,(BX)=2000H(SI)=100H(22100H)=1357H物理地址=162000H+2000H+100H=22100H(CX)=1357HMOVCX,[BP+SI](SS)=3000H,(BP)=1000H(SI)=100H(31100H)=2468H物理地址=163000H+1000H+100H=31100H(CX)=2468H基址寄存器變址寄存器100H2000HSIBX2100H20000HDS22100H計算機(jī)硬件技術(shù)基礎(chǔ)2.4.2指令的尋址方式⑸相對基址變址尋址默認(rèn)的段:以BP尋址,段為堆棧段(段寄存器SS)。以BX尋址,段為數(shù)據(jù)段(段寄存器DS)。使用其它段時采用段超越有效地址是基址寄存器(BX或BP)和變址寄存器(SI或DI)+位移量。位移量可以為8位(-128~127)或16位(-32768~32767)。在80386以上的微處理器中,這種尋址方式適用于除ESP之外的任何兩個擴(kuò)展寄存器組合。
有效地址=(BX)(SI)8位(BP)(DI)16位++位移量計算機(jī)硬件技術(shù)基礎(chǔ)2.4.2指令的尋址方式例如:MOVCX,ARRAY[BX][SI](DS)=2000H,(BX)=2000H(SI)=100H,ARRAY=10H(22110H)=1357H物理地址=162000H+2000H+100H+10H=22110H(CX)=1357HMOVCX,[ARRAY+BP+SI](SS)=3000H,(BP)=1000H(SI)=100H,ARRAY=10H(31110H)=2468H物理地址=163000H+1000H+100H+10H=31110H(CX)=2468H57H13H22110H68H24H31110H計算機(jī)硬件技術(shù)基礎(chǔ)2.4.380X86指令系統(tǒng)舉例1.數(shù)據(jù)傳送指令包括一般傳送指令MOV、堆棧指令PUSH和POP等。⑴MOV指令MOV目標(biāo)操作數(shù),源操作數(shù)1)源操作數(shù)可以是8/16/32位的立即數(shù)、寄存器操作數(shù)、內(nèi)存操作數(shù)。目標(biāo)操作數(shù)不允許為立即數(shù),其余同源操作數(shù)。源、目不能同時為內(nèi)存操作數(shù)。2)源、目操作數(shù)類型必須匹配MOVBYTEPTR[BX],12H3)不能向段寄存器寫立即數(shù)MOVAX,2000MOVDS,AX4)以CS為目標(biāo)的一切傳送指令都是非法的寄存器reg
存儲器mem段寄存器sreg,CS除外立即數(shù)data計算機(jī)硬件技術(shù)基礎(chǔ)2.4.380X86指令系統(tǒng)舉例⑵PUSH/POP指令以字為單位進(jìn)行操作操作數(shù)不能為立即數(shù)POP指令不能是代碼段寄存器(CS)2.算術(shù)運(yùn)算指令包括加法、減法、乘法、除法、加1、減1、求補(bǔ)、比較等。大多數(shù)算術(shù)運(yùn)算指令(除加1/減1指令)都具有兩個操作數(shù)兩個操作數(shù)不能都在內(nèi)存中目的操作數(shù)不能為立即數(shù)乘法的乘數(shù)不能為立即數(shù);被乘數(shù)必須在累加器(累加器:AL、AX或EAX);積在AX、DX,AX或EDX,EAX。除法的除數(shù)不能為立即數(shù);被除數(shù)必須在在AX、DX,AX或EDX,EAX;高位寄存器是余數(shù)、低位寄存器是商。改變標(biāo)志寄存器的CF(除加1/減1指令)、OF、ZF、SF、PF和AF標(biāo)志位的值。計算機(jī)硬件技術(shù)基礎(chǔ)2.4.380X86指令系統(tǒng)舉例⑴加、減和比較指令A(yù)DD、ADC、SUB、SBBINC、DEC比較指令(CMP)是減法指令的一個特殊變化,仍是進(jìn)行兩數(shù)相減的運(yùn)算,但結(jié)果不回送,即不保留“差”。⑵
乘法/除法指令乘法有符號的(IMUL)或無符號的(MUL)整數(shù)。乘法允許進(jìn)行字節(jié)、字或雙字運(yùn)算,乘積可能產(chǎn)生雙倍寬的數(shù)據(jù)。除法有符號的(IDIV)或無符號的(DIV)整數(shù)。除法也可以進(jìn)行字節(jié)、字或雙字運(yùn)算。被除數(shù)總是雙倍寬的數(shù)據(jù)。注意除法的溢出處理計算機(jī)硬件技術(shù)基礎(chǔ)2.4.380X86指令系統(tǒng)舉例標(biāo)志位的含義:乘法無溢出,乘積的數(shù)據(jù)倍寬不變時OF=CF=0,否則OF=CF=1。其余無定義。除法無定義,除法溢出直接進(jìn)入INT0其他算術(shù)運(yùn)算指令無符號數(shù)運(yùn)算產(chǎn)生溢出時,CF=1。帶符號數(shù)運(yùn)算產(chǎn)生溢出時,OF=1。運(yùn)算結(jié)果為零時,ZF=1。運(yùn)算結(jié)果為負(fù)時,SF=1。當(dāng)運(yùn)算結(jié)果中的1的個數(shù)為偶數(shù)時,PF=1。當(dāng)操作數(shù)為BCD碼、半字節(jié)出現(xiàn)進(jìn)位時,AF=1。計算機(jī)硬件技術(shù)基礎(chǔ)2.4.380X86指令系統(tǒng)舉例⑶BCD運(yùn)算和ASCII運(yùn)算十進(jìn)制運(yùn)算調(diào)整指令(DAA)置于ADD或ADC指令之后,將加法運(yùn)算的結(jié)果調(diào)整為BCD數(shù)的結(jié)果。由于DAA指令只作用于AL寄存器,因此這種加法每次只能做8位加法。十進(jìn)制運(yùn)算調(diào)整指令(DAS)置于SUB或SBB指令之后,將減法運(yùn)算的結(jié)果調(diào)整為BCD數(shù)的結(jié)果。ASCII算術(shù)運(yùn)算指令作用于ASCII碼數(shù)字。AAA、AAM、AAS分別在加法、乘法、減法之后進(jìn)行調(diào)整,AAD在除法之前進(jìn)行調(diào)整。計算機(jī)硬件技術(shù)基礎(chǔ)2.4.380X86指令系統(tǒng)舉例3.基本邏輯指令與(AND)、或(OR)、異或(XOR)、非(NOT)和測試(TEST)指令允許進(jìn)行字節(jié)、字或雙字運(yùn)算。其操作會影響到某些標(biāo)志位。TEST指令實現(xiàn)AND的操作,但不改變目的操作數(shù),僅僅影響標(biāo)志寄存器的標(biāo)志位。80386以上微處理器增加了位測試指令BT、BTC、BTR和BTS。測試以后,將測試結(jié)果裝入進(jìn)位標(biāo)志位,后三條指令還會改變被測試位。NOT指令時對寄存器的值按位取反NEG則對寄存器的值求2的補(bǔ)碼。計算機(jī)硬件技術(shù)基礎(chǔ)2.4.380X86指令系統(tǒng)舉例4.移位元與循環(huán)指令移位元指令分為:算術(shù)移位元指令SAL(左移)、SAR(右移),作用于帶符號數(shù)。算術(shù)左移或右移一位,相當(dāng)于對帶符號數(shù)做乘以2或除以2的運(yùn)算,邏輯移位元指令SHL(左移)、SHR(右移),作用于無符號數(shù)。計算機(jī)硬件技術(shù)基礎(chǔ)2.4.380X86指令系統(tǒng)舉例循環(huán)指令分為:小循環(huán)(不帶進(jìn)位循環(huán)),小循環(huán)左移(ROL)、小循環(huán)右移(ROR)。大循環(huán)(帶進(jìn)位循環(huán)),大循環(huán)左移(RCL)、大循環(huán)右移(RCR)。計算機(jī)硬件技術(shù)基礎(chǔ)2.4.380X86指令系統(tǒng)舉例5.程控指令用于控制程序的執(zhí)行方向,使程序具有測試、分析與判斷的能力。包括:轉(zhuǎn)移控制指令、子程序調(diào)用和返回指令、中斷控制指令等。⑴轉(zhuǎn)移控制指令包括無條件轉(zhuǎn)移指令、條件轉(zhuǎn)移指令和程序循環(huán)指令。無條件轉(zhuǎn)移指令(JMP)不受任何條件的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023-2024學(xué)年北京育才中學(xué)高三(上)期中化學(xué)試題和答案
- 加強(qiáng)供應(yīng)鏈協(xié)同管理的工作總結(jié)計劃
- 社交媒體營銷的趨勢分析計劃
- 社會責(zé)任感與公民意識培養(yǎng)計劃
- 茶葉加工與銷售合資協(xié)議三篇
- 家庭與學(xué)校合作的教育計劃
- 制定業(yè)務(wù)指標(biāo)的月度方案計劃
- 制定企業(yè)愿景與使命計劃
- 班主任團(tuán)隊建設(shè)的策略計劃
- 電玩具產(chǎn)業(yè)的黃金時代-投資新機(jī)遇及高回報預(yù)期
- 棧道棧橋工程施工組織設(shè)計
- 浙江大學(xué)簡介_ppt課件
- 金融企業(yè)會計復(fù)習(xí)習(xí)題
- 建筑施工現(xiàn)場安全評價表
- 電脫鹽成套技術(shù)介紹
- 2015年最新的遙感影像衛(wèi)星數(shù)據(jù)價格官方報價
- 高端自動鋪帶機(jī)
- 青島版五四制五年級數(shù)學(xué)上冊期中測試題及答案一
- 直放站及室內(nèi)覆蓋系統(tǒng)工程質(zhì)量驗收細(xì)則(v.02)
- 環(huán)氧化合物的不對稱開環(huán)反應(yīng)
- 第四課書法欣賞:篆書
評論
0/150
提交評論