計算機是通過執(zhí)行指令來處理各種數(shù)據(jù)的钱烟。
為了指出數(shù)據(jù)的來源晰筛、操作結(jié)果的去向及所執(zhí)行的操作,一條指令一般包含下列信息拴袭。
(1)操作碼:(operation code)
具體說明操作的性質(zhì)及功能读第。每一條指令都有一個相應(yīng)的操作碼,計算機通過識別操作碼來完成不同操作拥刻。
(2)操作數(shù)的地址:
CPU通過地址就可以取得所需的操作數(shù)怜瞒。
(3)操作結(jié)果的存儲地址:
把對操作數(shù)的處理所產(chǎn)生的結(jié)果保存到該地址中。
(4)下一條指令的地址:
當(dāng)程序順序執(zhí)行時般哼,下一條指令的地址由程序計數(shù)器(PC)給出吴汪,僅當(dāng)改變程序的運行順序(如轉(zhuǎn)移)時,下一條指令的地址才由指令給出蒸眠。
從上述分析可知漾橙,一條指令包括兩種信息即操作碼和地址碼。
操作碼表示該指令所要完成的操作楞卡,其長度取決于指令系統(tǒng)中的指令條數(shù)霜运;
地址碼描述該指令的操作對象脾歇,或直接給出操作數(shù),或指出操作數(shù)的存儲器地址或寄存器地址觉渴。
根據(jù)地址碼部分所給出地址的個數(shù)介劫,指令格式分為如下幾種:
1.零地址指令 [OPCODE]
OPCODE———操作碼
指令中只有操作碼,沒有操作數(shù)或操作數(shù)地址案淋,這種指令有兩種可能:
(1)無須任何操作數(shù)座韵。如空操作指令、停機指令等踢京。
(2)操作數(shù)地址默認誉碴。(如寄存器)
2.一地址指令 [OPCODE | A]
A———操作數(shù)的存儲器地址或寄存器地址
指令中只給出一個地址,該地址既是操作數(shù)的地址瓣距,又是操作結(jié)果的存儲地址黔帕。如加1、減1和移位等單操作數(shù)指令均采用這種格式蹈丸。
在某些字長較短的微型機中(Intel 8080等)成黄,大多數(shù)算數(shù)邏輯運算指令也采用這種格式,第一個源操作數(shù)由地址碼A給出逻杖,第二個源操作數(shù)在一個默認的寄存器中奋岁,運算結(jié)果仍送回到這個寄存器中,替換基原寄存器內(nèi)容荸百,通常把這個寄存器稱為累加器闻伶。
3.二地址指令 [OPCODE | A1 | A2]
A1———第一個源操作數(shù)的存儲器地址或寄存器地址
A2———第二個源操作數(shù)和存放操作結(jié)果的存儲器地址或寄存器地址
這是最常見的指令格式,兩個地址指出兩個源操作數(shù)地址够话,其中一個還是存放結(jié)果的目的地址蓝翰。對兩個源操作數(shù)進行操作碼所規(guī)定的操作后,將結(jié)果存入目的地址女嘲。
4.三地址指令[OPCODE | A1 | A2 | A3]
對A1畜份、A2地址指出的兩個源操作數(shù)進行操作,結(jié)果存入A3中欣尼。
5.多地址指令
在某些性能較強的計算機中漂坏,往往設(shè)置處理成批數(shù)據(jù)的指令,如字符串處理指令媒至。為了描述一批數(shù)據(jù),指令中需要多個地址來指出源數(shù)據(jù)存放的首地址谷徙、長度以及運算結(jié)果存放的地址等拒啰。