資料介紹
《計算機組成原理與匯編語言程序設計》復習指南俸遠禎? 徐潔?
為了幫助同學們復習,本文首先闡明本課程的教學目標與考核說明,這是總復習的指導思想。在重點與難點的剖析中,則首先突出需熟練掌握的部分,然后再討論一些需掌握、理解的概念和方法,其間插入一些典型題例。由于匯編語言程序設計有其自身的體系和特點,我們將它作為專門的一節討論。
一、 教學目標與考核要求
??? 本課程的教學目標是:在學完本課后能建立起整機概念,它可分為兩級:
(1) CPU級,它包含三個方面:CPU基本組成、指令流程、匯編語言級程序設計方法。
(2) 系統級,它包含兩個方面:如何通過系統總線與接口將CPU、主存、I/O設備(含外存)連接成整機,對輸入/輸出的三種基本控制機制。
??? 相應地,考核也將緊緊圍繞這一基本教學目標。一套規范的試卷應能體現出與整機概念相關的核心內容,如:CPU如何執行程序(指令流程),如何組成一個半導體存儲器,總線與接口的基本組成,中斷方式的定義、特點、應用、過程,DMA方式的定義、特點、應用、過程,同步控制與異步控制,閱讀、分析程序段,用常用匯編語句編寫程序段(教材例題和錄像教學中使用的匯編語句基本上就屬于常用的)等。
??? 教材在每章開頭的“學習目標”中,分別用幾種層次表明考核要求:①熟練掌握,這是重之重、必考內容,可能占有較大比重。②掌握。③理解。屬于“了解”的內容一般不直接考核,即或涉及到一些,其比重也很小。
??? 試題類型大致分為:①單項選擇題②多項選擇題③改錯題(原題均有錯)。在這三種試題中都給出一些似是而非的提法或結論,要求考生能正確理解有關概念,能選擇或給出正確的結論。注意,對改錯題的改正并不是將原來的提法簡單地顛倒就行的,也不要偏離題意。④簡答題,要求正面回答、闡述。有時也要求對可比性概念進行比較分析,例如同步控制與異步控制、組合邏輯控制與微程序控制、中斷與DMA等。⑤分析題,如閱讀一段用匯編語言書寫的程序段,然后回答問題。⑥設計題,如擬定指令流程、設計半導體存儲器、編寫程序段等。設計題通常是重點所在,請大家務必注意,本文也將重點分析。
二、 需熟練掌握的內容
??? 教材在三處采用了“熟練掌握”的提法:CPU基本組成與指令流程,用存儲芯片構成某一容量的存儲器,中斷方式與DMA方式。這些知識點涉及到建立整機概念的核心問題:CPU如何執行指令,計算機如何存儲信息,如何控制輸入/輸出。
1.CPU基本組成
??? 教材3.3.1節給出了一種簡化的CPU內部組成模型,它是擬定指令流程的基礎,大家應該記住它。在理解它的組成時需要抓住幾點:
(1) ALU部件,以及它的輸入與輸出方式。
(2) 用于運算的一組寄存器R0~R3及暫存器C、D、Z。
(3) 用于控制的一組寄存器:指令寄存器IR,程序計數器PC,程序狀態字寄存器PSW。
(4) 與訪存相關的一組寄存器:存儲器地址寄存器MAR,存儲器數據寄存器MDR,堆棧指針SP。
(5) 內部總線的連接方式,如何向它發送信息,它又如何輸出信息。
(6) CPU如何通過系統總線與主存、I/O設備相連接。
2.擬定指令流程
??? 指令流程體現了計算機工作原理中一個核心內容:CPU究竟怎樣執行程序指令?大家務必要熟練掌握。考核方式一般是給出一條特定的指令,以模型機CPU內部組成為背景,用寄存器傳送級語句描述其讀取與執行流程。關鍵是要熟練掌握幾種基本尋址方式的實現過程,分清誰是源地址、誰是目的地址,操作碼是什么。
設計題:擬出指令MOV-(SP),x(R0)的讀取與執行流程。
PC→MAR? 取指令地址
M→MDR→IR,PC+1→PC? 取指令
PC→MAR
M→MDR→D,PC+1→PC? 取形式地址
D+R0→Z 變址計算
Z→MAR 送有效地址
M→MDR→C 讀源操作數
SP-1→Z
Z→MAR、SP 修改棧頂地址
C→MDR
MDR→M?? 壓棧
??? 本題的操作碼MOV是一條傳送指令,意味著從源地址讀取一個操作數,送入目的地。按模型機指令格式,源尋址方式助記符x(R0)表明是采用變址方式,即:從緊跟現行指令的下一個存儲單元中讀取形式地址,送入暫存器D;變址寄存器R0的內容(變址量)與形式地址相加,獲得有效地址,暫存在Z中;再按該有效地址從主存中讀取源操作數,送入暫存器C。目的地尋址方式助記符-(SP)表明采用堆棧尋址方式,將源操作數壓入堆棧;先修改堆棧指針SP,使它指向新棧頂(待存的空單元)。最后,將暫存于C中的源操作數經MDR送入主存(即壓入堆棧)。
??? 采用了兩種相對復雜一些的尋址方式,常用的尋址方式還有:寄存器尋址方式R、寄存器間址方式(R),自減型寄存器間址方式-(R),自增型寄存器間址(R)+,直接尋址方式DI等,大家務必要掌握。
3.存儲器設計
??? CPU加上主存,習慣上稱為主機。在構建某個計算機應用系統中,常需自行設計半導體存儲器,即用若干存儲芯片構造一定容量的存儲器。所以這是必須熟練掌握的核心內容。
設計題:用1K×4/片的存儲芯片構成一個4KB存儲器,地址總線A15~A0(低),數據總線D7~D0(低),R/W控制讀寫。請畫出芯片級邏輯框圖,注明各信號線,寫出片選邏輯式。
??? 教材已經完整地講解了設計方法與設計過程,本文在這里僅強調一些需要注意的地方。若本題的題分為10分,則評分標準往往是:芯片數量及其組合1分;芯片地址是哪幾位,3分;片選邏輯,4分;數據線1分;讀寫控制1分。在完成設計并畫出邏輯圖后,應當從上述幾方面檢查一下。存儲器邏輯的核心是尋址邏輯,因此芯片地址、片選邏輯這兩項在評分標準中占有主要份量。為此需要掌握存儲容量與相應地址位數之間的對應關系:1K容量需要10位地址,2K容量需要11位地址……。本題的地址分配關系如下:
不用片選芯片地址 A15? A14? A13? A12
片選地址 A11? A10
芯片地址 A9? A8? A7? A6? A5? A4? A3? A2? A1? A0
片選邏輯式:CS0=A11 A10?? CS1=A11 A10
??????????? CS2=A11 A10?? CS3=A11 A10
4.中斷方式
??? 為了將主機與I/O設備連接成一臺計算機系統,需要通過系統總線與各種接口實現連接,還要能夠選擇實現三種基本的I/O控制機制之一。這是由CPU級發展到系統級整機概念的關鍵,其中有關中斷方式和DMA方式的概念最為重要,也相對復雜些,因此被列為必須熟練掌握的核心內容之一。
(1) 定義:當CPU接到某個隨機的中斷請求信號后,暫停執行當前的程序,轉去執行相應的中斷處理程序,為該隨機事態服務,服務完畢后自動返回并繼續執行原程序。這一過程稱為中斷,采用這種方式控制I/O操作或處理隨機事件,稱為中斷方式。
(2) 特點:通過執行程序處理,具有隨機性。
(3) 應用:抽象地說,中斷方式主要應用于管理中低速I/O操作、處理復雜的隨機事件。具體的應用實例如:故障處理、中低速I/O控制、通信、實時處理、人機對話等。
(4) 中斷過程:中斷請求信號的產生與傳送,屏蔽與判優,CPU響應(保存斷點、轉向中斷處理程序入口),中斷處理(執行處理程序),返回。(細節見教材)
(5) 向量中斷:這是現代計算機廣泛采用的一種獲取中斷處理程序入口的方式。事先將系統各個中斷處理程序的入口地址作為中斷向量,組織成一個中斷向量表,存放在主存的特定區域中;當CPU響應中斷請求并發出批準信號后,提出該請求的中斷源(如某個中斷接口)向CPU送出自己的向量編碼(如中斷類型碼),CPU將它轉換成向量地址;據此訪問主存中的中斷向量表,從中讀取相應的中斷處理程序入口地址,從而轉去執行處理程序。
5.DMA方式
??? 作為三種I/O控制機制之一,DMA方式是一種重要的數據傳送方式。
(1) 定義:DMA方式是直接依靠硬件實現主存與I/O設備之間數據直接傳送的一種方式,在傳送過程中不需CPU程序干預。
(2) 特點:直接依靠硬件實現數據傳送(不是依靠執行程序),具有隨機性。
(3) 應用:抽象地說,DMA方式適用于高速的簡單數據批量傳送。具體的應用實例如:讀寫磁盤、光盤、磁帶等外存儲器時的數據傳送、網絡通信、動態刷新等。
(4) 典型過程:一次完整的調用過程包含三個階段:
A.DMA初始化。CPU執行初始化程序:預置DMA控制器的工作方式,并向它送出傳送方向、
主存緩沖區首址、交換數據量等信息;向I/O設備接口送出讀寫命令、設備尋址信息,然后啟動設備工作。
B.DMA傳送。當需要傳送時,接口向DMA控制器提出DMA請求,然后DMA控制器向CPU申請總線控制權,獲得批準后由DMA控制器接管總線(送出總線地址和讀寫命令),接口和主存之間通過數據總線直接傳送。
C.結束處理。批量傳送結束后,接口向CPU提出中斷請求,CPU執行中斷處理程序進行結束處理。
簡答題:何謂中斷方式?舉出兩種應用實例。
簡答題:比較并說明中斷方式與DMA方式的主要異同。
改錯題:DMA方式是直接依靠硬件實現主機與I/O設備之間的數據直傳。
注意,主機包括CPU與主存,而DMA方式正是要繞過CPU。
三、 需要掌握、理解的內容(部分)
??? 雖然我們先突出了最重要的一些內容,但為了建立整機概念還需要全面復習教材。限于篇幅,本文只能對其中的部分重點與難點進行剖析,并給出一些題例,起到示范作用。注意,不能將本文視為考試范圍,復習時一定要以考核大綱為準。
1.存儲程序工作方式:事先編寫程序,事先存儲程序,自動連續執行程序。
2.計算機的特點。基于存儲程序工作方式和數字化信息表示,計算機具有下述特點:能在
程序控制下自動連續地工作,運算速度快,運算精度高,具有很強的信息存儲能力,通用性強。
3.數制轉換
單選題:(195)10=(B)2
A.11001101???? B.100111
C.1001101????? D.110010101
4.碼制轉換
單選題:若X=-01100100,則X補=(D)
A.01100100???? B.11100100
C.10011011???? D.10011100
5.定、浮點數的表示范圍、分辨率、典型值。關鍵是掌握它們的典型值,由此可知其表示范圍和分辨率。
單選題:某定點整數16位,含1位符號位,補碼表示,則所能表示的絕對值最大負數的十進制真值為(A)
A.-215???? B.-216???? C.-(215-1)??? D.-(216-1)
6.I/O編址方法
??? CPU訪問I/O設備是通過接口中的寄存器進行的,目前廣泛采用的有兩種I/O編址方法:
(1) 單獨編址。為I/O接口中的有關寄存器分配I/O端口地址,一般由地址總線若干低位提供I/O端口地址,從而選擇某個接口寄存器進行讀/寫。
(2) 統一編址。將I/O接口中的有關寄存器與主存單元統一編址,一般將總線地址碼中高端(地址值大)的一段區域分配給I/O端口。
7.運算部件的構成@
??? 運算分為算術運算與邏輯運算,算術運算以加法器為核心。多位全加器加上進位鏈構成并行加法器,加法器加上輸入選擇邏輯成為多功能的算術邏輯運算部件ALU,ALU加上移位邏輯可實現乘除運算,而浮點運算可分解為定點整數的階碼運算和定點小數的尾數運算。在簡單的CPU中可能只有一個ALU和一個移位器,而復雜的CPU中可能包含多個、多種運算部件。
8.原碼運算與補碼運算
??? 簡答題:指出原碼運算與補碼運算的主要區別。
??? 原碼運算主要用于乘除法,取尾數(絕對值)運算,符號位單獨處理;其絕對值運算又稱為無符號數運算。補碼運算包括加減乘除,其主要特點是符號位作為數的一部分直接參與運算,又稱為帶符號數運算。
9.組合邏輯控制器
??? 它通過組合邏輯電路產生微命令,產生微命令的輸入信號有:指令代碼(操作碼、尋址方式碼等),時序信號(工作周期、時鐘周期、工作脈沖),程序狀態(PSW中的標志位),外部請求等。輸出為微命令(電位型、脈沖型)。優點:速度快。缺點:設計較凌亂,不易修改擴充。應用于快速CPU中。
10.微程序控制器
??? 簡答題:簡述微程序控制方式的基本思想
(1) 產生微命令的方法:將所需的微命令以代碼形式編成若干條微指令,在制造CPU時將它們存入CPU內的一個控制存儲器(ROM型)。CPU執行指令時,從控制存儲器中讀出微指令,即可獲得所需的微命令。
(2) 微程序與工作程序之間的對應關系:一條微指令包含的微命令控制實現一步(一個時鐘周期)機器操作;若干條微指令組成一小段微程序,解釋實現一條機器指令;控制存儲器中的微程序能解釋實現全部指令系統。
簡答題:簡述微程序控制方式的優缺點
優點:設計比較規整,易于修改擴充。
缺點:速度較組合邏輯控制器稍慢。
應用于對速度要求不是特別高的CPU中,例如Intel的80×86系列。
11.同步控制方式
??? 同步控制方式是這樣一種時序控制方式:各項操作都由統一的時序信號同步定時,它的主要特征是有固定的時鐘周期劃分。這意味著什么時間執行什么操作是事先安排好的,一項基本操作占用一個時鐘周期(節拍),某個操作發生的時刻由相應的脈沖邊沿定時。
??? 在CPU內部及各設備內部一般都采用同步控制方式;在傳送距離較短、各設備速度差異不很大、傳送時間可大致預估的系統中,其系統總線也廣泛應用同步控制方式,稱為同步總線。
12.異步控制方式
??? 在異步控制方式中,數據傳送及各項操作之間的銜接采用應答方式實現;所需時間視實際需要而定,能短則短,需長則長;其主要特征是沒有固定的時鐘周期劃分,由一組應答信號定時。在傳送距離較長、系統內各設備差異較大、傳送時間不易預先估計的系統中,其系統總線常采用異步控制方式,稱為異步總線。
13.總線及其分類
??? 總線是一組可由多個部件分時共享的傳送信息的公共線路。它可連接多個部件(共享),某一時刻只能有一個部件可通過總線發送數據(分時),但可將該數據傳送至一個或同時傳送至多個部件。
??? 按數據傳送格式,總線可分為串行總線與并行總線。按時序控制方式,總線可分為同步總線與異步總線,或再細分出一種同步擴展總線。按所處的位置和功能,可分為CPU內部總線、系統總線以及各種部件內部總線。按傳送信息類型,可分為地址總線、數據總線、控制總線。
14.系統總線的信號組成
??? 典型的系統總線大致包括下述類型的信號:電源與地,地址,數據,同步定時信號或異步應答信號,數據傳送控制信號,中斷請求與批準信號,總線請求與批準,系統復位等。
15.I/O接口的定義與分類
??? I/O接口是位于系統總線與I/O設備之間的邏輯部件,它提供了主機與I/O設備之間進行信息傳送的界面和控制邏輯。
??? 按數據傳送格式,接口可分為串行接口與并行接口。注意,接口的一側面向系統總線,另一側面向I/O設備。對于并行接口,它與系統總線以及與I/O設備之間都是并行。而對于串行接口,它與系統總線之間仍為并行,與設備之間則是串行。因此在串行接口中需進行串-并轉換,比并行接口復雜。
??? 按時序控制方式分類,接口可分為同步接口與異步接口。
??? 按I/O控制機制分類,接口可分為直接程序控制方式接口、中斷接口、DMA接口。
16.中斷接口的基本組成及功能
(1) 端口地址譯碼電路與讀寫控制。它決定是否訪問本接口,選擇接口的哪個寄存器,讀出還是寫入。
(2) 命令字及狀態字寄存器。CPU采用輸出指令通過數據總線向接口寫入命令字,其代碼將產生某些具體的操作命令。CPU采用輸入指令通過數據總線從接口讀取狀態字,以判別接口及設備的工作狀態。
(3) 數據緩沖寄存器/存儲器。它轉發輸入、輸出數據,實現緩沖使主機與I/O設備之間達到速度匹配,及可能需要的串并格式轉換。
(4) 與設備特性及中斷機制有關的控制邏輯。通常將其中的公共部分(各接口公用)集中在中斷控制器中,它包含:暫存中斷請求信號、屏蔽、判優、中斷類型碼、向CPU提出請求及接受批準信號等。而某個設備的中斷信號產生電路,以及與該設備操作相關的控制邏輯,則位于該I/O接口中。
簡答題:簡述I/O接口的基本功能
(1) 地址譯碼,選取接口寄存器。
(2) 接收控制命令,提供工作狀態信息。
(3) 數據緩沖(速度匹配),格式轉換。
(4) 控制邏輯,如中斷、DMA控制邏輯,設備操作等。
17.三級存儲體系
??? 常見的三級存儲體系(從CPU往外)是:Cache、主存、外存。
??? 主存儲器用來存放需CPU運行的程序和數據。用半導體RAM構成,常包含少部分ROM。可由CPU直接編程訪問,采取隨機存取方式,即:可按某個隨機地址直接訪問任一單元(不需順序尋找),存取時間與地址無關。存儲容量較大,常用字節數表示,有時也用單元數×位數表示。速度較快,以存取周期表示。
??? Cache位于CPU與主存之間(有些Cache集在CPU芯片之中),用來存放當前運行的程序和數據,它的內容是主存某些局部區域(頁)的復制品。它用快速的半導體RAM構成,采取隨機存取方式。存儲容量較小而速度最快。
??? 外存儲器用來存放暫不運行但需聯機存放的程序和數據。用磁盤、光盤、磁帶等構成,磁盤用于需頻繁訪問場合,光盤目前多用于提供系統軟件,而磁帶多用于較大系統的備份。CPU不能直接編址訪問外存,而是將它當作外圍設備調用。磁帶采取順序存取方式。磁盤與光盤采取直接存取(半順序)方式,先直接定位到某個局部區域,再在其中順序存取。外存容量可以很大,以字節數表示。由于外存的存取時間與數據所在位置有關,所以不能用統一的存取周期指標來表示。例如磁盤的速度指標可按其工作過程分成三個階段描述:①平均尋道時間②平均旋轉延遲(等待)時間③數據傳輸率。
18.靜態RAM
??? 靜態RAM依靠雙穩態電路(內部交叉反饋)存儲信息,即一個雙穩態電路單元存放一位二進制信息,一種穩態為0,另一種穩態為1。只要電源正常就能長期保存信息,不需動態刷新,所以稱為靜態存儲器。一旦斷電則信息將會丟失,屬于易失性(揮發性)存儲器。與動態RAM相比,靜態RAM的速度更快,功耗較大,集成度較低,常用于容量較小的存儲器中。
改錯題:靜態RAM的“靜態”二字含意是:在工作中它的內容靜止不變。
19.動態RAM
??? 動態RAM依靠電容暫存電荷來存儲信息,電容充電至高電平為1,放電至低電平為0。由于暫存電荷會逐漸泄漏,需要定期補充電荷來維持為1的存儲內容,這種方法稱為動態刷新。由于需要動態刷新,所以稱為動態存儲器。在電源正常并采取動態刷新的條件下,可以長期保存信息。一旦斷電則信息丟失,也屬于易失性存儲器。與靜態RAM相比,動態RAM功耗較小,集成度較高,但速度稍慢一些。常用來構成容量較大的存儲器。
20.動態刷新
??? 在動態存儲器中,定期對原存信息為1的電容補充電荷,稱為動態刷新。動態刷新的方法是:存儲器中各存儲芯片同時按行地讀出重寫。全部刷新一遍所允許的最大時間間隔稱為最大刷新周期,一般為2ms。動態刷新的安排方式有三種:集中刷新、分散刷新、異步刷新,目前廣泛采用后一種,或是利用DMA方式實現,或是設置專門的刷新邏輯,或是將刷新邏輯集成在存儲芯片內部。
21.磁盤存儲器
??? 對磁盤存儲器,要求大家掌握的內容是:磁盤中的信息組織方法、在訪問磁盤時應給出的尋址信息、能結合磁盤調用闡述DMA方式(如二、5所述)。
??? 在軟件組織這一層次,信息是以文件的形式進行組織并存放于磁盤之中,用戶只需按文件名進行存取。在物理層次中,一個文件分成若干個數據塊,一個數據塊包含若干字節,常見的作法是每個數據塊的字節數固定(例如512B),稱為定長數據塊。相應地,磁盤中的信息分布也分為幾個層次,以硬盤為例:一個硬盤驅動器中有一個盤組,包含若干盤片/記錄面;每個記錄面上分為若干磁道,呈同心圓狀;每個磁道按一定磁道格式劃分為若干扇區,每個扇區可存放一個數據塊;在扇區內,數據按位串行記錄。
??? 相應地,從物理操作層次看,在調用磁盤時驅動程序需向適配卡送出如下一些尋址信息:臺號(驅動器號),圓柱號(磁道號),記錄面號(磁頭號),扇區號(數據塊號)。如果一個文件中的各數據塊是順序存放,則尋址信息中還給出一項:交換量。如果文件中的各數據塊不是順序存放而是隨機存放,則每次都應給出其扇區號。
??? 因此磁盤驅動器的工作過程分為幾個階段:①尋道。盤片等速旋轉,磁頭沿徑向移動以尋找(定位)信息存取位置所在磁道。②尋找扇區。尋道完成后,磁頭不動,盤片旋轉,等待扇區頭部經過磁頭。③連續讀/寫。當扇區頭到經過磁頭時開始連續讀出或寫入,此時盤片連續旋轉而磁頭不動,直到需轉入另一圓柱面的磁道時才重新移動磁頭。
22.鍵盤
??? 鍵盤上的鍵被連接成行列矩陣,每個鍵位于某行與某列的交點位置,即該鍵的一端連接到某根行線(i),而另一端連接到某根列線(j)。因此識別按鍵的基本方法是依序掃描,查找按鍵所處行列位置(i,j),稱為掃描碼,再查表將行列位置轉換為該按鍵的鍵碼(一般是ASCII碼)。廣泛使用的是軟件掃描,其中比較簡單、易于理解而又具有實用價值的是軟件逐行掃描法。
簡答題:簡述鍵盤的軟件逐行掃描法
答:如圖(本文略)所示,①當有鍵按下時,鍵盤產生中斷請求,CPU執行鍵盤掃描子程序。②CPU通過數據線輸出代碼至各行線,從第0行開始,逐行為0,其余各行為1。將列線輸出送CPU進行判斷,判別其中是否有一位為0,哪一位為0。③假定掃描至第i行為0時發現第j列輸出為0,則按鍵位置為(i,j)。④查表,將行列碼(i,j)轉換為ASCII鍵碼。
23.CRT顯示器
??? 為了掌握顯示器的基本原理,關鍵是理解屏幕顯示與顯示緩存之間的一組對應關系(存儲容量、信息轉換、地址組織、同步控制)。從存儲器角度看,在主存中開辟有顯示輸出緩沖區,在顯卡(適配器)上有相應的顯示緩存(VRAM)。利用屏幕回掃消隱時間,驅動程序將待顯示的信息(字符碼或位象代碼)從主存輸出到顯卡上的緩存。在屏幕正程掃描顯示期間,顯示緩存中的信息(或經信息轉換)送往屏幕顯示。從屏幕顯示角度,分為字符顯示、圖像顯示兩大類。對于字符顯示方式,從顯示緩存中讀出的是字符編碼,需經過字符發生器轉換為字符點陣代碼,按點陣成象原理在屏幕上形成字符圖形。如果是圖形方式,從顯示緩存中讀出的是位象編碼,例如按光柵掃描順序,每8位像點代碼為一個字節。
簡答題:若字符顯示規格為80列×25行,則顯示緩存的基本容量應不小于多少?
答:80×25=2000字節。
注意,為了獲得豐富的顯示效果,顯示信息中除字符編碼外還有彩色/灰度、顯示屬性等,因此實際的緩存容量要遠大于上述最小值。
簡答題:若圖形顯示規格為800×600,則顯示緩存的基本容量應不少于多少?
答:(800×600)÷8=60000字節。
簡答題:字符顯示規格為80列×25行,若要在第1行第3列顯示一個A,該字符編碼應存放在基本緩存第幾個單元?
答:(1×80)+3=83@
注意,行號與列號都是從0開始。地址組織與掃描順序相應,掃描順序自左向右、自上而下,地址碼自0開始增加。
四、 匯編語言程序設計
??? 學習匯編語言程序設計的目的,一是能讀懂程序,二是編寫程序段。相應地考核題型也就是這兩種,前者稱為分析題,后者納入設計題。按照學時比例,這部分約占總分的五分之一左右。第四章內容雖不是直接考核對象,但它們是完成程序設計題的基礎,大家應當按教材的學習目標進行復習。
??? 由于程序設計部分內容的特點,我們無法像前面那樣復述主要的概念與結論,只能逐個說明各部分的考核內容與要求,在最后給出示范考題供參考。
1.8086/8088的寄存器、存儲器和堆棧
??? 重點是:①理解標志寄存器各狀態標志位的含意。②掌握堆棧壓入指令PUSH和彈出指令POP的功能,特別是對堆棧指針SP的操作。
2尋址方式
??? 要求掌握六種常用的尋址方式:寄存器尋址方式、立即數尋址方式、直接尋址方式、寄存器間址方式、變址尋址和基址尋址方式、基址變址尋址方式。主要是通過閱讀程序和編寫程序來掌握這些尋址方式的應用,對存儲器中的操作數可使用不同的尋址方式進行存取,編程時應根據需要選擇合適的尋址方式。例如連續訪問一維數組中的各元素,可用寄存器間址或變址(基址)尋址方式。
3.8086/8088指令
??? 由于指令條數較多,不易記憶,造成復習困難。為了使同學們能掌握最常用的指令,為讀懂程序和編寫簡單程序段打下基礎,本文列出一些需熟練掌握的指令(注意,并不是其它指令就不重要了,它們在實際的程序中也要用到)。
(1) 傳送類:數據傳送指令MOV、交換指令XCHG、裝入有效地址指令。注意,這三條指令對狀態標志位無影響。
(2) 算術運算類:加法指令ADD、帶進位加法指令ADC、加1指令INC;減法指令SUB、帶借位減法指令SBB、減1指令DEC、求負數指令NEG、比較指令CMP;無符號數乘法指令MUL、無符號數除法指令DIV。
注意,要掌握加減運算指令對狀態標志位的影響。
(3) 位操作類:邏輯與指令AND、邏輯或指令OR、邏輯異或指令XOR、邏輯非指令NOT、測試指令TEST;算術左移SAL、算術右移SAR、邏輯左移SHL、邏輯右移SHR、循環左移ROL、循環右移ROR、帶進位循環左移RCL、帶進位循環右移RCR等。
注意,要掌握邏輯運算指令和測試指令對狀態標志位的影響。
(4) 標志位操作指令:清除進位標志CLC、進位標志置位STC。
對于上面這些最常用的指令,要掌握它們的格式、功能、以及在程序中的使用。
4.匯編語言中的常用運算符
(1) 算術運算符:+、-、〔? 〕(下標運算)
(2) 數值返回運算符:SEG、OFFSET、TYPE、SIZE、LENGTH。
(3) 屬性運算符:PTR
5.常用偽指令
(1)? 符號定義偽指令:等值偽指令EQU、等號偽指令“=”。
(2) 數據定義偽指令:DB、DW、DD
注意掌握如何使用數據定義偽指令來定義變量,以及為變量賦初值的表達式的幾種形式:數值表達式、?表達式、字符串表達式、帶DUP表達式。
(3) LABEL偽指令@
注意LABEL偽指令與指令或數據定義偽指令連用時的使用方法。
(4) 段結構偽指令
要求掌握:段定義偽指令SEGMENT/ENDS、段尋址偽指令ASSUME、END偽指令在程序中的使用;匯編語言源程序的分段結構和段寄存器的裝入。
(5) 過程定義偽指令PROC/ENDP
可結合子程序設計,掌握在同一代碼段中使用過程定義偽指令去定義子程序。
(6) 定位偽指令ORG:在數據段中的使用。
6.順序程序設計@
??? 要求能編制順序程序段完成四則運算多項式的計算及指定功能。
7.分支程序設計
??? 要求能使用轉移指令編制具有2~3個分支結構的程序段。
(1) 無條件轉移指令JMP:掌握段內直接尋址轉移。
(2) 條件轉移指令
掌握:簡單條件轉移指令JC、JNC、JE、JNE、JS、JNS,無符號數條件轉移指令JA、JAE、JB、JBE,帶符號數條件轉移指令JG、JGE、JL、JLE。
注意區分無符號數條件轉移指令與帶符號數條件轉移指令的使用場合。
8.循環程序設計
??? 要求能使用循環控制指令或轉移指令編制簡單的單重循環程序段,重點是LOOP循環控制指令的功能和使用。
9.子程序設計
??? 掌握子程序調用指令CALL、子程序返回指令RET的功能與使用,使用寄存器傳遞主、子程序參數的方法,能編制程序段實現段內的子程序調用與返回。
10.DOS功能子程序調用
??? 要求掌握四種DOS功能調用:帶顯示的鍵盤輸入(1號功能)、字符串輸入(OAH號功能)、單字符顯示(2號功能)、字符串顯示(9號功能)。
11.分析題舉例(閱讀程序段后給出答案,每小題5分)
(1) MOV? AL,0FH
??? MOV? BL,10H
??? CALL? SUB1
??? INC? AL
DEC? BL
SUB1? PROC
??? ADD? AL,BL
??? XCHG? AL,BL
??? RET
SUB1? ENDP
上述程序段運行后,(AL)=11H,(BL)=1EH。
(2) 設(DX)=1234H
??? MOV? CL,8
??? ROR? DX,CL
??? AND? DX,0FFH
??? CMP? DX,12H
上述程序段運行后,(Dx)=12H,ZF=1
12.設計題舉例(每小題5分)
(1) 編寫一程序段,計算x2+y-5多項式的值。
說明:多項式存于AX中,x、y是無符號數。
? 數據說明:x? DB? 0CH
???????????? y? DB? 06H
參考答案:
MOV? AL,x
MUL? x
ADD? AL,y
ADC? AH,0
SUB? AX,5
(2) 編寫一程序段,統計數據區BUF中0的個數,并存入RES單元。數據段為:
DATA? SEGMENT
BUF? DB? 0,5,0,3,2
RES? DB? ?
DATA? ENDS
參考答案:MOV? CX,5
MOV? SI,OFFSET? BUF
MOV? BL,0
LOP:MOV? AL,〔SI〕
CMP? AL,0
JNE? NEXT
INC? BL
NEXT:INC? SI
LOOP? LOP
MOV? RES,BL
- MCS-51單片機匯編語言程序設計
- 51單片機匯編語言程序設計的學習課件資料概述 33次下載
- 匯編程序設計的教程課件免費下載 17次下載
- 計算機學習教程之指令系統與匯編語言程序設計課件免費下載 0次下載
- 微機原理--匯編語言程序設計 0次下載
- 匯編語言程序設計 0次下載
- 匯編語言程序設計 0次下載
- 匯編語言程序設計自學教程 40次下載
- 匯編語言程序設計,下載 0次下載
- 匯編語言程序設計PPT
- 微機原理與匯編語言程序設計課件
- 宏匯編語言程序設計(PDF) 0次下載
- 計算機組成原理與匯編語言程序設計 0次下載
- 匯編語言程序設計下載 0次下載
- 匯編語言程序設計pdf 0次下載
- 匯編語言基礎知識:基本概念 1788次閱讀
- 匯編語言結構與8086概述 2523次閱讀
- 匯編語言的變量與編碼是什么 1453次閱讀
- 淺談4位HRRG計算機定義的匯編語言 2698次閱讀
- 計算機的機器語言和匯編語言與高級語言的詳細資料介紹 5610次閱讀
- 單片機 | 基礎匯編語言編程實例 9876次閱讀
- 計算機編程語言的發展趨勢分析 5150次閱讀
- 單片機匯編語言常見錯誤知識點分析 6449次閱讀
- 高級語言和匯編語言_機器語言的區別 3w次閱讀
- C語言與匯編語言相互結合的嵌套匯編語言 3419次閱讀
- 跑馬燈實驗用匯編語言和C51語言做出的不同效果 3714次閱讀
- 單片機C語言程序設計:TIMER0與TIMER1控制條形LED 3846次閱讀
- c語言的應用領域有哪些 3.2w次閱讀
- 關于計算機組成原理與單片機原理 3725次閱讀
- 單片機編程之匯編語言基礎-常用指令和程序模式 1.5w次閱讀
下載排行
本周
- 1電子電路原理第七版PDF電子教材免費下載
- 0.00 MB | 1490次下載 | 免費
- 2單片機典型實例介紹
- 18.19 MB | 93次下載 | 1 積分
- 3S7-200PLC編程實例詳細資料
- 1.17 MB | 27次下載 | 1 積分
- 4筆記本電腦主板的元件識別和講解說明
- 4.28 MB | 18次下載 | 4 積分
- 5開關電源原理及各功能電路詳解
- 0.38 MB | 10次下載 | 免費
- 6基于AT89C2051/4051單片機編程器的實驗
- 0.11 MB | 4次下載 | 免費
- 7基于單片機和 SG3525的程控開關電源設計
- 0.23 MB | 3次下載 | 免費
- 8基于單片機的紅外風扇遙控
- 0.23 MB | 3次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費
- 2PADS 9.0 2009最新版 -下載
- 0.00 MB | 66304次下載 | 免費
- 3protel99下載protel99軟件下載(中文版)
- 0.00 MB | 51209次下載 | 免費
- 4LabView 8.0 專業版下載 (3CD完整版)
- 0.00 MB | 51043次下載 | 免費
- 5555集成電路應用800例(新編版)
- 0.00 MB | 33562次下載 | 免費
- 6接口電路圖大全
- 未知 | 30320次下載 | 免費
- 7Multisim 10下載Multisim 10 中文版
- 0.00 MB | 28588次下載 | 免費
- 8開關電源設計實例指南
- 未知 | 21539次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935053次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537791次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191183次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183277次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138039次下載 | 免費
評論
查看更多