非變址命令

非變址命令

在計算機科學中,機器指令是用機器字來表示的,表示一條指令的機器字,就稱為指令字,通常簡稱指令。指令格式,則是指令字用二進制代碼表示的結構形式,通常由操作碼和地址碼組成。操作碼欄位表示指令的操作特性與功能,地址碼欄位通常指定參與操作的運算元的地址。 非變址命令,也可以稱之為非變址指令,是指CPU執行命令時,指令的定址方式。

簡介

在計算機科學中,機器指令是用機器字來表示的,表示一條指令的機器字,就稱為指令字,通常簡稱指令。指令格式,則是指令字用二進制代碼表示的結構形式,通常由操作碼和地址碼組成。操作碼欄位表示指令的操作特性與功能,地址碼欄位通常指定參與操作的運算元的地址。非變址命令,也可以稱之為非變址指令,是指CPU執行命令時,指令的定址方式。

定址即尋找運算元或轉移指令中的轉移地址。所有具有運算元的指令.都要涉及如何尋找運算元存放地址的問題,只有確定了運算元的存放地址,才能根據指令的操作碼,對指令的運算元進行相應的加工。定址方式就是規定如何對指令中運算元欄位進行解釋以找到運算元的方法或是在轉移類指令中確定轉移的目標地址的方法。前者稱為尋找運算元的定址方式,後者稱為尋找指令地址的定址方式。 在計算機中,定址方式一般分為指令定址和數據定址。

指令系統

指令系統是計算機硬體的語言系統,也叫機器語言,指機器所具有的全部指令的集合,它是軟體和硬體的主要界面,反映了計算機所擁有的基本功能。從系統結構的角度看,它是系統程式設計師看到的計算機的主要屬性。因此指令系統表征了計算機的基本功能決定了機器所要求的能力,也決定了指令的格式和機器的結構。設計指令系統就是要選擇計算機系統中的一些基本操作( 包括作業系統和高級語言中的) 應由硬體實現還是由軟體實現,選擇某些複雜操作是由一條專用的指令實現, 還是由一串基本指令實現, 然後具體確定指令系統的指令格式、類型、操作以及對運算元的訪問方式。

指令系統的性能決定了計算機的基本功能,它的設計直接關係到計算機的硬體結構和用戶的需要。一個完善的指令系統應滿足如下四方面的要求:

完備性

指用彙編語言編寫各種程式時,指令系統直接提供的指令足夠使用,而不必用軟體來實現。完備性要求指令系統豐富、功能齊全、使用方便。

有效性

是指利用該指令系統所編寫的程式能夠高效率地運行。高效率主要表現在程式占據存儲空間小、執行速度快。

規整性

包括指令系統的對稱性、勻齊性、指令格式和數據格式的一致性。對稱性是指:在指令系統中所有的暫存器和存儲器單元都可同等對待,所有的指令都可使用各種定址方式;勻齊性是指:一種操作性質的指令可以支持各種數據類型;指令格式和數據格式的一致性是指:指令長度和數據長度有一定的關係,以方便處理和存取。

兼容性

至少要能做到“向上兼容”,即低檔機上運行的軟體可以在高檔機上運行。

非變址命令的種類

在這裡把非變址命令分為指令命令和數據命令

指令命令

這裡的指令命令就是指令定址方式,有兩種。

順序定址方式

由於指令地址在記憶體中按順序安排,當執行一段程式時,通常是一條指令接一條指令地順序進行。也就是說,從存儲器取出第1條指令,然後執行這條指令;接著從存儲器取出第2條指令,再執行第二條指令;接著再取出第3條指令。這種程式順序執行的過程,稱為指令的順序定址方式。為此,必須使用程式計數器(又稱 指令計數器)PC來計數指令的順序號,該順序號就是指令在記憶體中的地址。

跳躍定址方式

當程式轉移執行的順序時,指令的定址就採取跳躍定址方式。所謂跳躍,是指下條指令的地址碼不是由程式計數器給出,而是由本條指令給出。注意,程式跳躍後,按新的指令地址開始順序執行。因此,程式計數器的內容也必須相應改變,以便及時跟蹤新的指令地址。採用指令跳躍定址方式,可以實現程式轉移或構成循環程式,從而能縮短程式長度,或將某些程式作為公共程式引用。指令系統中的各種條件轉移或無條件轉移指令,就是為了實現指令的跳躍定址而設定的。

數據命令

隱含定址

這種類型的指令,不是明顯地給出運算元的地址。而是在指令中隱含著運算元的地址。例如,單地址的指令格式,就不明顯地在地址欄位中指出第2運算元的地址,而是規定累加暫存器AC作為第2運算元地址。指令格式明顯指出的僅是第1運算元的地址D。因此,累加暫存器AC對單地址指令格式來說是隱含地址。如:DAA ;

立即定址

指令的地址欄位指出的不是運算元的地址,而是運算元本身,這種定址方式稱為立即定址。立即定址方式的特點是指令執行時間很短,因為它不需要訪問記憶體取數,從而節省了訪問記憶體的時間。如:MOV AX,5678H 注意:立即數只能作為源運算元,不能作為目的運算元。

直接定址

直接定址是一種基本的定址方法,其特點是:在指令格式的地址的欄位中直接指出運算元在記憶體的地址。由於運算元的地址直接給出而不需要經過某種變換,所以稱這種定址方式為直接定址方式。在指令中直接給出參與運算的運算元及運算結果所存放的主存地址,即在指令中直接給出有效地址。

間接定址

間接定址是相對直接定址而言的,在間接定址的情況下,指令地址欄位中的形式地址不是運算元的真正地址,而是運算元地址的指示器,或者說此形式地址單元的內容才是運算元的有效地址。

暫存器定址方式和暫存器間接定址方式

當運算元不放在記憶體中,而是放在CPU的通用暫存器中時,可採用暫存器定址方式。顯然,此時指令中給出的運算元地址不是記憶體的地址單元號,而是通用暫存器的編號(可以是8位也可以是16位(AX,BX,CX,DX))。指令結構中的RR型指令,就是採用暫存器定址方式的例子。如:MOV DS,AX

暫存器間接定址方式與暫存器定址方式的區別在於:指令格式中的暫存器內容不是運算元,而是運算元的地址,該地址指明的運算元在記憶體中。

相對定址方式

相對定址是把程式計數器PC的內容加上指令格式中的形式地址D而形成運算元的有效地址。程式計數器的內容就是當前指令的地址。“相對”定址,就是相對於當前的指令地址而言。採用相對定址方式的好處是程式設計師無須用指令的絕對地址編程,因而所編程式可以放在記憶體的任何地方。[2] 指令格式:MOV AX,[BX+1200H] 運算元物理地址PA=(DS/SS)*10H+EA EA=(BX/BP/SI/DI)+(6/8)位偏移量Disp 對於BX,SI,DI暫存器來說段暫存器默認為DS,對於SP來說,段暫存器默認為SS。

相關詞條

熱門詞條

聯絡我們