匯編中寄存器及其用處


寄存器圖組

1. 通用寄存器

數據寄存器 用處
AX(accumulator) 作為 累加器 用,它是算數運算的主要寄存器。另外,所有的I/O指令都使用這一寄存器與外部設備傳送信息
BX(base) 計算機存儲器地址時,經常作為寄存器
CX(count) 在位移、循環和串處理指令中常用來做保存計數值
DX(data) 一般在做雙字長運算時把DX和AX組合在一起存放一個雙字長數,DX用來存放高位;對某些I/O操作,DX可用來存放I/O的端口地址

指針寄存器 用處
SP(stack pointer)、ESP 堆棧指針寄存器,其中存放當前堆棧段棧頂的偏移量,他們總是與SS堆棧段寄存器配合存取堆棧中的數據。實模式下使用SP,在80386以上的保護模式下使用ESP
BP(base pointer)、EPB 基址指針寄存器。它可以與堆棧段寄存器SS聯用來確定堆棧段中的嗎某一存儲單元的地址。並可以作堆棧區中的一個基地址以便訪問堆棧中的信息。

變址寄存器 作用
SI(source index) 源變址寄存器 DI(destination index) 目的變址寄存器 一般與數據段寄存器DS聯用,用來確定數據段中某一存儲單元的地址。這兩個變址寄存器有自動增量和自動減量的功能。

SP、ESP堆棧指針不能隨意修改


2. 控制寄存器


指令指針寄存器

IP、EIP叫做指令指針寄存器,它總是與CS段寄存器配合指出下一條要執行指令的地址,其中存放偏移量部分。計算機用指令指針寄存器來控制指令序列的執行流程。


標志寄存器

運算結果特征標志 用處
CF(Carry Flag) 進位標志,記錄運算結果的最高位向前產生的進位或借位。可用於檢測無符號數二進制加減法運算時是否發生溢出(溢出時 CF=1)
PF(Parity Flag) 奇偶標志,記錄運算結果最低位中含1的個數是奇還是偶。可用於檢測數據傳送過程中是否發生錯誤。
AF(Auxiliary carry) 輔助進位標志,記錄運算結果低4位向前產生的進位或借位。只有在執行十進制運算指令時才關心此位。
ZF(Zero Flag) 零標志,記錄運算結果是否位0。結果為0則置1,否則清0
OF(Overflow Flag) 溢出標志,記錄運算結果是否超出了機器所能表示的范圍。可用於檢測帶符號數運算時是否發生溢出(溢出時OF=1)
SF(Sign Flag) 符號標志,記錄運算結果的符號。結果為負則置1,否則清0

控制標志(處理器) 用處
IF(Interrupt Flag) 中斷允許標志,IF的控制只對外部可屏蔽中斷請求(INTR)起作用。當IF=1時允許CPU響應INTR。
DF(Direction Flag) 方向標志。專服務於字符串操作指令,當DF位為1時,每次操作后使變址寄存器SI和DI減小,這樣就使串處理從高地址向低地址方向處理。當DF位為0時,則使SI和DI增大。
TF(Trap Flag) 陷阱標志,用於程序調試。當TF=1 時,CPU處於單步方式;當TF=0時,CPU處於連續方式。
IOPL(I/O Privilege Level) 特權標志,占D13和D12兩位。在保護模式下,用於控制對I/O地址空間的訪問。只對80286以上CPU有效。
ID(Identification) 標識標志,若ID=1,則表示Pentium支持CPUID指令。只對Pentium以上CPU有效。

DEBUG中測試位的表示符號


3.段寄存器


IBM PC機的存儲器采用分段管理方法組織,因此一個物理地址用段基址和偏移量 表示。
段寄存器存放段基址。在實模式下存放當前正在運行程序的段基地址,在保護模式下存放段選擇子。


寄存器圖組


段寄存器 用處
CS(code segment) 代碼段寄存器,指定當前代碼段,代碼段中存放當前正在運行的程序段。
SS(stack segment) 指定當前堆棧段。
DS(data segment) 數據段寄存器,指定當前運行程序所使用的數據段。
ES(extra segment) 附加數據段寄存器,指定當前運行程序所使用的附加數據段

DS是主要的數據段寄存器,在默認情況下使用DS所指向段的數據。若要引用其它段中的數據,需要顯式說明。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM