AH&AL=AX(accumulator):累加寄存器 |
AH&AL=AX(accumulator):累加寄存器
BH&BL=BX(base):基址寄存器
CH&CL=CX(count):計數寄存器
DH&DL=DX(data):數據寄存器
SP(Stack Pointer):堆棧指針寄存器
BP(Base Pointer):基址指針寄存器
SI(Source Index):源變址寄存器
DI(Destination Index):目的變址寄存器
IP(Instruction Pointer):指令指針寄存器
CS(Code Segment)代碼段寄存器
DS(Data Segment):數據段寄存器
SS(Stack Segment):堆棧段寄存器
ES(Extra Segment):附加段寄存器
OF overflow flag 溢出標志 操作數超出機器能表示的范圍表示溢出,溢出時為1.
SF sign Flag 符號標志 記錄運算結果的符號,結果負時為1.
ZF zero flag 零標志 運算結果等於0時為1,否則為0.
CF carry flag 進位標志 最高有效位產生進位時為1,否則為0.
AF auxiliary carry flag 輔助進位標志 運算時,第3位向第4位產生進位時為1,否則為0.
PF parity flag 奇偶標志 運算結果操作數位為1的個數為偶數個時為1,否則為0.
DF direcion flag 方向標志 用於串處理.DF=1時,每次操作后使SI和DI減小.DF=0時則增大.
IF interrupt flag 中斷標志 IF=1時,允許CPU響應可屏蔽中斷,否則關閉中斷.
TF trap flag 陷阱標志 用於調試單步操作.
1. 通用數據傳送指令.
MOV 傳送字或字節.
MOVSX 先符號擴展,再傳送.
MOVZX 先零擴展,再傳送.
PUSH 把字壓入堆棧.
POP 把字彈出堆棧.
PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次壓入堆棧.
POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次彈出堆棧.
PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次壓入堆棧.
POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次彈出堆棧.
BSWAP 交換32位寄存器里字節的順序
XCHG 交換字或字節.( 至少有一個操作數為寄存器,段寄存器不可作
為操作數)
CMPXCHG 比較並交換操作數.( 第二個操作數必須為累加器AL/AX/EAX )
XADD 先交換再累加.( 結果在第一個操作數里 )
XLAT 字節查表轉換.
—— BX 指向一張 256 字節的表的起點, AL 為表的索引值
(0-255,即
0-FFH); 返回 AL 為查表結果. ( [BX+AL]->AL )
2. 輸入輸出端口傳送指令.
IN I/O端口輸入. ( 語法: IN 累加器, {端口號│DX} )
OUT I/O端口輸出. ( 語法: OUT {端口號│DX},累加器 )
輸入輸出端口由立即方式指定時, 其范圍是 0-255; 由寄存器 DX 指
定時,
其范圍是 0-65535.
3. 目的地址傳送指令.
LEA 裝入有效地址.
例: LEA DX,string ;把偏移地址存到DX.
LDS 傳送目標指針,把指針內容裝入DS.
例: LDS SI,string ;把段地址:偏移地址存到DS:SI.
LES 傳送目標指針,把指針內容裝入ES.
例: LES DI,string ;把段地址:偏移地址存到ES:DI.
LFS 傳送目標指針,把指針內容裝入FS.
例: LFS DI,string ;把段地址:偏移地址存到FS:DI.
LGS 傳送目標指針,把指針內容裝入GS.
例: LGS DI,string ;把段地址:偏移地址存到GS:DI.
LSS 傳送目標指針,把指針內容裝入SS.
例: LSS DI,string ;把段地址:偏移地址存到SS:DI.
4. 標志傳送指令.
LAHF 標志寄存器傳送,把標志裝入AH.
SAHF 標志寄存器傳送,把AH內容裝入標志寄存器.
PUSHF 標志入棧.
POPF 標志出棧.
PUSHD 32位標志入棧.
POPD 32位標志出棧.