堆棧指針寄存器在堆棧操作中使用,PUSH和POP指令是從SP寄存器得到現(xiàn)行堆棧段的段內偏移量,所以稱SP寄存器為堆棧指針,SP始終指向棧頂。堆棧是計算機中廣泛應用的技術,基于堆棧具有的數據進出FIFO特性,常應用于保存中斷斷點、保存子程序調用返回點、保存CPU現(xiàn)場數據等,也用于程序間傳遞參數。
ARM處理器中通常將寄存器R13作為堆棧指針(SP)。ARM處理器針對不同的模式,共有 6 個堆棧指針(SP),其中用戶模式和系統(tǒng)模式共用一個SP,每種異常模式都有各自專用的R13寄存器(SP)。它們通常指向各模式所對應的專用堆棧,也就是ARM處理器允許用戶程序有六個不同的堆棧空間。這些堆棧指針分別為R13、R13_svc、R13_abt、R13_und、R13_irq、R13_fiq。為了更準確地描述堆棧,根據“壓?!辈僮鲿r堆棧指針的增減方向,將堆棧區(qū)分為‘遞增堆?!?SP 向大數值方向變化)和‘遞減堆棧’(SP 向小數值方向變化);又根據SP 指針指向的存儲單元是否含有堆棧數據,又將堆棧區(qū)分為‘滿堆棧’(SP 指向單元含有堆棧有效數據)和‘空堆?!?SP 指向單元不含有堆棧有效數據)。這樣兩兩組合共有四種堆棧方式——滿遞增、空遞增、滿遞減和空遞減。ARM處理器的堆棧操作具有非常大的靈活性,對這四種類型的堆棧都支持。ARM處理器中的R13被用作SP。當不使用堆棧時,R13 也可以用做通用數據寄存器。
內存資料寄存器是指用于存放欲寫入存儲體中的數據,或暫存從存儲體中讀出的數據,準備讓處理器處理的寄存器,即用來暫時存放處理器計算過程中所用到的操作數、結果和信息。數據寄存器用來暫時存放由主存儲器讀出的一條指令或一個數據字;反之,當向主存存入一條指令或一個數據字時,也將它們暫時存放在數據寄存器中。在單累加器結構的運算器中,數據寄存器還可兼作操作數寄存器 [1] 。數據寄存器訪問速度最快,完全能與 CPU 協(xié)調工作。
內存資料寄存器(Memory Data Register,MDR),又稱數據寄存器、緩沖寄存器,是計算機控制單元中的寄存器,寄存了將要寫入到計算機主存儲器(例如:RAM)的數據,或由計算機主存儲器讀取后的數據。它就像緩沖器,持有從內存復制的數據,以準備給處理器使用。內存資料寄存器是微程序與計算機數據儲存(computer data storage)之間的一個微小界面的其中一半,而另一半則是內存地址寄存器(memory address register)。
AX、BX、CX、DX可以稱為數據寄存器,這4個16位寄存器又可分別分成高8位(AH、BH、CH、DH)和低8位(AL、BL、CL、DL)。因此它們既可作為4個16位數據寄存器使用,也可作為8個8位數據寄存器使用,在編程時可存放源操作數、目的操作數或運算結果。數據寄存器是存放操作數、運算結果和運算的中間結果,以減少訪問存儲器的次數,或者存放從存儲器讀取的數據以及寫入存儲器的數據的寄存器。AX(accumulator)累加器。作為累加器使用。是算術運算的主要寄存器。在乘、除等指令中指定用來存放操作數。以及所有的 I/O指令都使用這一寄存器與外部設備傳送信息。BX(base)基址??梢宰鳛橥ㄓ眉拇嫫魇褂?。此外在計算機存儲地址時,它經常用作基址寄存器。CX(count)計數??梢宰鳛橥ㄓ眉拇嫫魇褂?。常用來保存計數值,如在循環(huán)、位移和串處理指令中作隱含計數器。DX(data)數據??梢宰鳛橥ㄓ眉拇嫫魇褂?。一般在作雙字長運算時把DX和AX組合在一起存放一個雙字長數,DX用來存放高位數。對于某些I/O操作,DX可用來存放I/O的端口地址。