● 計算機執行程序時,在一個指令周期的過程中,為了能夠從內存中讀指令操作碼,首先是將__(9)___的內容送到地址總線上。
(9)A.程序計數器PC B.指令寄存器IR
C.狀態寄存器SR D.通用寄存器GR
【歪理邪說】
關鍵詞,“計算機執行程序時”,“首先是將”。
參考答案:A
【知識點】
l 程序計數器是什么?
程序計數器是用於存放下一條指令所在單元的地址的地方。
單片機及匯編語言中常稱作PC(program counter)。
l PC是什么單詞的縮寫
Program Counter
l 為什么需要程序計數器
為了保證程序(在操作系統中理解為進程)能夠連續地執行下去,CPU必須具有某些手段來確定下一條指令的地址。程序計數器正是起到這種作用,所以通常又稱為指令計數器。
l 程序計數器的處理流程
在程序開始執行前,必須將它的起始地址,即程序的一條指令所在的內存單元地址送入PC,因此程序計數器(PC)的內容即是從內存提取的第一條指令的地址。當執行指令時,CPU將自動修改PC的內容,即每執行一條指令PC增加一個量,這個量等於指令所含的字節數,以便使其保持的總是將要執行的下一條指令的地址。由於大多數指令都是按順序來執行的,所以修改的過程通常只是簡單的對PC加1。
l 程序計數器的異常處理流程
但是,當遇到轉移指令如JMP指令時,后繼指令的地址(即PC的內容)必須從指令寄存器中的地址字段取得。在這種情況下,下一條從內存取出的指令將由轉移指令來規定,而不像通常一樣按順序來取得。因此程序計數器的結構應當是具有寄存信息和計數兩種功能的結構。
另外參照
《計算機程序的執行過程》 http://blog.csdn.net/gaomatrix/article/details/7079061
《匯編語言基礎之一 - CPU架構和寄存器種類簡介》 http://www.cnblogs.com/awpatp/archive/2009/10/30/1593248.html
《計算機寄存器簡介》 http://blog.csdn.net/chinajane163/article/details/7625351
百度百科《寄存器》 http://baike.baidu.com/link?url=FkNLU-ofC_NAzPj-xkrluKOnlRYztLtY6An6-_9uE1ODp3pIym5jms7U0_smy8fuhtiTnlL0mS1ICSlnqvTjQK
一。 計算機程序的執行過程
程序就是指令的集合
為使計算機按預定要求工作,首先要編制程序。程序是一個特定的指令序列,它告訴計算機要做哪些事,按什么步驟去做。指令是一組二進制信息的代碼,用來表示計算機所能完成的基本操作。
1.程序
程序是為求解某個特定問題而設計的指令序列。程序中的每條指令規定機器完成一組基本操作。如果把計算機完成一次任務的過程比作樂隊的一次演奏,那么控制器就好比是一位指揮,計算機的其它功能部件就好比是各種樂器與演員,而程序就好像是樂譜。計算機的工作過程就是執行程序的過程,或者說,控制器是根據程序的規定對計算機實施控制的。例如,對於算式
計算機的解題步驟可作如下安排:
步驟1:取a ;
步驟2:取b ;
步驟3:判斷 ;
. 若 b≥0,執行步驟4
.若b<0,執行步驟6
步驟4:執行a+b;
步驟5:轉步驟7;
步驟6:執行a-b;
步驟7:結束。
計算機的工作過程可歸結為:取指令→分析指令→執行指令→再取下一條指令,直到程序結束的反復循環過程。通常把其中的一次循環稱為計算機的一個指令周期。總之,我們可把程序對計算機的控制歸結為每個指令周期中指令對計算機的控制。
2.指令
程序是由指令組成的。指令是機器所能識別的一組編制成特定格式的代碼串,它要求機器在一個規定的時間段(指令周期)內,完成一組特定的操作。指令的基本格式可歸結為操作碼OP和操作數地址AD兩部分,具體內容是:
⑴ 指出計算機應完成的一組操作內容,如傳送(MOV)、加法(ADD)、減法(SUB)、輸出、停機(HLT)、條件轉移(JZ)等。這部分稱為指令的操作碼部分。
⑵ 兩個操作數的地址和存放結果的地址及尋址方式。
⑶ 為保證程序執行的連續性,在執行當前指令時,還需指出下一條指令的地址。由於指令在存儲器中一般是順序存放的,所以只要設置一個指令指針(IP),每執行一條指令,IP自動加1,便自動指出下一條指令的地址,而不必在指令中專門指出下一條指令的地址 。只有在轉移指令中才指出下一條指令的地址。此時,IP的內容將隨轉移指令所指示的內容改變。
3.指令的執行
指令規定的內容是通過控制器執行的,或者說控制器是按照一條指令的內容指揮操作的。
⑴ 控制器的功能
① 定序功能——保證按程序規定的順序執行指令。
② 定時功能——計算機處理信息是通過信息在計算機的邏輯電路中的流通完成的。為保證計算機工作的准確性,控制器要為計算機 中的各部件提供統一節拍,使各條指令及組成每條指令的各基本操作(通常稱為微操作)都嚴格地按規定的時間有條不紊地自動執行。
③ 操作控制功能——控制器應能按照指令規定的內容,在相應的節拍向有關部件發出操作控制信號。
⑵ 控制器的組成
在控制器中,上述功能分別由指令部件、時序部件和操作控制部件來完成。它們的組成如圖1-8所示。
① 指令部件:指令部件的主要功能是取指令和分析指令。它由指令指針IP(也叫指令計數器IC或程序計數器PC)、指令寄存器IR、指令譯碼器、地址計算部件組成。其中:
●指令指針IP的功能是指出當前指令的地址。它有加1功能,通常每取一條指令后自動加1,以指出下條指令的地址。遇到特殊情況(如轉移)可通過地址計算部件形成下一條指令的地址。
●指令寄存器IR保存由存儲器取來的指令,並分別把操作碼OP和操作數地址AD送指令譯碼和地址計算部件。
●指令譯碼器也稱操作碼譯碼器。它按操作碼的內容向操作控制部件提供相應的操作電信號。
●地址計算部件的作用是對指令中地址碼進行(變址、間址等)運算,求出的操作數地址送存儲器以取出數據;或者把轉移指令中指出的下一條指令地址送IP。
② 時序部件:時序部件也叫節拍發生器,它能為各部件提供一個時間基准。時鍾頻率(如800MHz,1GHz,2 GHz,2.4 GHz,3 GHz…)越高,計算機的工作速度就越快。
③ 操作控制部件:該部件的功能是根據指令譯碼器的規定內容,在規定的節拍內向有關部件發出操作控制信號。
⑶ 指令的執行過程
通常,計算機執行一條指令的步驟如下:
① 把指令指針IP中的指令地址送存儲器,從該地址取出指令送指令寄存器IR;
② 地址計算部件,根據IR中的地址碼形成操作數地址送存儲器,從該地址取出數據,送到運算器中的寄存器(或寄存器組);
③ 將IR中的操作碼OP送指令譯碼器進行譯碼;
④ 在控制器發出的操作信號的控制下,計算機各有關部件執行操作碼OP規定的操作;
⑤ 指令指針IP加1,形成下一條指令地址。如遇到轉移指令,則按轉移指令對狀態標志寄存器測試的結果,決定是否將轉移指令中指出的指令地址送指令指針IP。
4.計算機的解題過程
要使計算機按預定要求工作,首先要編制程序。程序是一個特定的指令序列,它告訴計算機要做哪些事,按什么步驟去做。指令是一組二進制信息的代碼,用來表示計算機所能完成的基本操作。不同的計算機所包含指令的種類和數目是不同的,通常把一台計算機所能執行的各類指令的集合,稱為該機的指令系統。因此,在機器一級的程序設計,就是按照解題要求在機器指令系統中選擇並有序組合解題需要的指令序列的過程。
使用計算機解題大致要經過程序設計→輸入程序→執行程序等步驟。現以計算a+b-c為例來說明這一過程。
設a、b、c為已知的三個數,分別存放在主存的5~7號單元中,結果將存放在主存的8號單元。若采用單累加器結構的運算器,要完成上述計算至少需要5條指令,這5條指令依次存放在主存的0~4號單元中,參加運算的數也必須存放在主存指定的單元中,主存中有關單元的內容如圖1-9(a)所示。運算器的簡單框圖如圖1-9(b)所示,圖中參加運算的一個操作數來自累加器,另一個來自主存,運算結果則放在累加器中。 計算機的控制器將控制指令的逐條、依次執行,最終得到正確的結果。具體步驟如下:
⑴ 執行取數指令,從主存5號單元取出數a,送入累加器中。
⑵ 執行加法指令,將累加器中的內容a與從主存6號單元取出的數b一起送到算術邏輯部件ALU(Arithmetic Logic Unit,ALU)中相加,結果a+b保留在累加器中。
⑶ 執行減法指令,將累加器中的內容a+b與從主存7號單元取出的數c一起送到算術邏輯部件ALU中相減,結果a+b-c保留在累加器中。
⑷ 執行存數指令,把累加器中的內容a+b-c存至主存8號單元。
⑸ 執行停機指令,計算機停止工作。
二。編譯型和解釋型語言
解釋型語言:程序不需要編譯,程序在運行時才翻譯成機器語言,每執行一次都要翻譯一次。因此效率比較低。比如Basic語言,專門有一個解釋器能夠直接執行Basic程序,每個語句都是執行的時候才翻譯。