彙編CPU執行流程

2021-10-09 23:28:39 字數 1654 閱讀 5848

首先我們先要知道mov和jmp指令的格式:

(1)mov:是資料傳送指令,也是最基本的程式設計指令,

用於將乙個資料從源位址傳送到目標位址(暫存器間的資料傳送本質上也是一樣的)

傳遞資料到暫存器:mov ax,

0000

//把0000傳送到ax暫存器去

暫存器間傳遞資料:mov ax,bx //把bx中的值傳送到ax去

(注:mov在資料與暫存器間傳遞為3個位元組,暫存器間傳遞是兩個位元組)

(2)jmp:是組合語言中的無條件跳轉指令。無條件跳轉指令可轉到

記憶體中任何程式段

例:jmp 1000h,

0003h //此時cs=1000h,ip=0003h

只修改ip的值: jmp 某一暫存器

例:jmp ax //此時cs 不變 ,ip = ax中的值

注:cs為**段暫存器

ip為指令指標暫存器

執行的順序結果為:

(1)mov ax,6622h

(2)jmp 1000:3

(3)mov ax,0000

(4)mov bx,ax

(5)jmp bx

(6)mov ax,0123h

最後又跳回第三步迴圈下來

一開始我們知道此時cs=2000h,ip=0000h
mov ax,6622h

執行後因為資料與暫存器間傳遞是三個位元組的,因此ip加3執行下一條指令

jmp 1000:3

此時cs = 1000h; ip = 0003h

mov ax,0000

這裡是把0000送到ax暫存器中,cs的值沒有變,ip值執行完指令後加3

此時cs=1000h,ip = 0006h

(4)此時cs=1000h,ip = 0006h通過位址加法器相加得到實體地址10006h,此時執行

mov bx,ax

把ax中的值送到bx中,cs值沒變,ip值執行完指令後加2(暫存器間傳遞加2)

此時cs=1000h,ip=0008h

(5)此時把cs=1000h,ip=0008h通過位址加法器相加得到實體地址10008h,此時執行

jmp bx

這裡只修改ip的值(不懂得看上面得jmp指令格式),因此cs值不變,ip值變為bx中的值

cs=1000,ip=0000h

(6)此時cs=1000,ip=0000h通過位址加法器相加得到實體地址10000h,此時執行

mov ax,0123h

把0123h的值送入ax暫存器中,執行完該指令後cs不變,ip加3

cs = 1000h,ip= 0003h

最後又從第三步開始執行,執行到最後第六步以後又會跳到10000h實體地址執行裡面的指令(即最後會一直迴圈在實體地址為10000h-10009h間)

彙編基礎 8086CPU的執行方式

cpu內 注 不同的cpu暫存器的個數 結構是不同的。a 暫存器 暫存器是程式設計師主要能進行讀寫操作的部件。通過暫存器來實現對cpu的控制。8086所有的暫存器都是16位 16個二進位制位 的,可以存放2個位元組。8086總計14個暫存器 ax bx cx dx si di sp bp ip cs...

CPU的製作流程

作為計算機的核心元件,cpu central processor unit,處理器 在使用者的心中一直是十分神秘的 在多數使用者的心目中,它都只是乙個名詞縮寫,他們甚至連它的全寫都拚不出來 在一些硬體高手的眼裡,cpu也至多是一塊十餘平方厘公尺,有很多腳的塊塊兒,而cpu的核心部分甚至只有不到一平方...

源程式到CPU執行要經歷的整個流程

以下內容是個人揣測,不正確的機率很高,這裡只是寫下來備忘。這裡以x86平台為例進行說明。編譯 編譯器在編譯 的時候,是以乙個 cpp和乙個 h為基本編譯單元的,每個編譯單元我們這裡稱為乙個編譯模組,每個編譯模組都可能定義全域性變數和靜態變數以及區域性變數,同時可能引用其他 編譯模組中的全域性變數。每...