導航:首頁 > 源碼編譯 > 編譯語言中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寄存器的用法相關的資料

熱點內容
全自動化編程 瀏覽:725
程序員高薪限制 瀏覽:692
壓縮圖片壓縮 瀏覽:75
美國發明解壓魔方 瀏覽:301
電腦怎麼備案網上伺服器 瀏覽:514
旅行商問題Python寫法 瀏覽:952
解壓破壞王裡面的所有兌換碼 瀏覽:860
文件夾如何拖拽還保留原來的 瀏覽:22
職業生涯pdf 瀏覽:954
ubuntu安裝軟體php 瀏覽:159
黑馬程序員退學流程 瀏覽:362
網頁伺服器崩潰怎麼回事 瀏覽:651
cnc編程前景怎麼樣 瀏覽:320
lniux命令詳解 瀏覽:494
linuxmysql查詢日誌 瀏覽:369
老捷達夥伴壓縮比 瀏覽:94
改後綴加密 瀏覽:433
郵局選址問題演算法 瀏覽:16
河北伺服器內存雲主機 瀏覽:13
在電腦上怎麼找到加密狗圖標 瀏覽:438