pin 相關知識 彙編語言

       如果不看pintool的源代碼,其實使用pin和彙編沒有什麼關係,在看pintool源代碼的過程中,發現有一些彙編指令的存在,如mov,出於興趣,從圖書館借了一本介紹彙編的書《彙編語言》清華大學出版社 王爽著

         沒有學會彙編語言編程,瞭解了一些彙編的基本知識:彙編語言就是用一些容易理解的語言代替機器語言,彙編語言由彙編指令、僞指令和其他符號組成,彙編指令時機器碼的助記符,有其對應的機器碼;僞指令沒有對應的機器碼,由編譯器執行,計算機並不執行;其他符號如+、-、*、/由編譯器識別,沒有對應的機器碼。

       意外的是書中關於存儲器、CPU、內存等也介紹了一些,8086CPU相關部件提供了兩個16位的地址:段地址和偏移地址。段地址和偏移地址通過內部總線送入一個稱爲地址加法器的部件,地址加法器將兩個16位的地址合成爲一個20位的物理地址,再通過內部總線將20位物理地址送入輸入輸出控制電路,輸入輸出控制電路將20位物理地址送上地址總線,地址總線最後將20位物理地址送到存儲器。

     說一下“段地址x16 + 偏移地址 = 物理地址”,感覺好像是將兩個16cm長的紙條粘在一起變成一個20cm的紙條。實際上內存還是那塊內存,一切都是CPU搞的鬼,爲什麼不直接把每段地址直接給出來呢?還來一個基礎地址、段地址。

    說段地址,其實內存並沒有分段,段的劃分來自CPU,由於8086CPU用“基地址(段地址x16)+偏移地址=物理地址”的方式給出內存單元的物理地址,是的我們可以用分段的方式來管理內存。(哦,原來是這樣啊!)舉個例子吧:地址10000H~100FFH的內存單元組成以段,該斷的起始地址爲10000H,段地址爲1000H(1000H x 16 = 10000H),段的大小爲100H。也可以把這段地址分成兩個段:10000H~1007FH,10080H~100FFH,這樣他們的起始地址分別爲:10000H和10080H,段地址爲:1000H和1008H ,段的大小都爲80H。

      對於8086CPU,段的起始地址:段地址x16必然是16的倍數,偏移地址爲16位,16位地址的尋址能力爲64KB,所以一個段的長度最大爲64KB,再大就尋不到了。

       彙編語言給人的感覺就是直接,直接對內存,寄存器,以及其他器件進行操作,還有它的dos界面。

       中國隊的緣故吧,看了一天也沒把這本書看完,淺淺地瞭解了彙編是什麼。帶着書上介紹的一些知識,明天再去看看論文,說不定會有啓發。

        這兩天看的東西好少啊,一不留神就把新浪體育打開了,瀏覽下新的比賽消息,中國隊加油。。。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章