精選分類 書庫 完本 排行 原創專區
欣可小說 > 曆史 > 輸入設備 > 機器語言

輸入設備 機器語言

作者:劉浩 分類:曆史 更新時間:2026-07-31 16:04:34

{

\"code\": 200,

\"title\": \"\",

\"content\": \"機器語言是直接用二進製代碼指令表達的計算機語言,指令是用0和1組成的一串代碼,它們有一定的位數,並分成若乾段,各段的編碼錶示不同的含義,例如某台計算機字長為16位,即有16個二進製數組成一條指令或其它資訊。16個0和1可組成各種排列組合,通過線路變成電信號,讓計算機執行各種不同的操作。\\n\\n一條指令就是機器語言的一個語句,它是一組有意義的二進製代碼,指令的基\\n\\n指令係統本格式如:操作碼欄位地址碼\\n\\n欄位其中操作碼指明瞭指令的操作性質及功能,地址碼則給出了操作數或操作數的地址。\\n\\n各計算機公司設計生產的計算機,其指令的數量與功能、指令格式、尋址方式、數據格式都有差彆,即使是一些常用的基本指令,如算術邏輯運算指令、轉移指令等也是各不相同的。因此,儘管各種型號計算機的高級語言基本相同,但將高級語言程式(例如Fortran語言程式)編譯成機器語言後,其差彆也是很大的。因此將用機器語言表示的程式移植到其他機器上去幾乎是不可能的。從計算機的發展過程已經看到,由於構成計算機的基本硬體發展迅速,計算機的更新換代是很快的,這就存在軟件如何跟上的問題。大家知道,一台新機器推出交付使用時,僅有少量係統軟件(如操作係統等)可提交用戶,大量軟件是不斷充實的,尤其是應用程式,有相當一部分是用戶在使用機器時不斷產生的,這就是所謂第三方提供的軟件。\\n\\n為了緩解新機器的推出與原有應用程式的繼續使用之間的矛盾,1964年在設計IBM360計算機時所采用的係列機思想較好地解決了這一問題。從此以後,各個計算機公司生產的同一係列的計算機儘管其硬體實現方法可以不同,但指令係統、數據格式、I\\/O係統等保持相同,因而軟件完全相容(在此基礎上,產生了相容機)。當研製該係列計算機的新型號或高檔產品時,儘管指令係統可以有較大的擴充,但仍保留了原來的全部指令,保持軟件向上相容的特點,即低檔機或舊機型上的軟件不加修改即可在比它高檔的新機器上運行,以保護用戶在軟件上的投資。\\n\\nCISC(複雜指令係統)和RISC(精簡指令係統)\\n\\n指令格式\\n\\n計算機的指令格式與機器的字長、存儲器的容量及指令的功能都有很大的關係。從便於程式設計、增加基本\\n\\n指令係統\\n\\n操作並行性、提高指令功能的角度來看,指令中應包含多種資訊。但在有些指\\n\\n指令係統\\n\\n令中,由於部分資訊可能無用,這將浪費指令所占的存儲空間,並增加了訪存次數,也許反而會影響速度。因此,如何合理、科學地設計指令格式,使指令既能給出足夠的資訊,又使其長度儘可能地與機器的字長相匹配,以節省存儲空間,縮短取指時間,提高機器的效能,這是指令格式設計中的一個重要問題。\\n\\n計算機是通過執行指令來處理各種數據的。為了指出數據的來源、操作結果的去向及所執行的操作,一條指令必須包含下列資訊:\\n\\n(1)操作碼。它具體說明瞭操作的性質及功能。一台計算機可能有幾十條至幾百條指令,每一條指令都有一個相應的操作碼,計算機通過識彆該操作碼來完成不同的操作。\\n\\n(2)操作數的地址。CPU通過該地址就可以取得所需的操作數。\\n\\n(3)操作結果的存儲地址。把對操作數的處理所產生的結果儲存在該地址中,以便再次使用。\\n\\n(4)下條指令的地址。執行程式時,大多數指令按順序依次從主存中取出執行,隻有在遇到轉移指令時,程式的執行順序纔會改變。為了壓縮指令的長度,可以用一個程式計數器(ProgramCounter,PC)存放指令地址。每執行一條指令,PC的指令地址就自動 1(設該指令隻占一個主存單元),指出將要執行的下一條指令的地址。當遇到執行轉移指令時,則用轉移地址修改PC的內容。由於使用了PC,指令中就不必明顯地給出下一條將要執行指令的地址。\\n\\n一條指令實際上包括兩種資訊即操作碼和地址碼。操作碼(OperationCode,OP)用來表示該指令所要完\\n\\n指令係統\\n\\n成的操作(如加、減、乘、除、數據傳送等),其長度取決於指令係統中的指令條數。\\n\\n指令係統地址碼用來描述該指令的\\n\\n操作對象,它或者直接給出操作數,或者指出操作數的存儲器地址或暫存器地址(即暫存器名)。\\n\\n指令包括操作碼域和地址域兩部分。根據地址域所涉及的地址數量,常見的指令格式有以下幾種。\\n\\n①三地址指令:一般地址域中A1、A2分彆確定第一、第二操作數地址,A3確定結果地址。下一條指令的地址通常由程式計數器按順序給出。\\n\\n②二地址指令:地址域中A1確定第一操作數地址,A2同時確定第二操作數地址和結果地址。\\n\\n③單地址指令:地址域中A確定第一操作數地址。固定使用某個暫存器存放第二操作數和操作結果。因而在指令中隱含了它們的地址。\\n\\n④零地址指令:在堆棧型計算機中,操作數一般存放在下推堆棧頂的兩個單元中,結果又放入棧頂,地址均被隱含,因而大多數指令隻有操作碼而冇有地址域。\\n\\n⑤可變地址數指令:地址域所涉及的地址的數量隨操作定義而改變。如有的計算機的指令中的地址數可少至0個,多至6個。\\n\\n尋址方式\\n\\n根據指令內容確定操作數地址的過程稱為尋址。完善的尋址方式可為用戶組織和使用數據提供方便。\\n\\n指令係統\\n\\n指令係統①直接尋址:指令地址域中表示的是操作數地址。\\n\\n②間接尋址:指令地址域中表示的是操作數地址的地址即指令地址碼對應的存儲單元所給出的是地址A,操作數據存放在地址A指示的主存單元內。有的計算機的指令可以多次間接尋址,如A指示的主存單元內存放的是另一地址B,而操作數據存放在B指示的主存單元內,稱為多重間接尋址。\\n\\n③立即尋址:指令地址域中表示的是操作數本身。\\n\\n④變址尋址:指令地址域中表示的是變址暫存器號i和位移值D。將指定的變址暫存器內容E與位移值D相加,其和E D為操作數地址。許多計算機具有雙變址功能,即將兩個變址暫存器內容與位移值相加,得操作數地址。變址尋址有利於數組操作和程式共用。同時,位移值長度可短於地址長度,因而指令長度可以縮短。\\n\\n⑤相對尋址:指令地址域中表示的是位移值D。程式計數器內容(即本條指令的地址)K與位移值D相加,得操作數地址K D。當程式在主存儲器浮動時,相對尋址能保持原有程式功能。\\n\\n此外,還有自增尋址、自減尋址、組合尋址等尋址方式。尋址方式可由操作碼確定,也可在地址域中設標誌,指明尋址方式。\\n\\n種類\\n\\n常見指令按功能可劃分爲:\\n\\n指令係統\\n\\n①數據處理指令:包括算術運算指令、邏輯運算指令、移位指令、比較指令等。\\n\\n指令係統②數據傳送指令:包括寄存\\n\\n器之間、暫存器與主存儲器之間的傳送指令等。\\n\\n③程式控製指令:包括條件轉移指令、無條件轉移指令、轉子程式指令等。\\n\\n④輸入-輸出指令:包括各種外圍設備的讀、寫指令等。有的計算機將輸入-輸出指令包含在數據傳送指令類中。\\n\\n⑤狀態管理指令:包括諸如實現置存儲保護、中斷處理等功能的管理指令。\\n\\n隨著計算機係統結構的發展,有些計算機還不斷引入新指令。如“測並置”指令是為在多機係統和多道程式中防止重入公用子程式而設置的。指令先測試標誌位以判斷該子程式是否正在使用。如未被使用,則轉入子程式並置該標誌位,以防其他進程重入。後來又出現功能更強的信號(PV操作)指令。有的計算機還設置“執行”指令。“執行“指令執行由地址域所確定的存儲單元中的指令。其目的是避免用程式直接修改程式中的指令。這對程式的檢查和流水線等技術的應用均有好處。有的計算機采用堆棧實現程式的調用指令和返回指令。調用時將返回地址和各種狀態、參數壓入堆棧頂部,這樣就能較好地實現子程式的巢狀和遞歸調用,並可使子程式具有可重入性。另外,一些計算機使不少複雜的操作固定化,形成諸如多項式求值、隊列插項、隊列撤項和各種翻譯、編輯等指令。\\n\\n向量指令和標量指令:有些大型機和巨型機設置功能齊全的向量運算指令係統。向量指令的基本操作對象是向量,即有序排列的一組數。若指令為向量操作,則由指令確定向量操作數的地址(主存儲器起始地址或向量暫存器號),並直接或隱含地指定如增量、向量長度等其他向量參數。向量指令規定處理機按同一操作處理向量中的所有分量,可有效地提高計算機的運算速度。不具備向量處理功能,隻對單個量即標量進行操作的指令稱為標量指令。\\n\\n特權指令和用戶指令:在多用戶環境中,某些指令的不恰當使用會引起機器的係統性混亂。如置存儲保護、中斷處理、輸入輸出等這類指令,均稱為特權指令,不允許用戶直接使用。為此,處理機一般設置特權和用戶兩種狀態,或稱管(理)態和目(的)態。在特權狀態下,程式可使用包括特權指令在內的全部指令。在用戶狀態下,隻允許使用非特權指令,或稱用戶指令。用戶如使用特權指令則會發生違章中斷。如用戶需要申請操作係統進行某些服務,如輸入-輸出等,可使用“廣義指令”,或稱為“進監督”、“訪管”等的指令。\\n\\n特點\\n\\n指令係統的效能決定了計算機的基本功能,它的設計直接關係到計算機的硬體結構和用戶的需要。一個完善\\n\\n指令係統\\n\\n的指令係統應滿足如下四方麵的要求:\\n\\n指令係統完備性:指用組合語言編寫各種程式\\n\\n時,指令係統直接提供的指令足夠使用,而不必用軟件來實現。完備性要求指令係統豐富、功能齊全、使用方便。\\n\\n有效性:是指利用該指令係統所編寫的程式能夠高效率地運行。高效率主要表現在程式占據存儲空間小、執行速度快。\\n\\n規整性:包括指令係統的對稱性、勻齊性、指令格式和數據格式的一致性。對稱性是指:在指令係統中所有的暫存器和存儲器單元都可同等對待,所有的指令都可使用各種尋址方式;勻齊性是指:一種操作性質的指令可以支援各種數據類型;指令格式和數據格式的一致性是指:指令長度和數據長度有一定的關係,以方便處理和存取。\\n\\n相容性:至少要能做到“向上相容”,即低檔機上運行的軟件可以在高檔機上運行。\\n\\n發展過程\\n\\n回顧計算機的發展曆史,指令係統的發展經曆了從簡單到複雜的演變過程。早在20世紀50-60年代,計算機大多數采用分立元件的晶體管或電子管組成,其體積龐大,價格也很昂貴,因此計算機的硬體結構比較簡單,所支援的指令係統也隻有十幾至幾十條最基本的指令,而且尋址方式簡單。到60年代中期,隨著整合電路的出現,計算機的功耗、體積、價格等不斷下降,硬體功能不斷增強,指令係統也越來越豐富。在70年代,高級語言己成為大、中、小型機的主要程式設計語言,計算機應用日益普及。由於軟件的發展超過了軟件設計理論的發展,複雜的軟件係統設計一直冇有很好的理論指導,導致軟件質量無法保證,從而出現了所謂的“軟件危機”。人們認為,縮小機器指令係統與高級語言語義差距,為高級語言提供很多的支援,是緩解軟件危機有效和可行的辦法。計算機設計者們利用當時已經成熟的微程式技術和飛速發展的VLSI技術,增設各種各樣的複雜的、麵向高級語言的指令,使指令係統越來越龐大。這是幾十年來人們在設計計算機時,保證和提高指令係統有效性方麵傳統的想法和作法。按這種傳統方法設計的計算機係統稱為複雜指令係統計算機(ComplexSetInstructionComputer),簡稱CISC.\\n\\nRISC是一種計算機體繫結構的設計思想,是近代計算機體繫結構發展史中的一個裡程碑。然而,直到現在,RISC還冇有一個確切的定義。90年代初,IEEE的MichaelSlater對於RISC的定義做瞭如下描述:RISC處理器所設計的指令係統應使流水線處理能高效率執行,並使優化編譯器能生成優化代碼。\\n\\n1.RISC為使流水線高效率執行,應具有下述特征:(1)簡單而統一格式的指令譯碼;(2)大部分指令可以單週期執行完成;(3)隻有LAD和STORE指令可以訪問存儲器;(4)簡單的尋址方式;(5)采用延遲轉移技術;(6)采用LOAD延遲技術。\\n\\n2.RISC為使優化編譯器便於生成優化代碼,應具有下述特征:\\n\\n(1)三地址指令格式\\n\\n(2)較多的暫存器\\n\\n(3)對稱的指令格式。\\n\\n減少指令平均執行週期數是RISC思想的精華。\\n\\n程式設計語言處理係統隨被處理的語言及其處理方法和處理過程的不同而異。不過,任何一個語言處理係統通常都包含有一個翻譯程式,它把一種語言的程式翻譯成等價的另一種語言的程式。被翻譯的語言和程式分彆稱為源語言和源程式,翻譯生成的語言和程式分彆稱為目標語言和目標程式。\\n\\n語言處理係統是對軟件語言進行處理的程式子係統\\n\\nLanguageprocessingsystemisasub-systemtoprocesssoftwarelanguage.\\n\\n除了機器語言外,其他用任何軟件語言書寫的程式都不能直接在計算機上執行,都需要對它們進行適當的處理。語言處理係統的作用是把用軟件語言書寫的各種程式處理成可在計算機上執行的程式,或最終的計算結果,或其他中間形式。\\n\\n不同級彆的軟件語言有不同的處理方法和處理過程。關於需求級、功能級、設計級和文檔級軟件語言的處理方法和處理過程是軟件語言、軟件工具和軟件開發環境的重要研究內容之一。關於實現級語言即程式設計語言的處理方法和處理過程發展較早,技術較為成熟,其處理係統是基本軟件係統之一。這裡,語言處理係統僅針對程式設計語言的處理而言。關於需求級、功能級、設計級、和文檔級語言的處理請參見需求定義語言,功能定義語言,設計性語言,軟件過程和軟件工具。\\n\\n按照不同的源語言、目標語言和翻譯處理方法,可把翻譯程式分成若乾種類。從組合語言到機器語言的翻譯程式稱為彙程式設計序,從高級語言到機器語言或組合語言的翻譯程式稱為編譯程式。按源程式中指令或語句的動態執行順序,逐條翻譯並立即解釋執行相應功能的處理程式稱為解釋程式。除了翻譯程式外,語言處理係統通常還包括正文編輯程式、宏加工程式,連接編輯程式和裝入程式等。\\n\\n發展過程\\n\\n隨著程式設計語言的變化和發展,語言處理係統也跟著由小到大、由簡單到複雜的變化和發展。最初人們直接用機器語言來描述問題的解法,這種程式無需任何處理就能直接在計算機上運行。但是這樣的編程方式太繁瑣,極易出錯,效率極低,是非常不可取的。在計算機發展的早期,人們就在努力設法改變這種編程方式。開始時傾向於準備好一個由一些常用的例程程式組成的庫,並借用一些代碼來引用該庫中的例行程式。後來改用一些字元或語言來表示這些代碼,這樣就成了符號語言的雛形。在此基礎上,人們努力使機器語言符號化。機器語言發展成了組合語言。語言的這一發展導致要求有一翻譯程式把組合語言程式翻譯成機器語言程式,這種翻譯程式稱為彙程式設計序。\\n\\n緊隨組合語言和彙程式設計序之後發展的是自動編譯器。在自動編譯器中,程式人員用的語言更接近通常的數學表示體係。但是用現在的標準來衡量,20世紀50年代初出現的第一批自動編譯器都十分初步,它們隻允許簡單的單目運算,數據元素的命名方式有很多限製,然而它們促進了對高級語言處理係統和通用的翻譯過程的研究。20世紀50年代中期出現了FORTRAN等一批高級語言,與此相適用的語言處理程式、解釋程式和編譯程式也相繼開發成功。\\n\\n隨著編譯技術的進步和社會對編譯程式需求的不斷增長,50年代末有人開始研究編譯程式的自動生成工具,提出並研製編譯程式的編譯程式,它的功能是從任一語言的詞法規則、語法規則和語義解釋出發,自動產生該語言的編譯程式。研製一個功能完全且實用的編譯程式的編譯程式是很困難的。多數編譯程式的編譯程式都是一些專用編程式生成係統,如自動生成詞法分析程式的掃描程式生成係統,自動生成語法分析程式的語法分析程式生成係統。\\n\\n60年代起,不斷有人開始使用自展技術來構造編譯程式。自展的主要特征是用被編譯的語言來書寫該語言自身的編譯程式。自展的思想最早在50年代中間就有人提出,到1971年,PASCAL的編譯程式用自展技術生成後,其影響越來越大。\\n\\n隨著並行技術和並行語言的發展,處理並行語言的並行編譯技術正在深入研究之中,將序列程式轉換成並行程式的自動並行編譯技術也正在深入研究之中。\\n\\n分類\\n\\n按照處理方法,語言處理係統可分為編譯型解釋型和混合型三類。\\n\\n編譯型語言處理係統是采用編譯方法的語言處理係統。解釋型語言處理係統是采用解釋方法的語言處理係統。混合型語言處理係統是兼有編譯和解釋兩種方法的語言處理係統。\\n\\n多數高級語言都有一些不能在編譯時刻確定而要到運行時刻才能確定的特性。因此,與這些特征相關聯的語言成分等價的目標代碼在編譯時刻不能全部生成,需要到運行時才能全部生成。這些語言成分隻能采用解釋方法處理。多數解釋程式都是先對源程式進行處理,把它轉換成某種中間形式,然後對中間形式的代碼進行解釋,而不是直接對源程式進行解釋。這就是說,多數高級語言處理係統既非純編譯型,也非純解釋型,而是編譯和解釋混合型。\\n\\n基本內容\\n\\n程式設計語言處理係統主要包括正文編輯程式、宏加工程式、編譯程式、彙程式設計序、解釋程式、連接編輯程式、裝入程式、編譯程式的編譯程式、自編譯程式、交叉編譯程式和並行編譯程式等。\\n\\n正文編輯程式用於創建和修改源程式正文檔案。一個源程式正文可以編輯成一個檔案,也可以分成多個模塊編輯成若乾個檔案。用戶可以使用各種編輯命令通過鍵盤、鼠標器等輸入設備輸入要編輯的元素或選擇要編輯的檔案,正文編輯程式根據用戶的編輯命令來創建正文檔案,或對檔案進行各種刪除、修改、移動、複製及列印等操作。\\n\\n宏加工程式把源程式中的宏指令擴展成等價的預先定義的指令序列。對源程式進行編譯之前應先對源程式進行宏加工。\\n\\n編譯程式把用高級語言書寫的程式翻譯成等價的機器語言程式或組合語言程式。變異過程可分為分析和綜合兩個部分。分析部分包括詞法分析、語法分析和語義分析三步。分析的目的是檢察源程式的語法和語義的正確定,並建立符號表、常數表和中間語言程式等數據對象。綜合的目的是為源程式中的常數、變量、數組等各種數據對象分配存儲空間,並將分析的結果綜合成可高效運行的目標程式。彙程式設計序把用組合語言書寫的程式翻譯成等價的機器語言程式。\\n\\n解釋程式按源程式中語句的動態執行順序,從頭開始,翻譯一句執行一句,再翻譯一句再執行一句,直至程式執行終止。和編譯方法根本不同的是,解釋方法是邊翻譯邊執行,翻譯和執行是交叉在一起的,而編譯方法卻把翻譯和執行截然分開,先把源程式翻譯成等價的機器語言程式,這段時間稱為編譯時刻,然後再執行翻譯成的目標程式,這段時間稱為運行時刻。正因為解釋程式是邊翻譯邊執行,所以要把源程式及其所處理的數據一起交給解釋程式進行處理。\\n\\n編譯方法和解釋方法各有優缺點。編譯方法的最大優點是執行效率高,缺點是運行時不能與用戶進行互動,因此比較適用於些規模較大或運行時間較長或要求運行效率較高的程式的語言,更適用於寫機器或係統軟件和支撐軟件的語言。解釋方法的優點是解釋執行時能方便的實現與用戶進行互動,缺點是執行效率低,因此比較適用於互動式語言。\\n\\n連接編輯程式將多個分彆編譯或彙編過的目標程式段組合成一個完整的目標程式。組合成的目標程式可以是能直接執行的二進製程式,也可以是要再定位的二進製程式。\\n\\n裝入程式將儲存在外存介質上的目標程式以適於執行的形式裝入內存並啟動執行。\\n\\n編譯程式的編譯程式是產生編譯程式的編譯程式。他接受用某種適當的表示體係描述的某一語言類中任意語言A的詞法規則、語法規則、語義規則和(或)代碼生規則,並從這些描述產生出用目標語言B寫的關於語言A的全部或部分編譯程式。這樣便可顯著提高編譯程式的開發效率。\\n\\n自編譯程式是用被編譯的語言即源語言自身來書寫的編譯程式。利用自變異技術,可以從一具有自編譯能力的語言L的一個足夠小的子集L0的編譯程式出發,逐步構造出L的編譯程式,也可從L的未優化的編譯程式出發,構造優化的編譯程式。\\n\\n交叉編譯程式是一種編譯程式,它自身在甲機器上運行,生成的目標代碼是乙機器的代碼。\\n\\n並行編譯程式是並行語言的編譯程式,或是將序列語言程式並行化的編譯程式,後者又稱為自動並行編譯程式。\\n\\n一個程式特彆是中、大規模的程式難免冇有錯誤。發現並排除源程式中的錯誤是語言處理係統的任務之一。通常源程式的語法錯誤和靜態語義錯誤都是由編譯程式或解釋程式來發現的。排錯能力的大小是評價編譯程式和解釋程式優劣的重要標誌之一。源程式中的動態語義錯誤通常要藉助於在語言中加入某些排錯設施如跟蹤、截斷來發現和排除。處理排錯設施的程式是排錯程式。\\n\\n展望\\n\\n語言處理係統的發展與軟件語言、軟件工程和軟件技術的發展緊密相連,相互影響,相互促進。隨著軟件語言和軟件技術向可視化、多媒體、並行化、智慧化、自然化和自動化等方麵發展,語言處理係統也向著這些方麵發展。\\n\\n\"

}

目錄
設置
設置
閱讀主題
字體風格
雅黑 宋體 楷書 卡通
字體風格
適中 偏大 超大
儲存設置
恢複默認
手機
手機閱讀
掃碼獲取鏈接,使用瀏覽器打開
書架同步,隨時隨地,手機閱讀
收藏
聽書
聽書
發聲
男聲 女生 逍遙 軟萌
語速
適中 超快
音量
適中
開始播放
推薦
反饋
章節報錯
當前章節
報錯內容
提交
加入收藏 < 上一章 章節列表 下一章 > 錯誤舉報