1. 程式人生 > >16位組合語言暫存器及指令整理

16位組合語言暫存器及指令整理

第一次寫部落格,有點小緊張~

暫存器

通用暫存器

8位暫存器 16位暫存器 32位暫存器 暫存器名稱
AH,AL AX EAX 累加暫存器
BH,BL BX EBX 基地址暫存器
CH,CL CX ECX 計數器暫存器
DH,DL DX EDX 資料暫存器
SI ESI 源變址暫存器
DI EDI 源目標暫存器
DH,DL DX EDX 基地址暫存器
DH,DL DX EDX 棧頂暫存器

段暫存器

標號 名稱
CS 程式碼段
DS 資料段
SS 棧段
ES 附加資料段
GS,FS 附加資料段(+80386)

專用暫存器

標號 名稱
IP,EIP 指令指標
Flags EFlags

微機CPU指令系統

資料傳送指令

  1. 傳送指令 MOV
  2. 傳送-填充指令 MOVSX/MOVZX
  3. 交換指令 XCHG
  4. 進棧操作指令 PUSH,PUSHA(80286+),PUSHAD(80386+)
  5. 出棧操作指令 POP,POPA(80286+),POPAD((80386+))
  6. 轉換指令 XLAT
  7. 取有效地址指令 LEA
  8. 取段暫存器指令 LDS
  9. 位元組交換指令 BSWP

算數運算指令

加法指令

  1. 加法指令 ADD
  2. 帶進位加法指令 ADC
  3. 加一指令 INC
  4. 交換相加指令 XADD

減法指令

  1. 減法指令 SUB
  2. 帶錯位減(目的運算元-源運算元-標誌位CF) SBB
  3. 減一指令 DEC
  4. 求補指令(改變正負) NEG

乘法指令

  1. 無符號乘法指令 MUL
乘數位數 隱含被乘數 儲存暫存器
8位 AL AX MUL BL
16位 AX DX-AX MUL BX
32位 EAX EDX-EAX MUL ECX

2. 有符號數乘法指令 IMUL(80286-)同上

除法指令

  1. 無符號數除法指令 DIV
除數位數 隱含被除數 餘數 例子
8位 AX AL AH DIV BH
16位 DX-AX AX DX DIV BX
32位 EDX-EAX EAX EDX DIV ECX

2. 有符號數的除法指令IDIV

型別轉換指令

  1. 位元組->字 CBW:AL中符號數->AH
  2. 字->雙字 CWD:AX符號位->DX
  3. 字變雙字CWDE;80386+:AX符號位->EAX
  4. 雙字->四字:CDQ;80386+:EAX->EDX

邏輯運算指令

  1. 邏輯與 AND
  2. 邏輯或 OR
  3. 邏輯非 NOT
  4. 邏輯異或 XOR

移位操作指令

  1. 算數位移指令SAL(左)/SAR(右)
  2. 邏輯移位指令(補零) SHL/SHR
  3. 迴圈右移指令(帶進位) ROL/ROR

處理機制指令

指令 效果
CLC CF<-0
CMC CF<-{CF}
STC CF<- 1
CLD DF<- 0
STD DF<- 1
CLI IF<- 0
STI IF<- 1
NOP 無操作
HLT 停機
WAIT 等待
ESC 換碼
LOCK 封鎖