Posted on 2009-10-19 21:36
S.l.e!ep.¢% 閱讀(407)
評(píng)論(0) 編輯 收藏 引用 所屬分類(lèi):
Crack
第2章 基礎(chǔ)知識(shí)
第三節(jié) 8088 匯編跳轉(zhuǎn)
一、狀態(tài)寄存器
PSW(Program Flag)程序狀態(tài)字寄存器,是一個(gè)16位寄存器,由條件碼標(biāo)志(flag)和控制標(biāo)志構(gòu)成,如下所示:
15
|
14
|
13
|
12
|
11
|
10
|
9
|
8
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
|
|
|
|
OF
|
DF
|
IF
|
TF
|
SF
|
ZF
|
|
AF
|
|
PF
|
|
CF
|
條件碼:
①OF(Overflow Flag)溢出標(biāo)志。溢出時(shí)為1,否則置0。
②SF(Sign Flag)符號(hào)標(biāo)志。結(jié)果為負(fù)時(shí)置1,否則置0.
③ZF(Zero Flag)零標(biāo)志,運(yùn)算結(jié)果為0時(shí)ZF位置1,否則置0.
④CF(Carry Flag)進(jìn)位標(biāo)志,進(jìn)位時(shí)置1,否則置0.
⑤AF(Auxiliary carry Flag)輔助進(jìn)位標(biāo)志,記錄運(yùn)算時(shí)第3位(半個(gè)字節(jié))產(chǎn)生的進(jìn)位置。有進(jìn)位時(shí)1,否則置0.
⑥PF(Parity Flag)奇偶標(biāo)志。結(jié)果操作數(shù)中1的個(gè)數(shù)為偶數(shù)時(shí)置1,否則置0.
控制標(biāo)志位:
⑦DF(Direction Flag)方向標(biāo)志,在串處理指令中控制信息的方向。
⑧IF(Interrupt Flag)中斷標(biāo)志。
⑨TF(Trap Flag)陷井標(biāo)志。
二、 直接標(biāo)志轉(zhuǎn)移(8位尋址)
指令格式
|
機(jī)器碼
|
測(cè)試條件
|
如...則轉(zhuǎn)移
|
|
指令格式
|
機(jī)器碼
|
測(cè)試條件
|
如...則轉(zhuǎn)移
|
JC
|
72
|
C=1
|
有進(jìn)位
|
JNS
|
79
|
S=0
|
正號(hào)
|
JNC
|
73
|
C=0
|
無(wú)進(jìn)位
|
JO
|
70
|
O=1
|
有溢出
|
JZ/JE
|
74
|
Z=1
|
零/等于
|
JNO
|
71
|
O=0
|
無(wú)溢出
|
JNZ/JNE
|
75
|
Z=0
|
不為零/不等于
|
JP/JPE
|
7A
|
P=1
|
奇偶位為偶
|
JS
|
78
|
S=1
|
負(fù)號(hào)
|
JNP/IPO
|
7B
|
P=0
|
奇偶位為奇
|
三、間接標(biāo)志轉(zhuǎn)移(8位尋址)
指令格式
|
機(jī)器碼
|
測(cè)試格式
|
如...則轉(zhuǎn)移
|
JA/JNBE(比較無(wú)符號(hào)數(shù))
|
77
|
C或Z=0
|
> 高于/不低于或等于
|
JAE/JNB(比較無(wú)符號(hào)數(shù))
|
73
|
C=0
|
>= 高于或等于/不低于
|
JB/JNAE(比較無(wú)符號(hào)數(shù))
|
72
|
C=1
|
< 低于/不高于或等于
|
JBE/JNA(比較無(wú)符號(hào)數(shù))
|
76
|
C或Z=1
|
<= 低于或等于/不高于
|
JG/JNLE(比較帶符號(hào)數(shù))
|
7F
|
(S異或O)或Z=0
|
> 大于/不小于或等于
|
JGE/JNL(比較帶符號(hào)數(shù))
|
7D
|
S異或O=0
|
>= 大于或等于/不小于
|
JL/JNGE(比較帶符號(hào)數(shù))
|
7C
|
S異或O=1
|
< 小于/不大于或等于
|
JLE/JNG(比較帶符號(hào)數(shù))
|
7E
|
(S異或O)或Z=1
|
<= 小于或等于/不大于
|
四、無(wú)條件轉(zhuǎn)移指令
(fisheep譯 fisheep@sohu.com)
操作碼
|
偽碼指令
|
含義
|
EB cb
|
JMP rel8
|
相對(duì)短跳轉(zhuǎn)(8位),使rel8處的代碼位下一條指令
|
E9 cw
|
JMP rel16
|
相對(duì)跳轉(zhuǎn)(16位),使rel16處的代碼位下一條指令
|
FF /4
|
JMP r/m16
|
絕對(duì)跳轉(zhuǎn)(16位),下一指令地址在r/m16中給出
|
FF /4
|
JMP r/m32
|
絕對(duì)跳轉(zhuǎn)(32位),下一指令地址在r/m32中給出
|
EA cb
|
JMP ptr16:16
|
遠(yuǎn)距離絕對(duì)跳轉(zhuǎn), 下一指令地址在操作數(shù)中
|
EA cb
|
JMP ptr16:32
|
遠(yuǎn)距離絕對(duì)跳轉(zhuǎn), 下一指令地址在操作數(shù)中
|
FF /5
|
JMP m16:16
|
遠(yuǎn)距離絕對(duì)跳轉(zhuǎn), 下一指令地址在內(nèi)存m16:16中
|
FF /5
|
JMP m16:32
|
遠(yuǎn)距離絕對(duì)跳轉(zhuǎn), 下一指令地址在內(nèi)存m16:32中
|
五、16位/32位尋址方式
(fisheep譯 fisheep@sohu.com)
操作碼
|
偽碼指令
|
跳轉(zhuǎn)含義
|
跳轉(zhuǎn)類(lèi)型
|
跳轉(zhuǎn)的條件(標(biāo)志位)
|
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
|
進(jìn)位
|
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
|
JNAE rel16/32
|
不大于等于
|
near
|
(CF=1)
|
0F 83 cw/cd
|
JNB rel16/32
|
不小于
|
near
|
(CF=0)
|
0F 87 cw/cd
|
JNBE rel16/32
|
不小于等于
|
near
|
(CF=0 and ZF=0)
|
0F 83 cw/cd
|
JNC rel16/32
|
不進(jìn)位
|
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
|
JNGE rel16/32
|
不大于等于
|
near
|
(SF<>OF)
|
0F 8D cw/cd
|
JNL rel16/32
|
不小于
|
near
|
(SF=OF)
|
0F 8F cw/cd
|
JNLE rel16/32
|
不小于等于
|
near
|
(ZF=0 and SF=OF)
|
0F 81 cw/cd
|
JNO rel16/32
|
未溢出
|
near
|
(OF=0)
|
0F 8B cw/cd
|
JNP rel16/32
|
不是偶數(shù)
|
near
|
(PF=0)
|
0F 89 cw/cd
|
JNS rel16/32
|
非負(fù)數(shù)
|
near
|
(SF=0)
|
0F 85 cw/cd
|
JNZ rel16/32
|
非零(不等于)
|
near
|
(ZF=0)
|
0F 80 cw/cd
|
JO rel16/32
|
溢出
|
near
|
(OF=1)
|
0F 8A cw/cd
|
JP rel16/32
|
偶數(shù)
|
near
|
(PF=1)
|
0F 8A cw/cd
|
JPE rel16/32
|
偶數(shù)
|
near
|
(PF=1)
|
0F 8B cw/cd
|
JPO rel16/32
|
奇數(shù)
|
near
|
(PF=0)
|
0F 88 cw/cd
|
JS rel16/32
|
負(fù)數(shù)
|
near
|
(SF=1)
|
0F 84 cw/cd
|
JZ rel16/32
|
為零(等于)
|
near
|
(ZF=1)
|
注:
一些指令操作數(shù)的含義說(shuō)明:
rel8? ? ? 表示 8 位相對(duì)地址
rel16? ? 表示 16 位相對(duì)地址
rel16/32? 表示 16或32 位相對(duì)地址
r/m16? ? 表示16位寄存器
r/m32? ? 表示32位寄存器