Win32 彙編中的段選擇器

2025-03-28 10:00:28 字數 3001 閱讀 8898

1樓:匿名使用者

本人自己的經驗,不是隨便亂拷的,o(∩_o~當然,我也不是什麼專家,有不對的地方,頃悶請指出,呵呵 win32中,由於暫存器是32位,而位址匯流排也基本為32位,所以我們可以用暫存器直接定址了,而不用段暫存器了,明手但是intel公司,在386以後,開始開發保護模式,並利用了這些貌似被遺棄的段寄激乎嫌存器,變成了,保護模式下的段選擇子這個段選擇子,選擇的是什麼呢?其實是選擇gdt或者ldt中的表項,就拿gdt來說,裡面以8個位元組為乙個表項,假如我們這時候,開始是用選擇子 mov eax,[ds:0] (假設ds內容為8,二進位位1000 ),解釋一下1 0 0 0bit0~1 這個位元組為 以什麼許可權訪問gdt表bit2 這個位元組 為10 ,表示訪問 gdt,為1,表示訪問ldtb3~15 剩下的位元組都是 表示選擇 gdt表中的,第幾項這時候,你可能會問gdt是什麼以前,在16位中,我們都是直接由段暫存器,給出基址,但是在保護模式中,這個基址,由gdt中的表項給出,也就是通過段選擇子,選擇gdt中的乙個表項後,間接給出基址,這時候,你可能會問,為什麼這麼多此一舉,其實是為了詮釋保護這2個子,gdt中的每個表,都是有許可權的,如果你許可權不夠,訪問就會被拒絕好了,大概就這樣了,不懂的我們可以交流。

2樓:匿名使用者

你說的段選擇子吧?我開鏈或始也鬱悶了半天:怎麼和匯棚褲伍編裡的概念不一純襲樣啊?其實不難,就是系統內部使用的標誌。

請問段暫存器在win32彙編中有什麼用

3樓:網友

win32裡段暫存器裡存放的是段選擇子, 作用也是帶定址的, 與真實模式相比,段選擇子代替了原來的段基址。從本質上來講,段選擇子最終還是要轉化成段基址。

段選擇子長16位,其格式如上圖所示。從圖中可見,段選擇子的高13位是描述符的索引值。所謂描述符索引是指描述符在描述符表中的序號。

由於描述符總是8個位元組的,所以將描述符索引值邏輯左移3位即可得到對應描述符在描述符表中的偏移位址,再加上描述符表起始位址就可以確定描述符的位置,這算是乙個小技巧。段段選擇子的第2位是引用描述符表指示位,標記為ti(table indicator),ti=0表示該選擇子指示的是全域性描述符表gdt中的描述符,ti=1表示該選擇子指示的是區域性描述符表ldt中的描述符。第0和第1位稱為rpl(request privilege level請求特權級),用於特權級控制,在上乙個問題中有詳細描述。

通過段選擇子,我們可以從gdt或ldt中找到需要的段描述符,段描述符中儲存著目標段的基址(起始位址),界限(段的範圍)以及其他一些控制資訊,由此,我們完成了段選擇子到段基址的轉化。

4樓:網友

變成了選擇子暫存器。

8086彙編和win32 彙編的語法有區別的嗎?

5樓:匿名使用者

在語法上沒有區別,8086彙編的指令在win32彙編中都可以用,兩者的區別在編譯上,所寫的源**,必須符合編譯器的規則,否則無法編譯,8086彙編的關鍵字在win32中都能用,我個人覺得win32彙編就是比8086彙編多幾個關鍵字和多幾條指令,沒有減少什麼。

6樓:匿名使用者

8086彙編是基礎!先要學好!

win32彙編其實只算是32位彙編的乙個分支!如果你只學了8086彙編就直接去看win32彙編的話還是不適應的!

你先要學習32位彙編,和16位彙編差不多 只是定址這些變大了,而且可以使用16位彙編的東西 比如ax eax都是通用的!學習32位彙編建議看intel組合語言程式設計(第四版),當你看完這本書再看老羅的win32彙編就是很輕鬆了,win32彙編的介面那些可以簡單的看看,主要是後面的系統篇才是真正的東西!

如果學習32位彙編不會配置各種開發環境和編譯器就qq聯絡我,我幫你。

7樓:網友

都在的,沒有太大差別。

8樓:匿名使用者

dos下使用的中斷是不能用了。

9樓:匿名使用者

向下相容 這都是必須的!

請問8086彙編中如何將子程式段與**段分開?

10樓:

n年前有乙個名字叫做sr的程式(即source)可以將exe或com檔案反編譯生成源程式!

感覺羅雲彬的win32彙編跟windows核心程式設計內容好像.還有必要看嗎

11樓:桐從露

路過~~如果你沒有學過彙編的話,建議從16位開始,在到32位的彙編,然後在看羅雲彬的。

學彙編之前最好學過c語言或c++ 精通指標和陣列那塊更好,理解彙編的基本定址方式。

注意win32彙編和32位彙編不同。win32都是講api的呼叫等等。32位彙編的書大概都是說指令集。32位彙編指令比16多得多了。

16位的彙編 看王爽的。

32位看 intel組合語言設計 第五版。 我正在看這本,看到了第11章了。 呵呵、講指令很詳細的。

intel組合語言設計 第五版 看完基本可以簡單的反彙編了。自己分析自己寫的小程式。我現在就是這樣做的。

補充:我沒有聽過搞反彙編 逆向分析 這些不學win32彙編的。= =!

請問win32彙編如何實現正規表示式匹配

12樓:網友

問題補充是問這個?

把它們編譯成彙編,然後修改一下。

他的意思可能是 編譯的時候生成彙編**( 反正vc 是有這功能的 其他編譯器就不知道了 具體查下資料) 然後把生成的**改改 完成您的要求。

aogo的那個就很好 建議學習~

13樓:網友

看不怎麼明白,要用匯編實現正規表示式匹配?

如果是這個意思,估計有點難,彙編本來就不應該拿來做這個事情。

不過我有乙個建議就是你找一些c或者c++的正則匹配程式源**,把它們編譯成彙編,然後修改一下。

個人想法,供參考。

14樓:網友

我珍藏的**,希望能給你最大的幫助,非常不錯的樣例。

Win32 彙編,如何向指定檔案寫入內容

要寫入的檔案內容放到中,向中寫入的內容,data segment file db file db inbuf db dup handle dw handle dw data ends code segment assume cs code,ds datastart mov ax,data mov d...

CMD不是有效的win32應用程式

方法一 可能是你的環境變境改變了,把環境變數改回來即可右鍵 我的電腦 屬性 高階 環境變數 再找到並雙擊開啟 系統環境變數 下的path變數,如果沒有則手動新建一個。看他的變數值裡有沒有包含c windows system32 假定你係統裝c盤 或 systemroot system32等等 按你所...

不是有效的win32應用程式怎麼解決

如果是在雙擊執行任意一個exe格式的可執行檔案都會出現這樣的錯誤資訊時,這可能由於系統感染了病毒所造成的,此時可通過以下措施來解決問題。查殺病毒並刪除登錄檔資訊。windows registry editor version hkey classes hkey classes rootexe aut...