1. 程式人生 > >彙編指令與機器碼

彙編指令與機器碼



一、狀態暫存器

PSW
Program Flag)程式狀態字暫存器,是一個16位暫存器,由條件碼標誌(flag)和控制標誌構成,如下所示:

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
OF DFIF TF SF ZF AF PF CF


條件碼:OFOverflowFlag)溢位標誌。溢位時為1,否則置0SFSignFlag)符號標誌。結果為負時置1,否則置0.
ZFZeroFlag)零標誌,運算結果為0ZF位置1,否則置0.
CFCarryFlag)進位標誌,進位時置1,否則置0.
AFAuxiliarycarry Flag)輔助進位標誌,記錄運算時第

3位(半個位元組)產生的進位置。有進位時1,否則置0.
PFParityFlag)奇偶標誌。結果運算元中1的個數為偶數時置1,否則置0.

控制標誌位:DFDirectionFlag)方向標誌,在串處理指令中控制資訊的方向。IFInterruptFlag)中斷標誌。TFTrapFlag)陷井標誌。二、直接標誌轉移(8位定址)指令格式機器碼測試條件...則轉移
JC 72 C=1
有進位

JNC73C=0 無進位

JZ/JE74 Z=1/等於

JNZ/JNE 75 Z=0 不為零/不等於

JS78 S=1 負號

JNS79 S=0 正號

JO70O=1 有溢位
JNO71 O=0
無溢位
JP/JPE 7AP=1

奇偶位為偶
JNP/IPO 7B P=0
奇偶位為奇三、間接標誌轉移(8位定址)指令格式機器碼測試格式...則轉移
JA/JNBE(
比較無符號數) 77 CZ=0 >  高於/不低於或等於
JAE/JNB(
比較無符號數) 73 C=0 >=高於或等於/不低於
JB/JNAE(
比較無符號數) 72 C=1 <  低於/不高於或等於
JBE/JNA(
比較無符號數) 76 CZ=1 <=低於或等於/不高於
JG/JNLE(
比較帶符號數) 7F (S異或O)或Z=0 > 大於/不小於或等於
JGE/JNL(
比較帶符號數) 7D S異或O=0 >=大於或等於/不小於
JL/JNGE(
比較帶符號數) 7C S異或O=1 <  小於/不大於或等於
JLE/JNG(
比較帶符號數) 7E (S異或O)Z=1 <=小於或等於/不大於四、無條件轉移指令

操作碼偽碼指令含義
EB
cb JMP rel8 相對短跳轉(8位),使rel8處的程式碼位下一條指令
E9
cw JMPrel16 相對跳轉(16位),使rel16處的程式碼位下一條指令FF/4 JMP r/m16 絕對跳轉(16位),下一指令地址在r/m16中給出
FF
/4 JMP r/m32 絕對跳轉(32位),下一指令地址在r/m32中給出
EA
cb JMP ptr16:16 遠距離絕對跳轉,下一指令地址在運算元中
EA
cb JMP ptr16:32 遠距離絕對跳轉,下一指令地址在運算元中
FF
/5 JMP m16:16 遠距離絕對跳轉,下一指令地址在記憶體m16:16
FF
/5 JMP m16:32 遠距離絕對跳轉,下一指令地址在記憶體m16:32五、16/32位定址方式操作碼偽碼指令跳轉含義跳轉型別跳轉的條件(標誌位)
0F 87
cw/cd JA rel16/32 大於 near (CF=0 and ZF=0)
0F 83
cw/cd JAE rel16/32 大於等於 near (CF=0)
0F 82
cw/cd JB rel16/32 小於 near (CF=1)
0F 86
cw/cd JBE rel16/32 小於等於 near (CF=1 or ZF=1)
0F 82
cw/cd JC rel16/32 進位 near (CF=1)
0F 84
cw/cd JE rel16/32 等於 near (ZF=1)
0F 84
cw/cd JZ rel16/32 0 near (ZF=1)
0F 8F
cw/cd JG rel16/32 大於 near (ZF=0 and SF=OF)
0F 8D
cw/cd JGE rel16/32大於等於 near (SF=OF)
0F 8C
cw/cd JL rel16/32 小於 near (SF<>OF)
0F 8E
cw/cd JLE rel16/32 小於等於 near (ZF=1 or SF<>OF)
0F 86
cw/cd JNA rel16/32不大於 near (CF=1 or ZF=1)
0F 82
cw/cd JNAErel16/32 不大於等於 near (CF=1)
0F 83
cw/cd JNB rel16/32不小於 near (CF=0)
0F 87
cw/cd JNBErel16/32 不小於等於 near (CF=0 andZF=0)
0F 83
cw/cd JNC rel16/32不進位 near (CF=0)
0F 85
cw/cd JNE rel16/32不等於 near (ZF=0)
0F 8E
cw/cd JNG rel16/32不大於 near (ZF=1 or SF<>OF)
0F 8C
cw/cd JNGErel16/32 不大於等於 near(SF<>OF)
0F 8D
cw/cd JNL rel16/32不小於 near (SF=OF)
0F 8F
cw/cd JNLErel16/32 不小於等於 near (ZF=0 and SF=OF)
0F 81
cw/cd JNO rel16/32未溢位 near (OF=0)
0F 8B
cw/cd JNP rel16/32 不是偶數 near (PF=0)
0F 89
cw/cd JNS rel16/32非負數 near (SF=0)
0F 85
cw/cd JNZ rel16/32 非零(不等於) near (ZF=0)
0F80 cw/cd JO rel16/32 溢位 near (OF=1)
0F 8A
cw/cd JP rel16/32 偶數 near (PF=1)
0F 8A
cw/cd JPE rel16/32 偶數 near (PF=1)
0F 8B
cw/cd JPO rel16/32 奇數 near (PF=0)
0F 88
cw/cd JS rel16/32 負數 near (SF=1)
0F 84
cw/cd JZ rel16/32 為零(等於) near (ZF=1)
注:一些指令運算元的含義說明: rel8 表示 8 位相對地址 rel16 表示 16 位相對地址 rel16/32 表示 1632 位相對地址 r/m16 表示16位暫存器 r/m32 表示32位暫存器