段寄存器
段寄存器
段寄存器是因為對內存的分段管理而設置的。16位CPU有四個段寄存器,所以,其程序可同時訪問四個不同含義的段。
目錄
段寄存器CS指向存放程序的內存段,IP是用來存放下條待執行的指令在該段的偏移量,把它們合在一起可在該內存段內取到下次要執行的指令。
段寄存器SS指向用於堆棧的內存段,SP是用來指向該堆棧的棧頂,把它們合在一起可訪問棧頂單元。另外,當偏移量用到了指針寄存器BP,則其預設的段寄存器也是SS,並且用BP可訪問整個堆棧,不僅僅是只訪問棧頂。
段寄存器DS指向數據段,ES指向附加段,在存取操作數時,二者之一和一個偏移量合併就可得到存儲單元的物理地址。該偏移量可以是具體數值、符號地址和指針寄存器的值等之一,具體情況將由指令的定址方式來決定。
通常,預設的數據段寄存器是DS,只有一個例外,即:在進行串操作時,其目的地址的段寄存器規定為ES。當然,在一般指令中,我們還可以用強置前綴的方法來改變操作數的段寄存器。
一般情況下,段寄存器及其指針寄存器的引用關係如下表所示。“可選用的段寄存器”即是可以用強置說明這些段寄存器的值來作為其操作數地址的段地址。