8088汇编跳转和PSW状态字寄存器
2024-07-04 05:22:03 222人阅读
DDD
8088 汇编跳转 |
日期:2003年6月12日 出处:嬴政天下整理收藏 作者:看雪 人气: 8735 |
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 | 有进位 | JNS | 79 | S=0 | 正号 | JNC | 73 | C=0 | 无进位 | JO | 70 | O=1 | 有溢出 | JZ/JE | 74 | Z=1 | 零/等于 | JNO | 71 | O=0 | 无溢出 | JNZ/JNE | 75 | Z=0 | 不为零/不等于 | JP/JPE | 7A | P=1 | 奇偶位为偶 | JS | 78 | S=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位寄存器 |
dxxx
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉:
投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。