




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