段寄存器用來存放存儲器的
『壹』 段寄存器里到底儲存的是什麼東西高手來
由於在8086cpu中的數據線是20位的,但是寄存其實16位的,數據線可以訪問2的20次方位元組的數據也就是1M的數據,但是寄存器才16位所以只能夠用兩個寄存其來存放地址,兩個寄存器都是16位的,一個稱為段寄存器 一個稱為偏移寄存器,講其中的段寄存器乘上16來加上段寄存器的內容
打個比方內存等於一條街有地址從0號到100號,如果你家是56號,那麼段地址就是50號+偏移地址6號,就是你的家了,但是在處理器中要段寄存器是16位的,但是實際上段地址是20位的,只有將段地址除16或得16位的數據存入段寄存器,用的時候再乘上16,在加上偏移地址
『貳』 8086cpu中段寄存器是用來存放存儲器的段基址還是存儲器的邏輯地址
你問的是8086架構的CPU吧,看的很眼熟,很多年都沒接觸了。8086中有4個16位的段寄存器:CS、DS、SS、ES,分別用於存放可執行代碼的代碼段、數據段、堆棧段和其他段的基地址。
其中,段寄存器CS指向存放程序的內存段,IP是用來存放下條待執行的指令在該段的偏移量,把它們合在一起可在該內存段內取到下次要執行的指令。
段寄存器SS指向用於堆棧的內存段,SP是用來指向該堆棧的棧頂,把它們合在一起可訪問棧頂單元。
段寄存器DS指向數據段,ES指向附加段,在存取操作數時,二者之一和一個偏移量合並就可得到存儲單元的物理地址。通常,預設的數據段寄存器是DS。
『叄』 為什麼要設置段寄存器8086/8088有幾個段寄存器
操作系統在載入程序時,給每個段寄存器都有規定的預設值。因此,如果你的程序承認這個預設值是不需要在程序中對段寄存器賦值的(當然賦了也沒關系)。
一共有4個段地址寄存器,
CS(code segment register)16位代碼段寄存器
DS(data segment register)16位數據段寄存器
SS(stack segment register)16位堆棧段寄存器
ES(extra segment register )16為附加段寄存器
『肆』 段寄存器 作用
1,
代碼段寄存器cs:存放當前正在運行的程序代碼所在段的段基值,表示當前使用的指令代碼可以從該段寄存器指定的存儲器段中取得,相應的偏移值則由ip提供。
2,
數據段寄存器ds:指出當前程序使用的數據所存放段的最低地址,即存放數據段的段基值。
3,
堆棧段寄存器ss:指出當前堆棧的底部地址,即存放堆棧段的段基值。
4,
附加段寄存器es:指出當前程序使用附加數據段的段基址,該段是串操作指令中目的串所在的段。
段寄存器里放的是地址還是數據還是其他的東西?
是放的段基值,通俗說就是段的起始點(具體地址是段基值+偏移),這個數值是地址不是數據。
『伍』 什麼是段寄存器
寄存器(Register)是CPU內部的元件,所以在寄存器之間的數據傳送非常快。用途:1.可將寄存器內的數據執行算術及邏輯運算。2.存於寄存器內的地址可用來指向內存的某個位置,即定址。3.可以用來讀寫數據到電腦的周邊設備。8086 有8個8位數據寄存器,這些8位寄存器可分別組成16位寄存器:AH&AL=AX:累加寄存器,常用於運算;BH&BL=BX:基址寄存器,常用於地址索引;CH&CL=CX:計數寄存器,常用於計數;DH&DL=DX:數據寄存器,常用於數據傳遞。為了運用所有的內存空間,8086設定了四個段寄存器,專門用來保存段地址:CS(Code Segment):代碼段寄存器;DS(Data Segment):數據段寄存器;SS(Stack Segment):堆棧段寄存器;ES(Extra Segment):附加段寄存器。當一個程序要執行時,就要決定程序代碼、數據和堆棧各要用到內存的哪些位置,通過設定段寄存器 CS,DS,SS 來指向這些起始位置。通常是將DS固定,而根據需要修改CS。所以,程序可以在可定址空間小於64K的情況下被寫成任意大小。 所以,程序和其數據組合起來的大小,限制在DS 所指的64K內,這就是COM文件不得大於64K的原因。8086以內存做為戰場,用寄存器做為軍事基地,以加速工作。除了前面所提的寄存器外,還有一些特殊功能的寄存器:IP(Intruction Pointer):指令指針寄存器,與CS配合使用,可跟蹤程序的執行過程;SP(Stack Pointer):堆棧指針,與SS配合使用,可指向目前的堆棧位置。BP(Base Pointer):基址指針寄存器,可用作SS的一個相對基址位置;SI(Source Index):源變址寄存器可用來存放相對於DS段之源變址指針;DI(Destination Index):目的變址寄存器,可用來存放相對於 ES 段之目的變址指針。還有一個標志寄存器FR(Flag Register),有九個有意義的標志(
OF: 溢出標志位OF用於反映有符號數加減運算所得結果是否溢出。如果運算結果超過當前運算位數所能表示的范圍,則稱為溢出,OF的值被置為1,否則,OF的值被清為0.
DF: 方向標志DF位用來決定在串操作指令執行時有關指針寄存器發生調整的方向。
『陸』 什麼是段寄存器標志寄存器
段寄存器
段寄存器是因為對內存的分段管理而設置的。16位CPU有四個段寄存器,所以,其程序可同時訪問四個不同含義的段。
段寄存器CS指向存放程序的內存段,IP是用來存放下條待執行的指令在該段的偏移量,把它們合在一起可在該內存段內取到下次要執行的指令。
段寄存器SS指向用於堆棧的內存段,SP是用來指向該堆棧的棧頂,把它們合在一起可訪問棧頂單元。另外,當偏移量用到了指針寄存器BP,則其預設的段寄存器也是SS,並且用BP可訪問整個堆棧,不僅僅是只訪問棧頂。
段寄存器DS指向數據段,ES指向附加段,在存取操作數時,二者之一和一個偏移量合並就可得到存儲單元的物理地址。該偏移量可以是具體數值、符號地址和指針寄存器的值等之一,具體情況將由指令的定址方式來決定。
通常,預設的數據段寄存器是DS,只有一個例外,即:在進行串操作時,其目的地址的段寄存器規定為ES。當然,在一般指令中,我們還可以用強置前綴的方法來改變操作數的段寄存器。
「可選用的段寄存器」即是可以用強置說明這些段寄存器的值來作為其操作數地址的段地址。
段寄存器:
在8086系統中,訪問存儲器的地址碼由段地址和段內偏移地址兩部分組成。段寄存器用來存放各分段的邏輯基值,並指示當前正在使用的4個邏輯段,包括代碼段寄存器CS、堆棧段寄存器SS、數據段寄存器DS和附加段數據寄存器ES。
1,
代碼段寄存器CS:存放當前正在運行的程序代碼所在段的段基值,表示當前使用的指令代碼可以從該段寄存器指定的存儲器段中取得,相應的偏移值則由IP提供。
2,
數據段寄存器DS:指出當前程序使用的數據所存放段的最低地址,即存放數據段的段基值。
3,
堆棧段寄存器SS:指出當前堆棧的底部地址,即存放堆棧段的段基值。
4,
附加段寄存器ES:指出當前程序使用附加數據段的段基址,該段是串操作指令中目的串所在的段。
標志寄存器
標志寄存器,又稱程序狀態寄存器(它的內容是Program
Status
Word,PSW).這是一個存放條件碼標志,控制標志和系統標志的寄存器.
ZF
是否為0
PF
判斷奇偶校驗
如果1的個數為偶數,PF=1.
如果1的個數為奇數,PF為0.
SF
判斷
正負
負數
1
非負
0
CF
進位
借位標志
針對無符號數
借位標志
OF
運算結果是否溢出
針對有符號數
DF
方向標志位
DF=0
每次操作後
si,di遞增
DF=1
每次操作後
si,di遞減
IF
可屏蔽中斷標志位
IF
=1
處理可屏蔽中斷
IF-0
不處理可屏蔽中斷
TF
Trap
Flag
追蹤標志TF;
當TF被設置位1時,CPU進入單步模式,所謂單步模式就是CPU在每執行一步指令後都產生一個單步中斷。
8086/8088中沒有專門用來置位和清零TF的命令,需要用其他辦法
標志
值為1標記
值為0標記
OF
OV
NV
SF
NG
PL
ZF
ZR
NZ
PF
PE
PO
CF
CY
NC
DF
DN
UP
IF
EI
DI
AF
AC
NA
『柒』 「段寄存器」有什麼作用
「段寄存器」的作用有:
1、在保護模式下,段寄存器其實就是段選擇器,為獲取段描述符表的某個項目,起到索引的作用等等;
2、在實模式下,段寄存器起到的是定址的作用,指示著某一數據段的基址。
「段寄存器」的分類有:
1、段寄存器CS指向存放程序的內存段,IP是用來存放下條待執行的指令在該段的偏移量,把它們合在一起可在該內存段內取到下次要執行的指令。
2、段寄存器SS指向用於堆棧的內存段,SP是用來指向該堆棧的棧頂,把它們合在一起可訪問棧頂單元。另外,當偏移量用到了指針寄存器BP,則其預設的段寄存器也是SS,並且用BP可訪問整個堆棧,不僅僅是只訪問棧頂。
3、段寄存器DS指向數據段,ES指向附加段,在存取操作數時,二者之一和一個偏移量合並就可得到存儲單元的物理地址。該偏移量可以是具體數值、符號地址和指針寄存器的值等之一,具體情況將由指令的定址方式來決定。