找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
.COM/.NET/.ORG 国际域名注册全功能虚拟主机/免备案虚拟主机
查看: 1354|回复: 2

解密教学 3

[复制链接]

41

主题

110

回帖

3981

积分

论坛元老

积分
3981
发表于 2003-10-19 18:16:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
第三节 8088 汇编跳转



一、状态寄存器



PSW(Program Flag)程序状态字寄存器,是一个16位寄存器,由条件码标志(flag)和控制标志构成,如下所示:



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)溢出标志。溢出时为1,否则置0。

②SF(Sign Flag)符号标志。结果为负时置1,否则置0.

③ZF(Zero Flag)零标志,运算结果为0时ZF位置1,否则置0.

④CF(Carry Flag)进位标志,进位时置1,否则置0.

⑤AF(Auxiliary carry Flag)辅助进位标志,记录运算时第3位(半个字节)产生的进位置。有进位时1,否则置0.

⑥PF(Parity Flag)奇偶标志。结果操作数中1的个数为偶数时置1,否则置0.



控制标志位:

⑦DF(Direction Flag)方向标志,在串处理指令中控制信息的方向。

⑧IF(Interrupt Flag)中断标志。

⑨TF(Trap Flag)陷井标志。



二、 直接标志转移(8位寻址)





  指令格式 机器码 测试条件 如...则转移

JC       72   C=1  有进位  

JNC      73   C=0  无进位  

JZ/JE     74   Z=1  零/等于  

JNZ/JNE    75   Z=0  不为零/不等于  

JS       78   S=1  负号  

JNS      79   S=0  正号

JO       70   O=1  有溢出

JNO      71   O=0  无溢出

JP/JPE     7A   P=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(比较带符号数)  7C   S异或O=1 <     小于/不大于或等于

JLE/JNG(比较带符号数)  7E  (S异或O)或Z=1 <=   小于或等于/不大于



四、无条件转移指令(fisheep译 fisheep@sohu.com)



操作码   伪码指令     含义

EB cb   JMP rel8       相对短跳转(8位),使rel8处的代码位下一条指令

E9 cw   JMP rel16      相对跳转(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位寻址方式(fisheep译 fisheep@sohu.com)





操作码       伪码指令     跳转含义   跳转类型  跳转的条件(标志位)

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      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    不进位    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    不是偶数    near      ( PF=0)

0F 89  cw/cd      JNS rel16/32     非负数    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     偶数     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位寄存器
回复

使用道具 举报

281

主题

3228

回帖

55万

积分

管理员

积分
551869
发表于 2003-10-19 23:36:31 | 显示全部楼层
[emb6]
网路游侠 www.youxia.org
回复 支持 反对

使用道具 举报

30

主题

176

回帖

4459

积分

论坛元老

积分
4459
发表于 2003-10-21 07:34:33 | 显示全部楼层
好难呀,看不懂
男孩,不輕易哭泣,只有面對最愛的人時才會變得脆弱。 男孩,不輕易哭泣,只有在太愛你的時候才會,放下自尊。 女孩,如果有個男孩為你哭,請拉住他的手,他真的可以陪你走完一生。 女孩,如果有請不要放棄他,也許一個選擇會毀掉一個人。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|西京校友网 ( 陕ICP备11003551号-5 )

GMT+8, 2025-5-7 23:30 , Processed in 0.017101 second(s), 8 queries , MemCache On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表