1. 程式人生 > 其它 >01、Assembly--計算機概述

01、Assembly--計算機概述

計算機系統概述

計算機系統包括硬體(Hardware)和軟體(Software)兩大部分。

硬體(Hardware)是指構成計算機的實在的物理裝置。
軟體(Software)一般是指在計算機上執行的程式。

微型計算機(Microcomputer),簡稱微機,是最常使用的一類計算機,在科學計算、資訊管理、自動控制、人工智慧等領域有著廣泛的應用。

計算機硬體

馮·諾依曼設計思想的計算機由5大部件組成:控制器、運算器、儲存器、輸入裝置和輸出裝置。

控制器是整個計算機的控制核心;
運算器是對資料進行運算處理的部件;
儲存器是用來存放資料和程式的部件;
輸入裝置將資料和程式變換成計算機內部所能識別和接受的資訊方式,並把它們送入儲存器中;
輸出裝置將計算機處理的結果以人們能接受的或其他機器能接受的形式送出。

現代計算機對馮·諾依曼計算機結構進行改進,五大部件演變為三個硬體子系統:處理器、儲存系統和輸入輸出系統。

傳統的儲存器也發展成為儲存系統,由暫存器、高速緩衝儲存器、主儲存器及輔助儲存器構成。

處理器和儲存系統在資訊處理中起主要作用,是計算機硬體的主體部分,通常被稱為“主機”。
輸入裝置和輸出裝置統稱為外部裝置,簡稱為外設或I/O裝置;

為簡化各個部件的相互連線,現代計算機廣泛應用匯流排結構如下圖:

處理器

處理器是計算機的運算和控制核心,微機中可被稱為微處理器(Microprocessor)。人們習慣稱它為CPU。

處理器晶片內集成了控制器、運算器和若干高速儲存單元(即暫存器)。

高效能處理器內部非常複雜,例如運算器中不僅有基本的整數運算器、還有浮點處理單元甚至多媒體資料運算單元,控制器還會包括儲存管理單元、程式碼保護機制等,為提高儲存器的效能還會整合高速緩衝儲存器。

我們常用的PC採用美國英特爾(Intel)公司的80x86系列處理器與相容的處理器。

Intel 80x86系列處理器,它們都源於16位結構的Intel 8086處理器,而8086具有的所有指令,即指令系統是整個Intel 80x86系列處理器的基本指令集。

儲存器

儲存器(Memory)是計算機的記憶部件,存放程式和資料。儲存系統由處理器內部的暫存器(Register)、高速緩衝儲存器(Cache)、主機板上的主儲存器和以外設形式出現的輔助儲存器構成。

按所起作用,儲存器可分為主儲存器和輔助儲存器。

主儲存器:主要用來存放當前正在執行的程式和等待處理的資料,也就是記憶體。
輔助儲存器:主要由磁碟、光碟儲存器構成,以外設的形式安裝助機器上,比如硬碟。

按讀寫功能,儲存器可分為可讀可寫儲存器RAM(Random Access Memory)和只讀儲存器ROM(Read Only Memory)。

RAM:可讀可寫,存放在RAM晶片上的資訊斷電後將會丟失。
ROM:只能讀取,在晶片中的資訊則可在斷電後儲存。

外部裝置

外部裝置是指計算機上配備的輸入(Input)裝置和輸出(Output)裝置,也稱 I/O 裝置或外圍裝置,簡稱外設(Peripheral),其作用是讓使用者與計算機實現互動。

計算機上配置的標準輸入裝置是鍵盤、標準輸出裝置是顯示器,二者又合稱為控制檯(Console)。

由於各種外設的工作速度、驅動方法差別很大,無法與處理器直接匹配,所以就需要有一個I/O介面來充當外設和主機之間的橋樑。

系統匯流排

匯流排(Bus)是用於多個部件相互連線、傳遞資訊的公共通道,物理上就是一組公用導線。

系統總線上傳送的資訊包括資料資訊、地址資訊、控制資訊,因此,系統匯流排包含有三種不同功能的匯流排:

資料匯流排DB(Data Bus)、地址匯流排AB(Address Bus)和控制匯流排CB(Control Bus)。

微型計算機通過系統匯流排將各部件連線到一起,實現了微型計算機內部各部件間的資訊交換。

對組合語言程式設計師來說,處理器、儲存器和外部裝置依次被抽象為暫存器、儲存器地址和輸入輸出地址,因為程式設計過程中將只能通過暫存器和地址實現處理器控制、儲存器和外設的資料存取及處理等操作。

計算機軟體

一個完整的計算機系統包括硬體和軟體,而軟體又分為系統軟體和應用軟體。

系統軟體

系統軟體是為了方便使用、維護和管理計算機系統的程式及其文件,通常由計算機生產廠商或者軟體公司提供,其中最重要的是作業系統。

作業系統OS(Operating System)管理著系統的軟硬體資源,互動介面、驅動程式來為其他程式構建穩定的執行平臺。

應用軟體

應用軟體是解決某個問題的程式及其文件,大到用於處理某專業領域問題的程式,小到完成一個非常具體工作的程式。

大型的應用軟體專案要藉助軟體開發工具包,這個開發工具是進行程式設計所用到的各種程式的有機集合,所以也被稱為整合開發環境,包括文字編輯器、語言翻譯程式,有用於形成可執行檔案的連線程式,以及進行程式排錯的除錯程式等。

程式設計語言

程式設計語言就是程式設計師用來編寫程式的語言,它是人與計算機之間交流的工具。

程式設計語言可以分為機器語言、組合語言和高階語言。

機器語言

計算機能直接識別由二進位制數0和1組成的程式碼。機器指令(Instruction)就是用二進位制編碼的指令,指令是控制計算機操作的命令。

通常某種處理器支援的所有指令集合就是該處理器的指令集(Instruction Set)。

用機器語言形成的程式是計算機唯一能夠直接識別、並執行的程式,而其他語言則必須經過翻譯、變換成機器語言程式。

例如,完成兩個資料100和256相加的功能,在8086處理器的二進位制程式碼序列如下:

10111000 01100100 00000000
00000101 00000000 00000001    

機器語言由二進位制程式碼組成,由於難於閱讀和理解,並且表達的資訊很冗長,所以為了簡化表達而使用十六進位制。

一個十六進位制位可以表達四位二進位制數,並且易於相互的轉換,十六進位制由0-9和A-F來表示,其中A-F表示十進位制的10-15。

所以上述二進位制程式碼序列使用十六進位制的表示為:

B8 64 00
05 00 01    

組合語言中,習慣使用字尾字母區別不同進位制的資料:

二進位制:使用字母B或b來表示,來自二進位制英文單詞Binary。
十進位制:使用字母D或d來表示,通常不需要特別的說明,可以省略。
十六進位制:使用字母H或h來表示,來自十六進位制的英文單詞Hexadecimal。

組合語言

為了克服機器語言的缺點,通常使用便於記憶的描述指令功能的符號來表示機器指令,稱為助記符(Mnemonic)。

例如,實現100與256相加的MASM組合語言程式片段如下:

mov ax, 100
add ax, 256

第一條指令是講資料100傳送給名為AX的暫存器,而MOV四傳送指令的助記符,實現賦值功能。

第二條指令實現加法操作,ADD是加法指令的助記符。

組合語言是一種符號語言,它用助記符表示操作碼,比機器語言容易理解和掌握、也容易除錯和維護。

高階語言

高階語言比較接近於人類自然語言的語法習慣及數學表達形式,它和機器語言無關(使用簡單)。

目前,計算機高階語言已有上百種之多,得到廣泛應用的有十幾種,每種高階語言都有其最適用的領域。用任何一種高階語言編寫的程式都要通過編譯程式(Compiler)翻譯成機器語言程式(稱為目標程式)後計算機才能執行,或者通過解釋程式邊解釋邊執行。

比如用高階語言表達100與256的相加,將四通常的數學表達形式:

100 + 256