org是做什麼的

來源:互聯網
上載者:User

於淵前輩有這麼一句注釋:
------------------------------------------------------
 

org07c00h     ;告訴編譯器載入到7c00h處
------------------------------------------------------

 到了第三章,編譯com檔案時,要把07c00h改成0100h。如果按照之前的邏輯,就應該這樣注釋:
-----------------------------------------------------
org0100h         ;告訴編譯器,這個com檔案將來肯定被載入到0100h處
-----------------------------------------------------
  明顯不對頭:com檔案的載入地址是隨機的,不可能總是載入到0100h處!

  那就是我之前對org的理解有問題了。
 我想這樣表述才對:org力求告訴nasm編譯器:“你正在編譯的這段程式,它的第一條指令相對CS的位移數值”。編譯器據此,能夠計算出程式中每個標籤的準確位移數值(相對於CS的)。

  再回頭看於淵前輩的注釋: org07c00h     ;告訴編譯器載入到7c00h處
 這句注釋是沒有問題的。為什嗎?因為bios初始化完成之後,會將cs:ip設定為0000h:7c00h。看到沒,cs是0,所以位移地址就是物理地址了。

 最後說一句:許多人都說masm的offset多餘,醜陋,說nasm的標籤直接取址,很簡潔。我想各有千秋吧:至少對新手來說,offset操作符無疑是個醒目的提示:你正在對某個標籤取位移值!------org也只是協助定位標籤的位移值,因為我們程式的第一條指令可能已經位移cs若干個byte了。
  以上說明都是在nasm下:masm下面可以有多個org,nasm只能有一個。

  感謝JerKii的這篇文章,文章結的十分漂亮:http://topic.csdn.net/t/20051116/16/4397624.html
 這篇文章也有涉及:http://hi.baidu.com/lewutian/item/a34dd72ea3a853cdddf69a78

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.