導航:首頁 > 源碼編譯 > 編譯語言中es寄存器的用法

編譯語言中es寄存器的用法

發布時間:2022-08-16 14:38:31

1. 匯編語言中 cs,ds,ss,es分別是那些英文單詞的縮寫

cs: 代碼段寄存器,是 code segment 的縮寫;


ds:數據段寄存器,是 data segment 的縮寫;


ss:堆棧段寄存器, 是 stack segment 的縮寫;


es:附加段寄存器,是 extra segment 的縮寫;

2. 匯編中的「附加段寄存器ES」有什麼用的

附加段寄存器ES:存放當前執行程序中一個輔助數據段的段地址。

段寄存器
CS IP
SS SP或BP
DS BX、DI、SI
ES DI(用於串指令)

3. 匯編中的 附加段寄存器ES 有什麼用的

附加段寄存器ES:存放當前執行程序中一個輔助數據段的段地址。
段寄存器
偏移地址寄存器
CS
IP
SS
SP或BP
DS
BX、DI、SI
ES
DI(用於串指令)
例子:
;
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
data_seg1
segment
;
定義數據段
.
.
data_seg1
ends
;
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
data_seg2
segment
;
定義附加段
.
.
data_seg2
ends
;
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
code_seg
segment
;
定義代碼段
assume
cs:code_seg,
ds:data_seg1,
es:data_seg2
start:
;
程序執行的起始地址
;
set
DS
register
to
current
data
segment
mov
ax,
data_seg1
;
數據段地址
mov
ds,
ax
;
存入DS寄存器
;
set
ES
register
to
current
extra
segment
mov
ax,
data_seg2
;
附加段地址
mov
es,
ax
;
存入ES寄存器
.
.
code_seg
ends
;
代碼段結束
;
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
end
start
希望能對你有所幫助。

4. 匯編中的ES是什麼意思

ES寄存器 附加段寄存器:定義附加段的起始地址。

程序中其他段得起始地址。 用於某些串操作中和DI寄存器相關聯 (ES)+(DI)=串地址的結尾

例子:
; * * * * * * * * * * * * * * * * * * * * * * *
data_seg1 segment ; 定義數據段
. .
data_seg1 ends
; * * * * * * * * * * * * * * * * * * * * * * *
data_seg2 segment ; 定義附加段
. .
data_seg2 ends
; * * * * * * * * * * * * * * * * * * * * * * *
code_seg segment ; 定義代碼段
assume cs:code_seg, ds:data_seg1, es:data_seg2
start: ; 程序執行的起始地址
; set DS register to current data segment
mov ax, data_seg1 ; 數據段地址
mov ds, ax ; 存入DS寄存器
; set ES register to current extra segment
mov ax, data_seg2 ; 附加段地址
mov es, ax ; 存入ES寄存器
. .
code_seg ends ; 代碼段結束
; * * * * * * * * * * * * * * * * * * * * * * * * * *
end start

5. 32位匯編 段寄存器 cs ds ss es的用處是什麼

實模式的段是為了讀取更多的內存,保護模式的段是主要為了保護數據,防止惡意篡改,這幾個寄存器都指向GDT或者LDT,32位用這幾個寄存器是為了保護程序、系統還有數據,特權級什麼的需要基於他們,他們把各個程序嚴格的分開,不允許低權級訪問高權級,有效保護了系統內核,一定程度上防止了數據溢出(有不對的地方希望大佬指出)

6. 在匯編語言的串操作中, MOV DI, DS MOV ES, DI 這兩條指令到底有什麼作用

(1)這兩條指令沒有上下文的情況下,無法為您判斷它們的實際意義。看不出與串操作有什麼直接關系。在串操作中,一般是將兩個串分別放在DS:SI和ES:DI定址的內存單元中,以方便於串的比較、移動等操作。
(2)mov
si,ds指令的意義是:將數據段寄存器的段地址值賦給SI,執行完成後:SI=DS
(3)MOV
DI,ES
的意義是將擴展數據段寄存器的段地址值賦給DI.即執行完成後,DI=ES
一般情況下,程序中很少用到這樣的指令,如果要保護DS和ES的值,通常用PUSH
DS和PUSH
ES指令。如果要計算物理地址,也是將段地址放到AX寄存器中。當然,即8086CPU給出了這樣的指令,在某些情況下,可能會用到你提到的這兩條指令。
希望能幫到你。

閱讀全文

與編譯語言中es寄存器的用法相關的資料

熱點內容
ubuntu壓縮zip 瀏覽:2
vigenere演算法的方法是什麼 瀏覽:666
pdf保護破解 瀏覽:341
仿微信聊天系統源碼廣州公司 瀏覽:106
怎麼查看我的世界伺服器日誌 瀏覽:430
怎麼從程序員走到成功 瀏覽:824
把軟體放入文件夾中如何移出 瀏覽:209
紅包源碼企業即時聊天軟體 瀏覽:581
xp安裝python 瀏覽:10
西門子參數編程讀取半徑值 瀏覽:403
洗首飾解壓小視頻 瀏覽:966
01背包問題的演算法解決 瀏覽:373
sd卡放哪個文件夾 瀏覽:301
解釋器模式java 瀏覽:104
android垂直自動滾動條 瀏覽:153
計算器java小程序 瀏覽:27
java的簡稱 瀏覽:68
雲伺服器公網ip地址 瀏覽:581
php對資料庫操作 瀏覽:237
java爬圖片 瀏覽:866