組合語言 暫存器

2021-09-27 08:24:38 字數 3082 閱讀 5489

乙個cpu由暫存器,運算器,控制器組成,暫存器負責儲存資料。通用暫存器:ax,bx,cx,dx。8086cpu的暫存器都是16位的,能存放兩個位元組。乙個暫存器又能分為兩個部分,乙個高位位元組如ah,還有乙個地位位元組如al。這兩個部分可以單獨看成乙個八位暫存器來用。當暫存器當整體來看時,它可以進行16位的二進位制運算,當分成高位低位來看時,只能算八位的。就比如當mov al,n。當n化成二進位制大於8位時,存在al中的資料只有n的後八位,第一位要捨去。而當看成整體計算時,就會進一位,不會捨去。

一些基本的知識我們得知道,後面這些真的枯澀。

1.儲存單元:儲存器被劃分為若干個儲存單元,乙個儲存單元有乙個位元組也就是八個bit,也就是八位。可以儲存八個二進位制位。

2.位址匯流排:位址匯流排的定址能力由位址匯流排的寬度決定,寬度用多少根線來表示,比如有十根位址匯流排,那麼寬度就是十。假設寬度是n,那麼這台電腦能尋找2的n次方個儲存單元。

記憶體位址空間:乙個cpu的位址匯流排關係到構成這cpu的記憶體位址空間,位址匯流排寬度為n,那麼這個cpu只能尋到2的n次方的記憶體位址空間,這可尋到的2的n次方的記憶體單元就是這cpu的記憶體位址空間。 因為乙個記憶體單元為一位元組,所以位址匯流排的定址能力通常也可以用kb,mb,gb來表示。如寬度為十,2的10次方。定址能力就是1kb,都是表示1024個記憶體單元。

邏輯儲存器(記憶體位址空間):乙個假想的儲存器,cpu將系統中各類儲存器看成乙個邏輯儲存器,就是現在對cpu來說,只有乙個儲存器,就是這個邏輯儲存器,而各類儲存器相當於這個邏輯儲存器裡面的不同段的位址空間。

3.資料匯流排

資料匯流排的寬度決定了cpu與外界傳輸資料的速度。寬度為8,那麼一次就能傳輸8位二進位制數,為16就能傳輸16位二進位制數,一次一根線傳輸一位二進位制數。

4.控制匯流排

控制匯流排是由許多根有不同控制功能的線組成,每根線的控制能力都不一樣,所以cpu控制匯流排的寬度決定了cpu對外部器件的控制能力。

1.通用暫存器

8086cpu的所有暫存器是16位的,可以存放兩個位元組。ax,bx.cx.dx這4個暫存器通常用來存放一般性的資料,被稱為通用暫存器。

ax分為ah和al;

bx分為bh和bl

ax的低8位構成了al暫存器,ax的高8位構成了ah暫存器。

2 字在暫存器中的儲存

位元組:byte,乙個位元組由8個bit組成,可以存在8位暫存器中。

字:word,乙個字由兩個位元組組成,這兩個位元組分別稱為這個字的高位位元組和低位位元組。

3 8086cpu的實體地址

實體地址=段位址16+偏移位址

乙個資料的二進位制形式左移n位,相當於該資料乘以2的n次方;

段位址16表示以二進位制形式存放的段位址左移4位,十六進製制形式存放的段位址左移1位。

4 段cpu可以用不同的段位址和偏移位址形成同乙個實體地址。

偏移位址16位,變化範圍為0~ffffh,僅用偏移位址來定址最多可尋64kb個記憶體單元。

比如給定段位址1000h,用偏移位址定址,cpu的定址範圍為:10000h~1ffffh。

5 cs和ip

cs為**段暫存器,ip為指令指標暫存器。

cpu的工作流程:

1.從cs:ip指向的記憶體單元讀取指令,讀取的指令進入指令快取區

2. ip=ip+所讀指令的長度,進而指向下一條指令

3. 執行指令,然後再跳轉到第一步,繼續這個過程

當然這只是個概述,實際的比這複雜的多。

攻防世界的re1

開啟發現是個這

然後你隨便輸入

所以找到正確的flag之後就會顯示正確。

拉進ida中

這道題有個簡便的方法就是直接去搜尋中文字串(不知為何在我這兒並不能看到中文)

然後縮小範圍再去尋找

我們看到有個flag get ,這個應該就是獲取到正確的flag了

點進去上下翻一翻

其實這就是乙個習慣,看到這麼長的字元,就上去r一下看看。

這就發現了flag

還有就是這是個反過來的flag,所以還要認真地去轉換一下。

————

當然這只是一種比較巧妙的方法。

常規操作,拖進ida之後f5,轉換為c語言**形式

分析if函式,可以知道flag的得出與v3的值有關,而v3是v5和v9作比較所得的。當v3為0時會輸出unk_413e90,進去就是flag get,而v3為0時即是v5與v9相等之時,v9就是我們所要輸入的flag,這說明v5中就是儲存著flag

我們先看一下v5

啥都沒有,一開始不知怎麼回事,我們就在同一行都點點,發現只有行尾xmmword_413e34能進去,而且還不是空的。可以猜測前面這個函式應該就是把後面的值賦給v5

而xmmword_413e34進去就能看到兩段字串

組合語言 暫存器

乙個典型的cpu由運算器 控制器 暫存器等器件組成,這些器件靠內部匯流排相連。通用暫存器 ax bx cx dx 段位址暫存器 cs ds es ss 專用暫存器 bp sp si di 指令指標暫存器 ip 標誌暫存器 psw ah al ax accumulator 累加暫存器 bh bl bx...

組合語言 暫存器

ax,bx,cx,dx 這4個暫存器通常用來存放一般性的資料,被稱為通用暫存器。8086cpu這5個暫存器都可以分為兩個可以獨立使用的8位暫存器來用 ax的低8位 0 7 構成al暫存器,高8位 8 15 構成了ah暫存器。ah和al暫存器是可以獨立使用的8位暫存器。考慮相容性8086cpu可以一次...

組合語言 通用暫存器

通用暫存器的主要用途 暫存器的分類 暫存器主 要 用 途 通 用暫存器 資料 暫存器 ax乘 除運算,字的輸入輸出,中間結果的快取 al位元組的乘 除運算,位元組的輸入輸出,十進位制算術運算 ah位元組的乘 除運算,存放中斷的功能號 bx儲存器指標 cx串操作 迴圈控制的計數器 cl移位操作的計數器...