彙編指令與機器碼
一、狀態暫存器
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
條件碼:①OF(OverflowFlag)溢位標誌。溢位時為1,否則置0。②SF(SignFlag)符號標誌。結果為負時置1,否則置0.
③ZF(ZeroFlag)零標誌,運算結果為0時ZF位置1,否則置0.
④CF(CarryFlag)進位標誌,進位時置1,否則置0.
⑤AF(Auxiliarycarry
Flag)輔助進位標誌,記錄運算時第
⑥PF(ParityFlag)奇偶標誌。結果運算元中1的個數為偶數時置1,否則置0.
控制標誌位:⑦DF(DirectionFlag)方向標誌,在串處理指令中控制資訊的方向。⑧IF(InterruptFlag)中斷標誌。⑨TF(TrapFlag)陷井標誌。二、直接標誌轉移(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 C或Z=0 > 高於/不低於或等於
JAE/JNB(比較無符號數) 73 C=0 >=高於或等於/不低於
JB/JNAE(比較無符號數) 72 C=1 < 低於/不高於或等於
JBE/JNA(比較無符號數) 76 C或Z=1 <=低於或等於/不高於
JG/JNLE(比較帶符號數) 7F (S異或O)或Z=0 > 大於/不小於或等於
JGE/JNL(比較帶符號數) 7D S異或O=0 >=大於或等於/不小於
JL/JNGE(
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
表示 16或32
位相對地址 r/m16
表示16位暫存器 r/m32
表示32位暫存器