原創 組合語言的基本知識(一)

2022-05-16 23:49:52 字數 2251 閱讀 2226

1,彙編指令的組成:

彙編指令:有對應的機器碼

偽指令:沒有對應的機器碼,計算機不執行

其他符號:沒有對應的機器碼,+-*/

2,指令和資料:

在記憶體和磁碟行,指令和資料沒有任何區別,都是二進位制資訊

3,cpu對儲存器的讀寫

(1)儲存單元:以位元組為最小單位

(2)cpu對外部器件通訊,有三類資訊的互動:

儲存單元的位址(位址資訊),位址匯流排

器件的選擇,讀和寫的命令(控制資訊),控制匯流排

讀或寫的資料(資料資訊),資料匯流排

1個cpu上有n跟位址匯流排,表示這個cpu的位址匯流排的寬度為n,這樣的cpu最多可以尋找2的n次方個記憶體單元

5,記憶體位址空間

所有器件(主存,視訊記憶體...)的記憶體,被cpu看成乙個有若干記憶體單元組成的邏輯儲存器,不同器件對應不同的位址段或叫位址空間。

cpu對相應的位址空間上讀寫資料實際上是對相應器件的物理儲存器中讀寫資料

1,位元組和字的概念:

1個字=2個位元組,1個位元組=8個位bit,1位元組是乙個儲存單元

2,cpu的結構:運算器,控制器,暫存器

運算器:進行資料的運算

暫存器:資料的儲存

控制器:控制各種器件進行工作

內部匯流排:連線運算器,暫存器和控制器

4,幾個基本的暫存器

(1)通用暫存器:儲存一般性的資料:ax,bx,cx,dx..

cs是**段暫存器,ip是指令指標暫存器,舉例:

cs的內容為m,ip的內容為n,cpu位數為64;則cpu將從記憶體 m*64+n 單元開始,讀取一條指令並執行

5,**段

在程式設計時,將一組記憶體單元定義為乙個段。我們可以將長度為n的一組**,存在一組位址連續,起始位置為cpu位數的倍數的記憶體單元中。然後認為這段記憶體是用來儲存**的,從而定義了乙個**段;

1,記憶體中字的儲存

cpu用16位的暫存器儲存1個字,高8位存放高位位元組,低8位存放低位元組

1乙個字單元相當於2個記憶體單元

2,cpu讀寫乙個記憶體單元的彙編**,比如讀10000h(1000:0)單元的內容

mov bx,1000h #

mov ds,bx #ds 記憶體單元的段位址

mov al,[

0] # [...] 記憶體單元的偏移位址

3,mov,add,sub指令

mov 暫存器, 資料

mov 暫存器, 暫存器

mov 端暫存器, 暫存器

mov 暫存器, 記憶體單元

mov 記憶體單元, 暫存器

add 暫存器, 資料

add 暫存器, 暫存器

add 暫存器, 記憶體單元

add 記憶體單元, 暫存器

sub 暫存器, 資料

sub 暫存器, 暫存器

sub 暫存器, 記憶體單元

sub 記憶體單元, 暫存器

(1)入棧時,棧頂從高位址像低位址反向增長

(2)任意時刻,ss:sp指向棧頂元素

(3)push和pop指令

push 暫存器

push 段暫存器

push 記憶體單元

pop 暫存器

pop 段暫存器

pop 記憶體單元

舉例:

mov ax, 0123h

push ax

mov bx, 2266h

push bx

mov cx,1122h

push px

pop ax

pop bx

pop cx

#解析push ax

1,sp=sp-2,ss:sp將指向新的棧頂

2,將ax中的資料送入ss:sp指向的記憶體單元,ss:sp此時已經指向新的棧頂

1,編寫彙編源程式:

2,編譯彙編源程式

用組合語言編譯程式編譯源程式,產生目標檔案:x.obj

3,鏈結目標檔案

可執行檔案包含2個部分

(1)程式(源程式中彙編指令翻譯過來的機器碼)和資料(源程式中定義的資料)

(2)描述資訊(程式有多大,要占用多大記憶體)

4,偽指令

(1)segment和ends是一對成對使用的偽指令;2者定義乙個段,segment定義段的開始,ends定義段的結束

(2)end:程式結束標誌

(3)程式返回

mov ax, 4c00h

int 21h

彙編學習筆記(一) 基本知識

一 基礎知識 2 資料匯流排 8088cpu有8根,8086cpu有16根,8根即8位,乙個位元組,16根即16位,2個位元組,即乙個字的寬度。3 控制匯流排 決定了cpu對外部器件的控制能力 4 ram 隨機儲存器,斷電不儲存 主儲存器 記憶體擴充套件條 顯示卡的視訊記憶體 5 rom 唯讀儲存器...

CTF逆向工程學習入門 二 組合語言基本知識

1.暫存器和記憶體 除此之外,cpu中還存在乙個標誌暫存器,其中的每位表示對於標誌位的值,常用標誌位如下 2.cpu的定址方式 定址方式 示例操作物件 立即定址 1000h 1000h這個數字 直接定址 1000h 記憶體位址1000h的單元 暫存器定址 raxrax這個暫存器 暫存器間接定址 ra...

組合語言知識點一

彙編指令是機器指令的助記符,同機器指令一一對應 組合語言由以下3類組成 1彙編指令 機器碼助記符 2偽指令 由編譯器執行 3其他符號 由編譯器識別 每一種cpu都有自己的彙編指令集 計算機中專門連線cpu和其他晶元的導線,通稱匯流排 cpu通過位址匯流排來指定儲存單元 位址匯流排上能傳送多少個不同的...