即 ax,bx,cx,dx,sp,bp,si,di,ip,flag,cs,ds,ss,es 共 14 個。
而這 14 個暫存器按照一定方式又分為了通用暫存器,控制暫存器和段暫存器。
通用暫存器:
ax,bx,cx,dx 稱作為資料暫存器:
ax (accumulator):累加暫存器,也稱之為累加器;
cx (count):計數器暫存器;
dx (data):資料暫存器;
sp 和 bp 又稱作為指標暫存器:
sp (stack pointer):堆疊指標暫存器;
bp (base pointer):基指標暫存器;
si 和 di 又稱作為變址暫存器:
si (source index):源變址暫存器;
di (destination index):目的變址暫存器;
控制暫存器:
ip (instruction pointer):指令指標暫存器;
flag:標誌暫存器;
段暫存器:
cs (code segment):**段暫存器;
ds (data segment):資料段暫存器;
ss (stack segment):堆疊段暫存器;
es (extra segment):附加段暫存器;
第零講說到「暫存器在cpu中。內存在記憶體條中。前者的速度比後者快100倍左右。後面的程式要求每條指定要麼沒有記憶體資料,要麼在有乙個暫存器的參與下有乙個記憶體資料。(也就是說,不存在只訪問記憶體的指令)。」
暫存器是在cpu中的儲存器,而記憶體是在記憶體條中的儲存器。cpu訪問暫存器,只需要通過微指令直接就可以訪問,而訪問記憶體則要先經過匯流排,再由匯流排到達記憶體控制器,讀到某單元的記憶體資料後放上匯流排,再傳到cpu中,cpu才能使用。
8086系列計算機的暫存器,共有14個,每個都是十六位的。
ax,bx,cx,dx,sp,bp,si,di,cs,ds,ss,es,ip,flags。
其中前四位,每個可以單位再分成兩個,ax=ah+al,bx=bh+bl,cx=ch+cl,dx=dh+dl。這些分開的每個都是8位的。
這個分開不要理解成平時語言中的分開,你可以理解為ax是由ah和al組合成的,你給al付值,就意味著同時給ax的低半部付值。你給ax付值,就意味著同時改變ah和al。這樣作的好處是你可以更靈活地控制這個暫存器。
3.5 指令說明
看了3.3的指令集和3.4的暫存器,是不是已經了,或者了?不要急,上面的東西雖然多,我也沒讓你一下學會,(其實有些永遠也不會似乎也不是什麼大不了的事)。為了應付看的懂我後面所說的,我把其中的指令挑幾個重點的,你必須要記住,其它的慢慢學吧。
1資料傳輸指令。
mov a,b
注意不是move,這個指令是把b中的資料複製給a,(b中仍儲存原狀)。這裡的a和b可以是暫存器,可以是記憶體。但可以同時是暫存器,不能同時是記憶體。比如
mov ax,100 ;這是對的,注意100在這裡叫立即數,但這個數在編譯系統編譯成exe的時候儲存在記憶體中。如果學過別的高階語言,你就可以理解為這就是賦值語句 let ax=100/ax:=100;/ax=100。
rep 當cx/ecx<>0時重複.
組合語言 mov指令,暫存器,定址
馮諾依曼計算機,將計算機分為5大部件 運算器,控制器,儲存器,輸入裝置,輸出裝置。運算器和控制器共同執行指令。指令和資料一樣,儲存為二進位制資料。運算器和控制器共同組成cpu,cpu執行機器指令,也就是二進位制數。機器指令難於閱讀,編寫。所以人們用英語單詞來表示機器語言,這種方式被稱為組合語言。用組...
彙編基礎之暫存器及彙編指令
最近在學習協程方面的知識,在協程的一種實現方式中有一種是用彙編實現的,所以這裡再把彙編知識複習一下。暫存器按照其用途可分為以下4類 資料暫存器包括 個16位的暫存器 ax,bx,cx,dx 或者8個8位的暫存器 ah,al,bh,bl,ch,cl,dh,dl 這些暫存器都是用來暫時存放運算元,運算結...
彙編指令狀態暫存器訪問指令(MRS,MSR)
arm中有兩條指令用於在狀態暫存器和通用暫存器之間傳送資料。針對32位的arm處理器,狀態暫存器就是乙個32位長的暫存器。每個位的含義如下圖 分成了4部分 1,條件標誌位 n negative z zero c carry v verflow 統稱為條件標誌位。arm指令可以根據cpsr中的這些條件...