Z80-CPU研製的18位微處理器。Z80的主要設計入員參加過的設計工作,因此,Z80是在充分汲取8080微處理器經驗的基礎上設計的。Z80係列在8080的基礎上前進了一大步。它在指令係統功能、中斷處理能力等方麵都比8080係統強得多,而且速度更快,硬件方麵也有許多改進。本章主要介紹的結構、引腳功能和時序。

2.1-1 Z80-CPU 的主要特點

1.Z80采用溝道矽柵耗盡型負載工藝,因而集成度比8080高。例如,8080的集成度是88個,Z80則提高到133個門是單片的,而8080由三片構成;Z80速度比8080快,功耗比8080低。

2.單一電源。Z80隻需要一個電源,而8080需用三種電源。

3.單相時鍾。8080使用雙相時鍾,要用一片8224作時鍾振蕩器,而Z80隻用單相時鍾,使用簡單的電路就能實現,而且8080時鍾頻率提高到6%。

4.增加動態存儲器刷新電路,在內部有一個7位的刷新計數器,可以提供刷新地址,利用取指令周期譯碼期間,自動進行動態存儲器的刷新,因而不必另設刷新電路。而8080無此功能,若使用動態存儲器,要另加刷新電路。

5.增加一條中斷輸入線。Z80比8080多一條中斷輸入線,除非一般中斷求輸入線外,和8080相似還有一條非屏蔽中斷請求輸入線,這是不能用軟件來禁止的中斷請求。它用來處理一些緊急的中斷請求,如掉電事故旳處理等。

6.控製總線的設置。Z80有13條獨立的控製總線,直接產生控製信號,和外界連接很簡單。而8080的係統控製狀態,是由數據總線上的狀態信息碼,經係統控製器82別芯片譯碼產生的。Z80的讀、寫控製信號和8080也不一樣。8080的存儲器讀、存儲器、讀、寫是分開的,而Z80使用一個公用的讀、寫信號,然後用存儲器請求或1/0請求信號來區分是存儲器讀、寫還是1/0讀、寫。

7.入操作時,地址和數據總線浮空的時間關係也有變化。在請求保持時,是在機器周期的第三個和第四個狀態使總線浮空的,這時,進入保持狀態,Z80采用一個直觀的方案:如有總線請求信號(頁胃)輸入,它使地址和數據總線在下一個機器周期的開始就浮空,並且發出總線響應信號。

8.內部寄存器增加,內部寄存器數量比8080增加很多,通用寄存器、累加器、標誌寄存器都分為主輔兩組,兩組之間可以進行數據交換,還增加了兩個16位的變址寄存器。

9.指令係統功能增強,Z80有150條基本指令,所以說Z80的指令係統是向下與8080兼容的。用8080指令係統編寫程序,除了和指令執行時間有關的延時程序外,都可以在Z80上運行,Z80增加了數據塊傳送指令,數據塊檢索指令,按位處理指令和雙字處理指令等。另外尋址方式也比8080多,

10.Z80-CPU的結構

它由如下幾部分組成:寄存器,算術邏輯運算單元,指令寄存器,指令譯碼器和控製,數據總線控製和地址總線控製。以內部各部分通過內部總線互相溝通起來,從用戶角度看,內有由208位讀/寫存儲器,構成化個8位的寄存器。

中保存著將要從存儲器取出指令的存儲器地址。程序是存儲在存儲器中的,因此,去存儲器取指令,就應給出將要被取出指令的地址。這個地址就由的內容所提供。所以,內容的變化就決定了程序執行的順序。例如,希望執行存於20009單元的指令,必須首先將200011置入中。指令周期是這樣進行的:把的內容放在地址總線上,然後把指令字從指向的存儲器中取出來,這時自動加,又指向下一次指令的地址。

例如三字節指令,則每取一字節指令,就增1,取出三字節指令後也就是說,取完一條指令後,仍然指向下條指令地址。若順序執行程序,內容以增量的規律變化著。若要改變執行程序的次序,應該將轉向的地址置入中。例如:當程序出現分支時,由跳轉指令將新分支程序的入口地址置入。當調用子程序時,在調用指令的控製下,將原內容斷點保護進入堆棧後,再將子程序入口地址置入中,在程序執行返回指令時,該指令將使保存在堆棧中的斷點退回中,堆棧是存儲器中的某一個區域,用來暫存數據或地址,對這個區域存取數據的單元地址提供,但對這個區域存取數據隻能按“後進先出”的方式處理。由程序先設定的值,的值一旦設定,堆棧區也就確定了。

堆棧的操作有兩種:一種叫推入或壓入,另一種叫彈出或拉出。在堆棧操作中,棧中的各種元素實際上並未移動,唯一的變化是發生在指示器中。是一個專用16位寄存器,用來儲存棧頂地址。當一個數據字進棧時先將減,棧頂下降,數據字存放在減量後所指向的新找頂,這種操作叫作推入或壓入。如果要從棧中取出數據,則最先取出已經處於棧頂的數據字,然後將5增1,指向棧頂,並依此類推,這種操作叫“彈出”,即每次進行推入或彈出操作以後,都修改堆棧指示器,使它自動指向棧頂。

由於是16位的寄存器,所以堆棧可以設置於64存儲器的任意位置,棧的深度幾乎不受限製,即內存有多大,棧就有多深,這稱為無限棧。堆棧經常用於調用子程序指令中或中斷時保存斷點,、它可以使在執行調用子程序中,再轉入調用另一個子程序的重迭次數(稱為嵌套)不受限製。由於操作規定“後進先出”原則,特別適宜遞歸調用(自己調用自)。棧還可以簡化多級中斷。

在內設有兩個完全相同的變址寄存器IX和IV。用來存儲變址方式的16位基地址,它能與包含在指令中一個操作數(稱為偏移量)相加,形成一個新的有效地址,指向所要訪問的單元。在處理數組和表格時,使用變址寄存器特別方便。

(1)中斷矢量寄存器:

以中斷方式響應中斷過程中,怎樣找到中斷服務程序的入口地址呢?在編製中斷服務程序時,要將中斷服務程序的入口地址存入存儲器;把存儲入口地址的存儲器稱為中斷地址表。因為中斷服務程序入口地址是16位的,而存儲器每一個單元隻有8位,所以每個中斷服務程序入口地址要占地址表的兩個單元。中斷方式允許128個中斷服務程序入口。如果係統用了128個中斷服務程序,則地址表長度為256個單元。如果按貞劃分存儲器地址,則256個單元稱為一頁。中斷地址表可以存於仟意存儲區,但必須將地址表的高8位地址(稱為頁麵地址)裝入寄存器。當以方式響應中斷時,諸求中斷的外部沒備送來地址表地址的低8位,寄存器提供高8位,兩者結合起來,形成16位訪問中斷地址表的地址。將這個地址單元內容取出來放入的低8位,它的下—個單元內容放入的高8位,就指向中斷眼務稈序入門,使進入中斷服務程序了。

(2)動態刷新寄存器

動態依靠柵電容起記憶作用來保存信息,但是電容總是要放電的,如果要保證信息不丟失,賢求時問內重新對電容充一次電,即對儲申元進行一次讀出,稱為刷新操作。

為了提供刷新存儲單元的地址,在Z80-0;內設置了一個刷新地址寄俘器口。這個寄存器是8位的,其低7位是自動加1計數器,每取-條指令尺內容增1,因此寄存器共能提供128個地址編碼,即從0到口7。但動態似的單元數遠遠超過128個單元,丙此每一個地址號不是刷新一個單元,而是刷新一批笮元,每次究竟刷新多少個單元呢?這想規動態似的容量而定。每次刷新甲-元數可以由下麵公式汁算:

(3)每次刷新單元數

在取周期的狀態,對動態進行刷新,這時從存儲器取出的指令正在譯碼,因此不會因對動態0入關刷新而影響運算速度。

累加器中有兩個獨立的8位累加器。在累加器是使用最頻繁的寄存器。當進行各種運算時,累加器入用來存放8位算術運算或邏輯運算的結果,在各種雙操作數的算術和邏輯運算中,總有一個操作數來自累加器中。

(4)標誌寄存器

中有兩個標誌寄存器和它是8位寄存器,其中六位用來表示運算結果的某拽性質,如運算結果是否為零,是正還是負,有沒有進位,等等。

進行不同運算時,為反映運算結果的性質,把相應的標誌位置位或複位。

Z80使用標誌寄存器的六個標誌位,分成兩類,一類是供指令測試的,共有閃位,巾相應指令來檢查每一標誌位,作為條件跳轉、調用.返回的條件.這類標誌位稱為條件測試標誌位;另一類是稱為非測試標誌位,有二位,它們都用於二十進製調控運算。