日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【汇编语言】镜像迁移能力之一通百通——由代码段和CS:IP的原理,掌握一类寄存器的使用

發布時間:2023/11/30 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【汇编语言】镜像迁移能力之一通百通——由代码段和CS:IP的原理,掌握一类寄存器的使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

0 前言

你應該知道8086CPU的物理地址形成方式及其原理,才能完成本文的學習。

1 內存的分段

對于內存,人們人為地將其劃分為一段一段的,比如代碼段和數據段等,特別注意,這是人為劃分的結果,方面人類使用,在物理器件上并不是真正的斷開了。

內存的分段就好比這樣,人們

  • 把代碼放在代碼段
  • 把數據放在數據段

再強調一次,這是幫助人們和匯編語言編譯器區分,并不是真的把內存切開,這是虛擬的分段。

1.1 代碼段

現在,我們以代碼段為例,來學習一些知識。

先給出以下這樣一部分匯編指令

mov ax,0000h // 占3個字節 add ax,0123h // 占3個字節 mov bx,ax // 占2個字節 jmp bx // 占2個字節

我們將這樣幾行代碼,稱為一個代碼段,假設我們使用內存地址123B0H ~ 123B9H來存儲它。

對于地址123B0H,我們稱之為該代碼段的起始地址,它必須是16的整倍數,它對應的段地址是123BH

該代碼段的長度為10個字節

我們先介紹這些,請繼續往下看。

2 CS:IP

CS:Code Segment(代碼段寄存器)
IP:Instruction Pointer(指令指針寄存器)

這兩個寄存器都是16位的,由CS提供段地址,這個段地址對應上一小節的123BH,由IP提供偏移地址

CS:IP的意義是,將兩個16位的地址,在CPU內部合成為20位地址,并輸出到外部,CS:IP合成的地址是對于內存地址的,比如上一小節的123B0H,其公式是合成地址 = CS*16 + IP,比如123B0H = 123BH*16 + 0H

CS:IP所指向的內存地址,代表這個內存地址所存儲的二進制信息是指令,然后會進入CPU執行該指令。

3 代碼段與CS:IP的聯系


這里給出了CS:IP、內存地址、代碼段和匯編指令之間的對應關系,建立起了CPU和內存之間的聯系。

本文并不講解CS:IP的原理,是幫助你加深理解內存和CPU操作之間的關系。

這里重點強調:

  • 先確定CS:CS寄存器存儲的是段地址,左移一位后(乘16),對應的是代碼段的基礎地址
  • 再確定IP:IP寄存器存儲的是段內偏移地址,偏移地址是在基礎地址的基礎上,進行偏移,以便于執行代碼段中的各個指令。

需要注意的是,代碼段,以及其他段,最大的段長等于IP的最大值,這里是16位,也就是一個段最大2^16B = 64KB

4 段地址和偏移地址的本質

段地址有兩重含義:

  • 段寄存器(例如CS)儲存的地址:例如123BH
  • 某一內存段(例如代碼段)的起始地址:例如123B0H
  • 偏移地址,更本質的說法是段內偏移地址,這里的段內含義的某一代碼段內,例如上述實例

    • 偏移0H,執行mov ax,0000h
    • 偏移3H,執行add ax,0123h
    • 偏移6H,執行mov bx,ax
    • 偏移8H,執行jmp bx

    5 鏡像遷移——掌握其他類型

    對于類似的操作及其對應關系,模式都一樣!,就好比

    • 國家之下有省
    • 省之下有市
    • 市之下有縣

    整體來看,同一層級的管理模式整體來說,是一樣的。

    這里我需要說明,寄存器的能力是一樣的,就是暫存數據,只不過其分工不同,做的事情不同,但是因為其能力一樣,因此只需要掌握一種模式,就可以進行快速復制。

    我們需要做的是,學好一個內容,然后使用鏡像遷移的能力,復制成功的模式,這樣你就快速學會各種匯編操作。

    你會發現,以下內容,你能夠快速掌握!


    這里我直接引用了一個表格,請讀者按照CS:IP的模式,自行完成學習,這里有一個可替換段地址,請自行查閱資料,這也是必備的能力。

    總結

    以上是生活随笔為你收集整理的【汇编语言】镜像迁移能力之一通百通——由代码段和CS:IP的原理,掌握一类寄存器的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。